diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index aad28a2d8..b4bd59b43 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,4 @@ -image: elixir:1.8.1 +image: elixir:1.9.4 variables: &global_variables POSTGRES_DB: pleroma_test @@ -170,8 +170,7 @@ stop_review_app: amd64: stage: release - # TODO: Replace with upstream image when 1.9.0 comes out - image: rinpatch/elixir:1.9.0-rc.0 + image: elixir:1.10.3 only: &release-only - stable@pleroma/pleroma - develop@pleroma/pleroma @@ -208,8 +207,7 @@ amd64-musl: stage: release artifacts: *release-artifacts only: *release-only - # TODO: Replace with upstream image when 1.9.0 comes out - image: rinpatch/elixir:1.9.0-rc.0-alpine + image: elixir:1.10.3-alpine cache: *release-cache variables: *release-variables before_script: &before-release-musl @@ -225,8 +223,7 @@ arm: only: *release-only tags: - arm32 - # TODO: Replace with upstream image when 1.9.0 comes out - image: rinpatch/elixir:1.9.0-rc.0-arm + image: elixir:1.10.3 cache: *release-cache variables: *release-variables before_script: *before-release @@ -238,8 +235,7 @@ arm-musl: only: *release-only tags: - arm32 - # TODO: Replace with upstream image when 1.9.0 comes out - image: rinpatch/elixir:1.9.0-rc.0-arm-alpine + image: elixir:1.10.3-alpine cache: *release-cache variables: *release-variables before_script: *before-release-musl @@ -251,8 +247,7 @@ arm64: only: *release-only tags: - arm - # TODO: Replace with upstream image when 1.9.0 comes out - image: rinpatch/elixir:1.9.0-rc.0-arm64 + image: elixir:1.10.3 cache: *release-cache variables: *release-variables before_script: *before-release @@ -265,7 +260,7 @@ arm64-musl: tags: - arm # TODO: Replace with upstream image when 1.9.0 comes out - image: rinpatch/elixir:1.9.0-rc.0-arm64-alpine + image: elixir:1.10.3-alpine cache: *release-cache variables: *release-variables before_script: *before-release-musl diff --git a/.gitlab/issue_templates/Bug.md b/.gitlab/issue_templates/Bug.md index 66fbc510e..9ce9b6918 100644 --- a/.gitlab/issue_templates/Bug.md +++ b/.gitlab/issue_templates/Bug.md @@ -14,7 +14,7 @@ * Pleroma version (could be found in the "Version" tab of settings in Pleroma-FE): * Elixir version (`elixir -v` for from source installations, N/A for OTP): * Operating system: -* PostgreSQL version (`postgres -V`): +* PostgreSQL version (`psql -V`): ### Bug description diff --git a/CHANGELOG.md b/CHANGELOG.md index 839bf90ab..5b6928dcd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,15 +6,33 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## [unreleased] ### Changed +- **Breaking:** Elixir >=1.9 is now required (was >= 1.8) +- In Conversations, return only direct messages as `last_status` +- Using the `only_media` filter on timelines will now exclude reblog media +- MFR policy to set global expiration for all local Create activities +- OGP rich media parser merged with TwitterCard +- Configuration: `:instance, rewrite_policy` moved to `:mrf, policies`, `:instance, :mrf_transparency` moved to `:mrf, :transparency`, `:instance, :mrf_transparency_exclusions` moved to `:mrf, :transparency_exclusions`. Old config namespace is deprecated. +
API Changes + - **Breaking:** Emoji API: changed methods and renamed routes.
+
+ Admin API Changes + +- Status visibility stats: now can return stats per instance. + +- Mix task to refresh counter cache (`mix pleroma.refresh_counter_cache`) +
+ ### Removed - **Breaking:** removed `with_move` parameter from notifications timeline. ### Added + +- Chats: Added support for federated chats. For details, see the docs. - ActivityPub: Added support for existing AP ids for instances migrated from Mastodon. - Instance: Add `background_image` to configuration and `/api/v1/instance` - Instance: Extend `/api/v1/instance` with Pleroma-specific information. @@ -25,17 +43,23 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Configuration: `filename_display_max_length` option to set filename truncate limit, if filename display enabled (0 = no limit). - New HTTP adapter [gun](https://github.com/ninenines/gun). Gun adapter requires minimum OTP version of 22.2 otherwise Pleroma won’t start. For hackney OTP update is not required. - Mix task to create trusted OAuth App. +- Mix task to reset MFA for user accounts - Notifications: Added `follow_request` notification type. - Added `:reject_deletes` group to SimplePolicy - MRF (`EmojiStealPolicy`): New MRF Policy which allows to automatically download emojis from remote instances +- Support pagination in emoji packs API (for packs and for files in pack) +
API Changes +- Mastodon API: Add pleroma.parents_visible field to statuses. - Mastodon API: Extended `/api/v1/instance`. - Mastodon API: Support for `include_types` in `/api/v1/notifications`. - Mastodon API: Added `/api/v1/notifications/:id/dismiss` endpoint. - Mastodon API: Add support for filtering replies in public and home timelines +- Mastodon API: Support for `bot` field in `/api/v1/accounts/update_credentials` - Admin API: endpoints for create/update/delete OAuth Apps. - Admin API: endpoint for status view. +- OTP: Add command to reload emoji packs
### Fixed @@ -45,6 +69,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Filtering of push notifications on activities from blocked domains - Resolving Peertube accounts with Webfinger - `blob:` urls not being allowed by connect-src CSP +- Mastodon API: fix `GET /api/v1/notifications` not returning the full result set ## [Unreleased (patch)] @@ -83,6 +108,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). 2. Run database migrations (inside Pleroma directory): - OTP: `./bin/pleroma_ctl migrate` - From Source: `mix ecto.migrate` +3. Reset status visibility counters (inside Pleroma directory): + - OTP: `./bin/pleroma_ctl refresh_counter_cache` + - From Source: `mix pleroma.refresh_counter_cache` ## [2.0.2] - 2020-04-08 diff --git a/README.md b/README.md index 7fc1fd381..6ca3118fb 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,16 @@ Currently Pleroma is not packaged by any OS/Distros, but if you want to package ### Docker While we don’t provide docker files, other people have written very good ones. Take a look at or . +### Compilation Troubleshooting +If you ever encounter compilation issues during the updating of Pleroma, you can try these commands and see if they fix things: + +- `mix deps.clean --all` +- `mix local.rebar` +- `mix local.hex` +- `rm -r _build` + +If you are not developing Pleroma, it is better to use the OTP release, which comes with everything precompiled. + ## Documentation - Latest Released revision: - Latest Git revision: diff --git a/benchmarks/load_testing/activities.ex b/benchmarks/load_testing/activities.ex index ff0d481a8..074ded457 100644 --- a/benchmarks/load_testing/activities.ex +++ b/benchmarks/load_testing/activities.ex @@ -22,8 +22,21 @@ defmodule Pleroma.LoadTesting.Activities do @max_concurrency 10 @visibility ~w(public private direct unlisted) - @types ~w(simple emoji mentions hell_thread attachment tag like reblog simple_thread remote) - @groups ~w(user friends non_friends) + @types [ + :simple, + :emoji, + :mentions, + :hell_thread, + :attachment, + :tag, + :like, + :reblog, + :simple_thread + ] + @groups [:friends_local, :friends_remote, :non_friends_local, :non_friends_local] + @remote_groups [:friends_remote, :non_friends_remote] + @friends_groups [:friends_local, :friends_remote] + @non_friends_groups [:non_friends_local, :non_friends_remote] @spec generate(User.t(), keyword()) :: :ok def generate(user, opts \\ []) do @@ -34,33 +47,24 @@ def generate(user, opts \\ []) do opts = Keyword.merge(@defaults, opts) - friends = - user - |> Users.get_users(limit: opts[:friends_used], local: :local, friends?: true) - |> Enum.shuffle() + users = Users.prepare_users(user, opts) - non_friends = - user - |> Users.get_users(limit: opts[:non_friends_used], local: :local, friends?: false) - |> Enum.shuffle() + {:ok, _} = Agent.start_link(fn -> users[:non_friends_remote] end, name: :non_friends_remote) task_data = for visibility <- @visibility, type <- @types, - group <- @groups, + group <- [:user | @groups], do: {visibility, type, group} IO.puts("Starting generating #{opts[:iterations]} iterations of activities...") - friends_thread = Enum.take(friends, 5) - non_friends_thread = Enum.take(friends, 5) - public_long_thread = fn -> - generate_long_thread("public", user, friends_thread, non_friends_thread, opts) + generate_long_thread("public", users, opts) end private_long_thread = fn -> - generate_long_thread("private", user, friends_thread, non_friends_thread, opts) + generate_long_thread("private", users, opts) end iterations = opts[:iterations] @@ -73,10 +77,10 @@ def generate(user, opts \\ []) do i when i == iterations - 2 -> spawn(public_long_thread) spawn(private_long_thread) - generate_activities(user, friends, non_friends, Enum.shuffle(task_data), opts) + generate_activities(users, Enum.shuffle(task_data), opts) _ -> - generate_activities(user, friends, non_friends, Enum.shuffle(task_data), opts) + generate_activities(users, Enum.shuffle(task_data), opts) end ) end) @@ -127,16 +131,16 @@ def generate_tagged_activities(opts \\ []) do end) end - defp generate_long_thread(visibility, user, friends, non_friends, _opts) do + defp generate_long_thread(visibility, users, _opts) do group = if visibility == "public", - do: "friends", - else: "user" + do: :friends_local, + else: :user tasks = get_reply_tasks(visibility, group) |> Stream.cycle() |> Enum.take(50) {:ok, activity} = - CommonAPI.post(user, %{ + CommonAPI.post(users[:user], %{ status: "Start of #{visibility} long thread", visibility: visibility }) @@ -150,31 +154,28 @@ defp generate_long_thread(visibility, user, friends, non_friends, _opts) do Map.put(state, key, activity) end) - acc = {activity.id, ["@" <> user.nickname, "reply to long thread"]} - insert_replies_for_long_thread(tasks, visibility, user, friends, non_friends, acc) + acc = {activity.id, ["@" <> users[:user].nickname, "reply to long thread"]} + insert_replies_for_long_thread(tasks, visibility, users, acc) IO.puts("Generating #{visibility} long thread ended\n") end - defp insert_replies_for_long_thread(tasks, visibility, user, friends, non_friends, acc) do + defp insert_replies_for_long_thread(tasks, visibility, users, acc) do Enum.reduce(tasks, acc, fn - "friend", {id, data} -> - friend = Enum.random(friends) - insert_reply(friend, List.delete(data, "@" <> friend.nickname), id, visibility) - - "non_friend", {id, data} -> - non_friend = Enum.random(non_friends) - insert_reply(non_friend, List.delete(data, "@" <> non_friend.nickname), id, visibility) - - "user", {id, data} -> + :user, {id, data} -> + user = users[:user] insert_reply(user, List.delete(data, "@" <> user.nickname), id, visibility) + + group, {id, data} -> + replier = Enum.random(users[group]) + insert_reply(replier, List.delete(data, "@" <> replier.nickname), id, visibility) end) end - defp generate_activities(user, friends, non_friends, task_data, opts) do + defp generate_activities(users, task_data, opts) do Task.async_stream( task_data, fn {visibility, type, group} -> - insert_activity(type, visibility, group, user, friends, non_friends, opts) + insert_activity(type, visibility, group, users, opts) end, max_concurrency: @max_concurrency, timeout: 30_000 @@ -182,67 +183,104 @@ defp generate_activities(user, friends, non_friends, task_data, opts) do |> Stream.run() end - defp insert_activity("simple", visibility, group, user, friends, non_friends, _opts) do - {:ok, _activity} = + defp insert_local_activity(visibility, group, users, status) do + {:ok, _} = group - |> get_actor(user, friends, non_friends) - |> CommonAPI.post(%{status: "Simple status", visibility: visibility}) + |> get_actor(users) + |> CommonAPI.post(%{status: status, visibility: visibility}) end - defp insert_activity("emoji", visibility, group, user, friends, non_friends, _opts) do - {:ok, _activity} = - group - |> get_actor(user, friends, non_friends) - |> CommonAPI.post(%{ - status: "Simple status with emoji :firefox:", - visibility: visibility - }) + defp insert_remote_activity(visibility, group, users, status) do + actor = get_actor(group, users) + {act_data, obj_data} = prepare_activity_data(actor, visibility, users[:user]) + {activity_data, object_data} = other_data(actor, status) + + activity_data + |> Map.merge(act_data) + |> Map.put("object", Map.merge(object_data, obj_data)) + |> Pleroma.Web.ActivityPub.ActivityPub.insert(false) end - defp insert_activity("mentions", visibility, group, user, friends, non_friends, _opts) do + defp user_mentions(users) do user_mentions = - get_random_mentions(friends, Enum.random(0..3)) ++ - get_random_mentions(non_friends, Enum.random(0..3)) + Enum.reduce( + @groups, + [], + fn group, acc -> + acc ++ get_random_mentions(users[group], Enum.random(0..2)) + end + ) - user_mentions = - if Enum.random([true, false]), - do: ["@" <> user.nickname | user_mentions], - else: user_mentions - - {:ok, _activity} = - group - |> get_actor(user, friends, non_friends) - |> CommonAPI.post(%{ - status: Enum.join(user_mentions, ", ") <> " simple status with mentions", - visibility: visibility - }) + if Enum.random([true, false]), + do: ["@" <> users[:user].nickname | user_mentions], + else: user_mentions end - defp insert_activity("hell_thread", visibility, group, user, friends, non_friends, _opts) do - mentions = - with {:ok, nil} <- Cachex.get(:user_cache, "hell_thread_mentions") do - cached = - ([user | Enum.take(friends, 10)] ++ Enum.take(non_friends, 10)) - |> Enum.map(&"@#{&1.nickname}") - |> Enum.join(", ") + defp hell_thread_mentions(users) do + with {:ok, nil} <- Cachex.get(:user_cache, "hell_thread_mentions") do + cached = + @groups + |> Enum.reduce([users[:user]], fn group, acc -> + acc ++ Enum.take(users[group], 5) + end) + |> Enum.map(&"@#{&1.nickname}") + |> Enum.join(", ") - Cachex.put(:user_cache, "hell_thread_mentions", cached) - cached - else - {:ok, cached} -> cached - end - - {:ok, _activity} = - group - |> get_actor(user, friends, non_friends) - |> CommonAPI.post(%{ - status: mentions <> " hell thread status", - visibility: visibility - }) + Cachex.put(:user_cache, "hell_thread_mentions", cached) + cached + else + {:ok, cached} -> cached + end end - defp insert_activity("attachment", visibility, group, user, friends, non_friends, _opts) do - actor = get_actor(group, user, friends, non_friends) + defp insert_activity(:simple, visibility, group, users, _opts) + when group in @remote_groups do + insert_remote_activity(visibility, group, users, "Remote status") + end + + defp insert_activity(:simple, visibility, group, users, _opts) do + insert_local_activity(visibility, group, users, "Simple status") + end + + defp insert_activity(:emoji, visibility, group, users, _opts) + when group in @remote_groups do + insert_remote_activity(visibility, group, users, "Remote status with emoji :firefox:") + end + + defp insert_activity(:emoji, visibility, group, users, _opts) do + insert_local_activity(visibility, group, users, "Simple status with emoji :firefox:") + end + + defp insert_activity(:mentions, visibility, group, users, _opts) + when group in @remote_groups do + mentions = user_mentions(users) + + status = Enum.join(mentions, ", ") <> " remote status with mentions" + + insert_remote_activity(visibility, group, users, status) + end + + defp insert_activity(:mentions, visibility, group, users, _opts) do + mentions = user_mentions(users) + + status = Enum.join(mentions, ", ") <> " simple status with mentions" + insert_remote_activity(visibility, group, users, status) + end + + defp insert_activity(:hell_thread, visibility, group, users, _) + when group in @remote_groups do + mentions = hell_thread_mentions(users) + insert_remote_activity(visibility, group, users, mentions <> " remote hell thread status") + end + + defp insert_activity(:hell_thread, visibility, group, users, _opts) do + mentions = hell_thread_mentions(users) + + insert_local_activity(visibility, group, users, mentions <> " hell thread status") + end + + defp insert_activity(:attachment, visibility, group, users, _opts) do + actor = get_actor(group, users) obj_data = %{ "actor" => actor.ap_id, @@ -268,67 +306,54 @@ defp insert_activity("attachment", visibility, group, user, friends, non_friends }) end - defp insert_activity("tag", visibility, group, user, friends, non_friends, _opts) do - {:ok, _activity} = - group - |> get_actor(user, friends, non_friends) - |> CommonAPI.post(%{status: "Status with #tag", visibility: visibility}) + defp insert_activity(:tag, visibility, group, users, _opts) do + insert_local_activity(visibility, group, users, "Status with #tag") end - defp insert_activity("like", visibility, group, user, friends, non_friends, opts) do - actor = get_actor(group, user, friends, non_friends) + defp insert_activity(:like, visibility, group, users, opts) do + actor = get_actor(group, users) with activity_id when not is_nil(activity_id) <- get_random_create_activity_id(), {:ok, _activity} <- CommonAPI.favorite(actor, activity_id) do :ok else {:error, _} -> - insert_activity("like", visibility, group, user, friends, non_friends, opts) + insert_activity(:like, visibility, group, users, opts) nil -> Process.sleep(15) - insert_activity("like", visibility, group, user, friends, non_friends, opts) + insert_activity(:like, visibility, group, users, opts) end end - defp insert_activity("reblog", visibility, group, user, friends, non_friends, opts) do - actor = get_actor(group, user, friends, non_friends) + defp insert_activity(:reblog, visibility, group, users, opts) do + actor = get_actor(group, users) with activity_id when not is_nil(activity_id) <- get_random_create_activity_id(), - {:ok, _activity, _object} <- CommonAPI.repeat(activity_id, actor) do + {:ok, _activity} <- CommonAPI.repeat(activity_id, actor) do :ok else {:error, _} -> - insert_activity("reblog", visibility, group, user, friends, non_friends, opts) + insert_activity(:reblog, visibility, group, users, opts) nil -> Process.sleep(15) - insert_activity("reblog", visibility, group, user, friends, non_friends, opts) + insert_activity(:reblog, visibility, group, users, opts) end end - defp insert_activity("simple_thread", visibility, group, user, friends, non_friends, _opts) - when visibility in ["public", "unlisted", "private"] do - actor = get_actor(group, user, friends, non_friends) - tasks = get_reply_tasks(visibility, group) - - {:ok, activity} = CommonAPI.post(user, %{status: "Simple status", visibility: visibility}) - - acc = {activity.id, ["@" <> actor.nickname, "reply to status"]} - insert_replies(tasks, visibility, user, friends, non_friends, acc) - end - - defp insert_activity("simple_thread", "direct", group, user, friends, non_friends, _opts) do - actor = get_actor(group, user, friends, non_friends) + defp insert_activity(:simple_thread, "direct", group, users, _opts) do + actor = get_actor(group, users) tasks = get_reply_tasks("direct", group) list = case group do - "non_friends" -> - Enum.take(non_friends, 3) + :user -> + group = Enum.random(@friends_groups) + Enum.take(users[group], 3) _ -> - Enum.take(friends, 3) + Enum.take(users[group], 3) end data = Enum.map(list, &("@" <> &1.nickname)) @@ -339,40 +364,30 @@ defp insert_activity("simple_thread", "direct", group, user, friends, non_friend visibility: "direct" }) - acc = {activity.id, ["@" <> user.nickname | data] ++ ["reply to status"]} - insert_direct_replies(tasks, user, list, acc) + acc = {activity.id, ["@" <> users[:user].nickname | data] ++ ["reply to status"]} + insert_direct_replies(tasks, users[:user], list, acc) end - defp insert_activity("remote", _, "user", _, _, _, _), do: :ok + defp insert_activity(:simple_thread, visibility, group, users, _opts) do + actor = get_actor(group, users) + tasks = get_reply_tasks(visibility, group) - defp insert_activity("remote", visibility, group, user, _friends, _non_friends, opts) do - remote_friends = - Users.get_users(user, limit: opts[:friends_used], local: :external, friends?: true) + {:ok, activity} = + CommonAPI.post(users[:user], %{status: "Simple status", visibility: visibility}) - remote_non_friends = - Users.get_users(user, limit: opts[:non_friends_used], local: :external, friends?: false) - - actor = get_actor(group, user, remote_friends, remote_non_friends) - - {act_data, obj_data} = prepare_activity_data(actor, visibility, user) - {activity_data, object_data} = other_data(actor) - - activity_data - |> Map.merge(act_data) - |> Map.put("object", Map.merge(object_data, obj_data)) - |> Pleroma.Web.ActivityPub.ActivityPub.insert(false) + acc = {activity.id, ["@" <> actor.nickname, "reply to status"]} + insert_replies(tasks, visibility, users, acc) end - defp get_actor("user", user, _friends, _non_friends), do: user - defp get_actor("friends", _user, friends, _non_friends), do: Enum.random(friends) - defp get_actor("non_friends", _user, _friends, non_friends), do: Enum.random(non_friends) + defp get_actor(:user, %{user: user}), do: user + defp get_actor(group, users), do: Enum.random(users[group]) - defp other_data(actor) do + defp other_data(actor, content) do %{host: host} = URI.parse(actor.ap_id) datetime = DateTime.utc_now() - context_id = "http://#{host}:4000/contexts/#{UUID.generate()}" - activity_id = "http://#{host}:4000/activities/#{UUID.generate()}" - object_id = "http://#{host}:4000/objects/#{UUID.generate()}" + context_id = "https://#{host}/contexts/#{UUID.generate()}" + activity_id = "https://#{host}/activities/#{UUID.generate()}" + object_id = "https://#{host}/objects/#{UUID.generate()}" activity_data = %{ "actor" => actor.ap_id, @@ -389,7 +404,7 @@ defp other_data(actor) do "attributedTo" => actor.ap_id, "bcc" => [], "bto" => [], - "content" => "Remote post", + "content" => content, "context" => context_id, "conversation" => context_id, "emoji" => %{}, @@ -475,51 +490,65 @@ defp prepare_activity_data(_actor, "direct", mention) do {act_data, obj_data} end - defp get_reply_tasks("public", "user"), do: ~w(friend non_friend user) - defp get_reply_tasks("public", "friends"), do: ~w(non_friend user friend) - defp get_reply_tasks("public", "non_friends"), do: ~w(user friend non_friend) + defp get_reply_tasks("public", :user) do + [:friends_local, :friends_remote, :non_friends_local, :non_friends_remote, :user] + end - defp get_reply_tasks(visibility, "user") when visibility in ["unlisted", "private"], - do: ~w(friend user friend) + defp get_reply_tasks("public", group) when group in @friends_groups do + [:non_friends_local, :non_friends_remote, :user, :friends_local, :friends_remote] + end - defp get_reply_tasks(visibility, "friends") when visibility in ["unlisted", "private"], - do: ~w(user friend user) + defp get_reply_tasks("public", group) when group in @non_friends_groups do + [:user, :friends_local, :friends_remote, :non_friends_local, :non_friends_remote] + end - defp get_reply_tasks(visibility, "non_friends") when visibility in ["unlisted", "private"], - do: [] + defp get_reply_tasks(visibility, :user) when visibility in ["unlisted", "private"] do + [:friends_local, :friends_remote, :user, :friends_local, :friends_remote] + end - defp get_reply_tasks("direct", "user"), do: ~w(friend user friend) - defp get_reply_tasks("direct", "friends"), do: ~w(user friend user) - defp get_reply_tasks("direct", "non_friends"), do: ~w(user non_friend user) + defp get_reply_tasks(visibility, group) + when visibility in ["unlisted", "private"] and group in @friends_groups do + [:user, :friends_remote, :friends_local, :user] + end - defp insert_replies(tasks, visibility, user, friends, non_friends, acc) do + defp get_reply_tasks(visibility, group) + when visibility in ["unlisted", "private"] and + group in @non_friends_groups, + do: [] + + defp get_reply_tasks("direct", :user), do: [:friends_local, :user, :friends_remote] + + defp get_reply_tasks("direct", group) when group in @friends_groups, + do: [:user, group, :user] + + defp get_reply_tasks("direct", group) when group in @non_friends_groups do + [:user, :non_friends_remote, :user, :non_friends_local] + end + + defp insert_replies(tasks, visibility, users, acc) do Enum.reduce(tasks, acc, fn - "friend", {id, data} -> - friend = Enum.random(friends) - insert_reply(friend, data, id, visibility) + :user, {id, data} -> + insert_reply(users[:user], data, id, visibility) - "non_friend", {id, data} -> - non_friend = Enum.random(non_friends) - insert_reply(non_friend, data, id, visibility) - - "user", {id, data} -> - insert_reply(user, data, id, visibility) + group, {id, data} -> + replier = Enum.random(users[group]) + insert_reply(replier, data, id, visibility) end) end defp insert_direct_replies(tasks, user, list, acc) do Enum.reduce(tasks, acc, fn - group, {id, data} when group in ["friend", "non_friend"] -> + :user, {id, data} -> + {reply_id, _} = insert_reply(user, List.delete(data, "@" <> user.nickname), id, "direct") + {reply_id, data} + + _, {id, data} -> actor = Enum.random(list) {reply_id, _} = insert_reply(actor, List.delete(data, "@" <> actor.nickname), id, "direct") {reply_id, data} - - "user", {id, data} -> - {reply_id, _} = insert_reply(user, List.delete(data, "@" <> user.nickname), id, "direct") - {reply_id, data} end) end diff --git a/benchmarks/load_testing/fetcher.ex b/benchmarks/load_testing/fetcher.ex index 0de4924bc..15fd06c3d 100644 --- a/benchmarks/load_testing/fetcher.ex +++ b/benchmarks/load_testing/fetcher.ex @@ -36,6 +36,7 @@ defp fetch_timelines(user) do fetch_home_timeline(user) fetch_direct_timeline(user) fetch_public_timeline(user) + fetch_public_timeline(user, :with_blocks) fetch_public_timeline(user, :local) fetch_public_timeline(user, :tag) fetch_notifications(user) @@ -51,12 +52,12 @@ defp render_views(user) do defp opts_for_home_timeline(user) do %{ - "blocking_user" => user, - "count" => "20", - "muting_user" => user, - "type" => ["Create", "Announce"], - "user" => user, - "with_muted" => "true" + blocking_user: user, + count: "20", + muting_user: user, + type: ["Create", "Announce"], + user: user, + with_muted: true } end @@ -69,17 +70,17 @@ defp fetch_home_timeline(user) do ActivityPub.fetch_activities(recipients, opts) |> Enum.reverse() |> List.last() second_page_last = - ActivityPub.fetch_activities(recipients, Map.put(opts, "max_id", first_page_last.id)) + ActivityPub.fetch_activities(recipients, Map.put(opts, :max_id, first_page_last.id)) |> Enum.reverse() |> List.last() third_page_last = - ActivityPub.fetch_activities(recipients, Map.put(opts, "max_id", second_page_last.id)) + ActivityPub.fetch_activities(recipients, Map.put(opts, :max_id, second_page_last.id)) |> Enum.reverse() |> List.last() forth_page_last = - ActivityPub.fetch_activities(recipients, Map.put(opts, "max_id", third_page_last.id)) + ActivityPub.fetch_activities(recipients, Map.put(opts, :max_id, third_page_last.id)) |> Enum.reverse() |> List.last() @@ -89,19 +90,19 @@ defp fetch_home_timeline(user) do }, inputs: %{ "1 page" => opts, - "2 page" => Map.put(opts, "max_id", first_page_last.id), - "3 page" => Map.put(opts, "max_id", second_page_last.id), - "4 page" => Map.put(opts, "max_id", third_page_last.id), - "5 page" => Map.put(opts, "max_id", forth_page_last.id), - "1 page only media" => Map.put(opts, "only_media", "true"), + "2 page" => Map.put(opts, :max_id, first_page_last.id), + "3 page" => Map.put(opts, :max_id, second_page_last.id), + "4 page" => Map.put(opts, :max_id, third_page_last.id), + "5 page" => Map.put(opts, :max_id, forth_page_last.id), + "1 page only media" => Map.put(opts, :only_media, true), "2 page only media" => - Map.put(opts, "max_id", first_page_last.id) |> Map.put("only_media", "true"), + Map.put(opts, :max_id, first_page_last.id) |> Map.put(:only_media, true), "3 page only media" => - Map.put(opts, "max_id", second_page_last.id) |> Map.put("only_media", "true"), + Map.put(opts, :max_id, second_page_last.id) |> Map.put(:only_media, true), "4 page only media" => - Map.put(opts, "max_id", third_page_last.id) |> Map.put("only_media", "true"), + Map.put(opts, :max_id, third_page_last.id) |> Map.put(:only_media, true), "5 page only media" => - Map.put(opts, "max_id", forth_page_last.id) |> Map.put("only_media", "true") + Map.put(opts, :max_id, forth_page_last.id) |> Map.put(:only_media, true) }, formatters: formatters() ) @@ -109,12 +110,12 @@ defp fetch_home_timeline(user) do defp opts_for_direct_timeline(user) do %{ - :visibility => "direct", - "blocking_user" => user, - "count" => "20", - "type" => "Create", - "user" => user, - "with_muted" => "true" + visibility: "direct", + blocking_user: user, + count: "20", + type: "Create", + user: user, + with_muted: true } end @@ -129,7 +130,7 @@ defp fetch_direct_timeline(user) do |> Pagination.fetch_paginated(opts) |> List.last() - opts2 = Map.put(opts, "max_id", first_page_last.id) + opts2 = Map.put(opts, :max_id, first_page_last.id) second_page_last = recipients @@ -137,7 +138,7 @@ defp fetch_direct_timeline(user) do |> Pagination.fetch_paginated(opts2) |> List.last() - opts3 = Map.put(opts, "max_id", second_page_last.id) + opts3 = Map.put(opts, :max_id, second_page_last.id) third_page_last = recipients @@ -145,7 +146,7 @@ defp fetch_direct_timeline(user) do |> Pagination.fetch_paginated(opts3) |> List.last() - opts4 = Map.put(opts, "max_id", third_page_last.id) + opts4 = Map.put(opts, :max_id, third_page_last.id) forth_page_last = recipients @@ -164,7 +165,7 @@ defp fetch_direct_timeline(user) do "2 page" => opts2, "3 page" => opts3, "4 page" => opts4, - "5 page" => Map.put(opts4, "max_id", forth_page_last.id) + "5 page" => Map.put(opts4, :max_id, forth_page_last.id) }, formatters: formatters() ) @@ -172,34 +173,34 @@ defp fetch_direct_timeline(user) do defp opts_for_public_timeline(user) do %{ - "type" => ["Create", "Announce"], - "local_only" => false, - "blocking_user" => user, - "muting_user" => user + type: ["Create", "Announce"], + local_only: false, + blocking_user: user, + muting_user: user } end defp opts_for_public_timeline(user, :local) do %{ - "type" => ["Create", "Announce"], - "local_only" => true, - "blocking_user" => user, - "muting_user" => user + type: ["Create", "Announce"], + local_only: true, + blocking_user: user, + muting_user: user } end defp opts_for_public_timeline(user, :tag) do %{ - "blocking_user" => user, - "count" => "20", - "local_only" => nil, - "muting_user" => user, - "tag" => ["tag"], - "tag_all" => [], - "tag_reject" => [], - "type" => "Create", - "user" => user, - "with_muted" => "true" + blocking_user: user, + count: "20", + local_only: nil, + muting_user: user, + tag: ["tag"], + tag_all: [], + tag_reject: [], + type: "Create", + user: user, + with_muted: true } end @@ -222,24 +223,72 @@ defp fetch_public_timeline(user, :tag) do end defp fetch_public_timeline(user, :only_media) do - opts = opts_for_public_timeline(user) |> Map.put("only_media", "true") + opts = opts_for_public_timeline(user) |> Map.put(:only_media, true) fetch_public_timeline(opts, "public timeline only media") end + defp fetch_public_timeline(user, :with_blocks) do + opts = opts_for_public_timeline(user) + + remote_non_friends = Agent.get(:non_friends_remote, & &1) + + Benchee.run(%{ + "public timeline without blocks" => fn -> + ActivityPub.fetch_public_activities(opts) + end + }) + + Enum.each(remote_non_friends, fn non_friend -> + {:ok, _} = User.block(user, non_friend) + end) + + user = User.get_by_id(user.id) + + opts = Map.put(opts, :blocking_user, user) + + Benchee.run(%{ + "public timeline with user block" => fn -> + ActivityPub.fetch_public_activities(opts) + end + }) + + domains = + Enum.reduce(remote_non_friends, [], fn non_friend, domains -> + {:ok, _user} = User.unblock(user, non_friend) + %{host: host} = URI.parse(non_friend.ap_id) + [host | domains] + end) + + domains = Enum.uniq(domains) + + Enum.each(domains, fn domain -> + {:ok, _} = User.block_domain(user, domain) + end) + + user = User.get_by_id(user.id) + opts = Map.put(opts, :blocking_user, user) + + Benchee.run(%{ + "public timeline with domain block" => fn -> + ActivityPub.fetch_public_activities(opts) + end + }) + end + defp fetch_public_timeline(opts, title) when is_binary(title) do first_page_last = ActivityPub.fetch_public_activities(opts) |> List.last() second_page_last = - ActivityPub.fetch_public_activities(Map.put(opts, "max_id", first_page_last.id)) + ActivityPub.fetch_public_activities(Map.put(opts, :max_id, first_page_last.id)) |> List.last() third_page_last = - ActivityPub.fetch_public_activities(Map.put(opts, "max_id", second_page_last.id)) + ActivityPub.fetch_public_activities(Map.put(opts, :max_id, second_page_last.id)) |> List.last() forth_page_last = - ActivityPub.fetch_public_activities(Map.put(opts, "max_id", third_page_last.id)) + ActivityPub.fetch_public_activities(Map.put(opts, :max_id, third_page_last.id)) |> List.last() Benchee.run( @@ -250,17 +299,17 @@ defp fetch_public_timeline(opts, title) when is_binary(title) do }, inputs: %{ "1 page" => opts, - "2 page" => Map.put(opts, "max_id", first_page_last.id), - "3 page" => Map.put(opts, "max_id", second_page_last.id), - "4 page" => Map.put(opts, "max_id", third_page_last.id), - "5 page" => Map.put(opts, "max_id", forth_page_last.id) + "2 page" => Map.put(opts, :max_id, first_page_last.id), + "3 page" => Map.put(opts, :max_id, second_page_last.id), + "4 page" => Map.put(opts, :max_id, third_page_last.id), + "5 page" => Map.put(opts, :max_id, forth_page_last.id) }, formatters: formatters() ) end defp opts_for_notifications do - %{"count" => "20", "with_muted" => "true"} + %{count: "20", with_muted: true} end defp fetch_notifications(user) do @@ -269,15 +318,15 @@ defp fetch_notifications(user) do first_page_last = MastodonAPI.get_notifications(user, opts) |> List.last() second_page_last = - MastodonAPI.get_notifications(user, Map.put(opts, "max_id", first_page_last.id)) + MastodonAPI.get_notifications(user, Map.put(opts, :max_id, first_page_last.id)) |> List.last() third_page_last = - MastodonAPI.get_notifications(user, Map.put(opts, "max_id", second_page_last.id)) + MastodonAPI.get_notifications(user, Map.put(opts, :max_id, second_page_last.id)) |> List.last() forth_page_last = - MastodonAPI.get_notifications(user, Map.put(opts, "max_id", third_page_last.id)) + MastodonAPI.get_notifications(user, Map.put(opts, :max_id, third_page_last.id)) |> List.last() Benchee.run( @@ -288,10 +337,10 @@ defp fetch_notifications(user) do }, inputs: %{ "1 page" => opts, - "2 page" => Map.put(opts, "max_id", first_page_last.id), - "3 page" => Map.put(opts, "max_id", second_page_last.id), - "4 page" => Map.put(opts, "max_id", third_page_last.id), - "5 page" => Map.put(opts, "max_id", forth_page_last.id) + "2 page" => Map.put(opts, :max_id, first_page_last.id), + "3 page" => Map.put(opts, :max_id, second_page_last.id), + "4 page" => Map.put(opts, :max_id, third_page_last.id), + "5 page" => Map.put(opts, :max_id, forth_page_last.id) }, formatters: formatters() ) @@ -301,13 +350,13 @@ defp fetch_favourites(user) do first_page_last = ActivityPub.fetch_favourites(user) |> List.last() second_page_last = - ActivityPub.fetch_favourites(user, %{"max_id" => first_page_last.id}) |> List.last() + ActivityPub.fetch_favourites(user, %{:max_id => first_page_last.id}) |> List.last() third_page_last = - ActivityPub.fetch_favourites(user, %{"max_id" => second_page_last.id}) |> List.last() + ActivityPub.fetch_favourites(user, %{:max_id => second_page_last.id}) |> List.last() forth_page_last = - ActivityPub.fetch_favourites(user, %{"max_id" => third_page_last.id}) |> List.last() + ActivityPub.fetch_favourites(user, %{:max_id => third_page_last.id}) |> List.last() Benchee.run( %{ @@ -317,10 +366,10 @@ defp fetch_favourites(user) do }, inputs: %{ "1 page" => %{}, - "2 page" => %{"max_id" => first_page_last.id}, - "3 page" => %{"max_id" => second_page_last.id}, - "4 page" => %{"max_id" => third_page_last.id}, - "5 page" => %{"max_id" => forth_page_last.id} + "2 page" => %{:max_id => first_page_last.id}, + "3 page" => %{:max_id => second_page_last.id}, + "4 page" => %{:max_id => third_page_last.id}, + "5 page" => %{:max_id => forth_page_last.id} }, formatters: formatters() ) @@ -328,8 +377,8 @@ defp fetch_favourites(user) do defp opts_for_long_thread(user) do %{ - "blocking_user" => user, - "user" => user + blocking_user: user, + user: user } end @@ -339,9 +388,9 @@ defp fetch_long_thread(user) do opts = opts_for_long_thread(user) - private_input = {private.data["context"], Map.put(opts, "exclude_id", private.id)} + private_input = {private.data["context"], Map.put(opts, :exclude_id, private.id)} - public_input = {public.data["context"], Map.put(opts, "exclude_id", public.id)} + public_input = {public.data["context"], Map.put(opts, :exclude_id, public.id)} Benchee.run( %{ @@ -461,13 +510,13 @@ defp render_long_thread(user) do public_context = ActivityPub.fetch_activities_for_context( public.data["context"], - Map.put(fetch_opts, "exclude_id", public.id) + Map.put(fetch_opts, :exclude_id, public.id) ) private_context = ActivityPub.fetch_activities_for_context( private.data["context"], - Map.put(fetch_opts, "exclude_id", private.id) + Map.put(fetch_opts, :exclude_id, private.id) ) Benchee.run( @@ -498,14 +547,14 @@ defp fetch_timelines_with_reply_filtering(user) do end, "Public timeline with reply filtering - following" => fn -> public_params - |> Map.put("reply_visibility", "following") - |> Map.put("reply_filtering_user", user) + |> Map.put(:reply_visibility, "following") + |> Map.put(:reply_filtering_user, user) |> ActivityPub.fetch_public_activities() end, "Public timeline with reply filtering - self" => fn -> public_params - |> Map.put("reply_visibility", "self") - |> Map.put("reply_filtering_user", user) + |> Map.put(:reply_visibility, "self") + |> Map.put(:reply_filtering_user, user) |> ActivityPub.fetch_public_activities() end }, @@ -524,16 +573,16 @@ defp fetch_timelines_with_reply_filtering(user) do "Home timeline with reply filtering - following" => fn -> private_params = private_params - |> Map.put("reply_filtering_user", user) - |> Map.put("reply_visibility", "following") + |> Map.put(:reply_filtering_user, user) + |> Map.put(:reply_visibility, "following") ActivityPub.fetch_activities(recipients, private_params) end, "Home timeline with reply filtering - self" => fn -> private_params = private_params - |> Map.put("reply_filtering_user", user) - |> Map.put("reply_visibility", "self") + |> Map.put(:reply_filtering_user, user) + |> Map.put(:reply_visibility, "self") ActivityPub.fetch_activities(recipients, private_params) end diff --git a/benchmarks/load_testing/users.ex b/benchmarks/load_testing/users.ex index e4d0b22ff..6cf3958c1 100644 --- a/benchmarks/load_testing/users.ex +++ b/benchmarks/load_testing/users.ex @@ -27,7 +27,7 @@ def generate(opts \\ []) do make_friends(main_user, opts[:friends]) - Repo.get(User, main_user.id) + User.get_by_id(main_user.id) end def generate_users(max) do @@ -166,4 +166,24 @@ defp run_stream(users, main_user) do ) |> Stream.run() end + + @spec prepare_users(User.t(), keyword()) :: map() + def prepare_users(user, opts) do + friends_limit = opts[:friends_used] + non_friends_limit = opts[:non_friends_used] + + %{ + user: user, + friends_local: fetch_users(user, friends_limit, :local, true), + friends_remote: fetch_users(user, friends_limit, :external, true), + non_friends_local: fetch_users(user, non_friends_limit, :local, false), + non_friends_remote: fetch_users(user, non_friends_limit, :external, false) + } + end + + defp fetch_users(user, limit, local, friends?) do + user + |> get_users(limit: limit, local: local, friends?: friends?) + |> Enum.shuffle() + end end diff --git a/benchmarks/mix/tasks/pleroma/benchmarks/tags.ex b/benchmarks/mix/tasks/pleroma/benchmarks/tags.ex index 657403202..c051335a5 100644 --- a/benchmarks/mix/tasks/pleroma/benchmarks/tags.ex +++ b/benchmarks/mix/tasks/pleroma/benchmarks/tags.ex @@ -5,7 +5,6 @@ defmodule Mix.Tasks.Pleroma.Benchmarks.Tags do import Ecto.Query alias Pleroma.Repo - alias Pleroma.Web.MastodonAPI.TimelineController def run(_args) do Mix.Pleroma.start_pleroma() @@ -37,7 +36,7 @@ def run(_args) do Benchee.run( %{ "Hashtag fetching, any" => fn tags -> - TimelineController.hashtag_fetching( + hashtag_fetching( %{ "any" => tags }, @@ -47,7 +46,7 @@ def run(_args) do end, # Will always return zero results because no overlapping hashtags are generated. "Hashtag fetching, all" => fn tags -> - TimelineController.hashtag_fetching( + hashtag_fetching( %{ "all" => tags }, @@ -67,7 +66,7 @@ def run(_args) do Benchee.run( %{ "Hashtag fetching" => fn tag -> - TimelineController.hashtag_fetching( + hashtag_fetching( %{ "tag" => tag }, @@ -80,4 +79,35 @@ def run(_args) do time: 5 ) end + + defp hashtag_fetching(params, user, local_only) do + tags = + [params["tag"], params["any"]] + |> List.flatten() + |> Enum.uniq() + |> Enum.filter(& &1) + |> Enum.map(&String.downcase(&1)) + + tag_all = + params + |> Map.get("all", []) + |> Enum.map(&String.downcase(&1)) + + tag_reject = + params + |> Map.get("none", []) + |> Enum.map(&String.downcase(&1)) + + _activities = + params + |> Map.put(:type, "Create") + |> Map.put(:local_only, local_only) + |> Map.put(:blocking_user, user) + |> Map.put(:muting_user, user) + |> Map.put(:user, user) + |> Map.put(:tag, tags) + |> Map.put(:tag_all, tag_all) + |> Map.put(:tag_reject, tag_reject) + |> Pleroma.Web.ActivityPub.ActivityPub.fetch_public_activities() + end end diff --git a/config/config.exs b/config/config.exs index d15998715..9b550920c 100644 --- a/config/config.exs +++ b/config/config.exs @@ -171,7 +171,8 @@ "application/ld+json" => ["activity+json"] } -config :tesla, adapter: Tesla.Adapter.Gun +config :tesla, adapter: Tesla.Adapter.Hackney + # Configures http settings, upstream proxy etc. config :pleroma, :http, proxy_url: nil, @@ -183,8 +184,9 @@ name: "Pleroma", email: "example@example.com", notify_email: "noreply@example.com", - description: "A Pleroma instance, an alternative fediverse server", + description: "Pleroma: An efficient and flexible fediverse server", background_image: "/images/city.jpg", + instance_thumbnail: "/instance/thumbnail.jpeg", limit: 5_000, chat_limit: 5_000, remote_limit: 100_000, @@ -208,7 +210,6 @@ Pleroma.Web.ActivityPub.Publisher ], allow_relay: true, - rewrite_policy: Pleroma.Web.ActivityPub.MRF.NoOpPolicy, public: true, quarantined_instances: [], managed_config: true, @@ -219,8 +220,6 @@ "text/markdown", "text/bbcode" ], - mrf_transparency: true, - mrf_transparency_exclusions: [], autofollowed_nicknames: [], max_pinned_statuses: 1, attachment_links: false, @@ -370,6 +369,8 @@ config :pleroma, :mrf_subchain, match_actor: %{} +config :pleroma, :mrf_activity_expiration, days: 365 + config :pleroma, :mrf_vocabulary, accept: [], reject: [] @@ -384,7 +385,6 @@ ignore_tld: ["local", "localdomain", "lan"], parsers: [ Pleroma.Web.RichMedia.Parsers.TwitterCard, - Pleroma.Web.RichMedia.Parsers.OGP, Pleroma.Web.RichMedia.Parsers.OEmbed ], ttl_setters: [Pleroma.Web.RichMedia.Parser.TTL.AwsSignedUrl] @@ -405,6 +405,13 @@ ], whitelist: [] +config :pleroma, Pleroma.Web.MediaProxy.Invalidation.Http, + method: :purge, + headers: [], + options: [] + +config :pleroma, Pleroma.Web.MediaProxy.Invalidation.Script, script_path: nil + config :pleroma, :chat, enabled: true config :phoenix, :format_encoders, json: Jason @@ -427,6 +434,12 @@ ], unfurl_nsfw: false +config :pleroma, Pleroma.Web.Preload, + providers: [ + Pleroma.Web.Preload.Providers.Instance, + Pleroma.Web.Preload.Providers.StatusNet + ] + config :pleroma, :http_security, enabled: true, sts: false, @@ -683,6 +696,15 @@ config :pleroma, Pleroma.Web.ApiSpec.CastAndValidate, strict: false +config :pleroma, :mrf, + policies: Pleroma.Web.ActivityPub.MRF.NoOpPolicy, + transparency: true, + transparency_exclusions: [] + +config :tzdata, :http_client, Pleroma.HTTP.Tzdata + +config :ex_aws, http_client: Pleroma.HTTP.ExAws + # Import environment specific config. This must remain at the bottom # of this file so it overrides the configuration defined above. import_config "#{Mix.env()}.exs" diff --git a/config/description.exs b/config/description.exs index 807c945e0..f54ac2a2a 100644 --- a/config/description.exs +++ b/config/description.exs @@ -689,17 +689,6 @@ type: :boolean, description: "Enable Pleroma's Relay, which makes it possible to follow a whole instance" }, - %{ - key: :rewrite_policy, - type: [:module, {:list, :module}], - description: - "A list of enabled MRF policies. Module names are shortened (removed leading `Pleroma.Web.ActivityPub.MRF.` part), but on adding custom module you need to use full name.", - suggestions: - Generator.list_modules_in_dir( - "lib/pleroma/web/activity_pub/mrf", - "Elixir.Pleroma.Web.ActivityPub.MRF." - ) - }, %{ key: :public, type: :boolean, @@ -742,23 +731,6 @@ "text/bbcode" ] }, - %{ - key: :mrf_transparency, - label: "MRF transparency", - type: :boolean, - description: - "Make the content of your Message Rewrite Facility settings public (via nodeinfo)" - }, - %{ - key: :mrf_transparency_exclusions, - label: "MRF transparency exclusions", - type: {:list, :string}, - description: - "Exclude specific instance names from MRF transparency. The use of the exclusions feature will be disclosed in nodeinfo as a boolean value.", - suggestions: [ - "exclusion.com" - ] - }, %{ key: :extended_nickname_format, type: :boolean, @@ -979,7 +951,7 @@ key: :instance_thumbnail, type: :string, description: - "The instance thumbnail image. It will appear in [Pleroma Instances](http://distsn.org/pleroma-instances.html)", + "The instance thumbnail can be any image that represents your instance and is used by some apps or services when they display information about your instance.", suggestions: ["/instance/thumbnail.jpeg"] } ] @@ -1471,6 +1443,21 @@ } ] }, + %{ + group: :pleroma, + key: :mrf_activity_expiration, + label: "MRF Activity Expiration Policy", + type: :group, + description: "Adds expiration to all local Create Note activities", + children: [ + %{ + key: :days, + type: :integer, + description: "Default global expiration time for all local Create activities (in days)", + suggestions: [90, 365] + } + ] + }, %{ group: :pleroma, key: :mrf_subchain, @@ -1608,14 +1595,12 @@ # %{ # group: :pleroma, # key: :mrf_user_allowlist, - # type: :group, + # type: :map, # description: # "The keys in this section are the domain names that the policy should apply to." <> # " Each key should be assigned a list of users that should be allowed through by their ActivityPub ID", - # children: [ - # ["example.org": ["https://example.org/users/admin"]], # suggestions: [ - # ["example.org": ["https://example.org/users/admin"]] + # %{"example.org" => ["https://example.org/users/admin"]} # ] # ] # }, @@ -1637,6 +1622,31 @@ "The base URL to access a user-uploaded file. Useful when you want to proxy the media files via another host/CDN fronts.", suggestions: ["https://example.com"] }, + %{ + key: :invalidation, + type: :keyword, + descpiption: "", + suggestions: [ + enabled: true, + provider: Pleroma.Web.MediaProxy.Invalidation.Script + ], + children: [ + %{ + key: :enabled, + type: :boolean, + description: "Enables invalidate media cache" + }, + %{ + key: :provider, + type: :module, + description: "Module which will be used to cache purge.", + suggestions: [ + Pleroma.Web.MediaProxy.Invalidation.Script, + Pleroma.Web.MediaProxy.Invalidation.Http + ] + } + ] + }, %{ key: :proxy_opts, type: :keyword, @@ -1709,6 +1719,45 @@ } ] }, + %{ + group: :pleroma, + key: Pleroma.Web.MediaProxy.Invalidation.Http, + type: :group, + description: "HTTP invalidate settings", + children: [ + %{ + key: :method, + type: :atom, + description: "HTTP method of request. Default: :purge" + }, + %{ + key: :headers, + type: {:list, :tuple}, + description: "HTTP headers of request.", + suggestions: [{"x-refresh", 1}] + }, + %{ + key: :options, + type: :keyword, + description: "Request options.", + suggestions: [params: %{ts: "xxx"}] + } + ] + }, + %{ + group: :pleroma, + key: Pleroma.Web.MediaProxy.Invalidation.Script, + type: :group, + description: "Script invalidate settings", + children: [ + %{ + key: :script_path, + type: :string, + description: "Path to shell script. Which will run purge cache.", + suggestions: ["./installation/nginx-cache-purge.sh.example"] + } + ] + }, %{ group: :pleroma, key: :gopher, @@ -2091,9 +2140,7 @@ description: "List of Rich Media parsers. Module names are shortened (removed leading `Pleroma.Web.RichMedia.Parsers.` part), but on adding custom module you need to use full name.", suggestions: [ - Pleroma.Web.RichMedia.Parsers.MetaTagsParser, Pleroma.Web.RichMedia.Parsers.OEmbed, - Pleroma.Web.RichMedia.Parsers.OGP, Pleroma.Web.RichMedia.Parsers.TwitterCard ] }, @@ -3314,5 +3361,41 @@ suggestions: [false] } ] + }, + %{ + group: :pleroma, + key: :mrf, + type: :group, + description: "General MRF settings", + children: [ + %{ + key: :policies, + type: [:module, {:list, :module}], + description: + "A list of MRF policies enabled. Module names are shortened (removed leading `Pleroma.Web.ActivityPub.MRF.` part), but on adding custom module you need to use full name.", + suggestions: + Generator.list_modules_in_dir( + "lib/pleroma/web/activity_pub/mrf", + "Elixir.Pleroma.Web.ActivityPub.MRF." + ) + }, + %{ + key: :transparency, + label: "MRF transparency", + type: :boolean, + description: + "Make the content of your Message Rewrite Facility settings public (via nodeinfo)" + }, + %{ + key: :transparency_exclusions, + label: "MRF transparency exclusions", + type: {:list, :string}, + description: + "Exclude specific instance names from MRF transparency. The use of the exclusions feature will be disclosed in nodeinfo as a boolean value.", + suggestions: [ + "exclusion.com" + ] + } + ] } ] diff --git a/docs/API/admin_api.md b/docs/API/admin_api.md index 639c3224d..baf895d90 100644 --- a/docs/API/admin_api.md +++ b/docs/API/admin_api.md @@ -488,35 +488,39 @@ Note: Available `:permission_group` is currently moderator and admin. 404 is ret ### Change the user's email, password, display and settings-related fields -- Params: - - `email` - - `password` - - `name` - - `bio` - - `avatar` - - `locked` - - `no_rich_text` - - `default_scope` - - `banner` - - `hide_follows` - - `hide_followers` - - `hide_followers_count` - - `hide_follows_count` - - `hide_favorites` - - `allow_following_move` - - `background` - - `show_role` - - `skip_thread_containment` - - `fields` - - `discoverable` - - `actor_type` +* Params: + * `email` + * `password` + * `name` + * `bio` + * `avatar` + * `locked` + * `no_rich_text` + * `default_scope` + * `banner` + * `hide_follows` + * `hide_followers` + * `hide_followers_count` + * `hide_follows_count` + * `hide_favorites` + * `allow_following_move` + * `background` + * `show_role` + * `skip_thread_containment` + * `fields` + * `discoverable` + * `actor_type` -- Response: +* Responses: + +Status: 200 ```json {"status": "success"} ``` +Status: 400 + ```json {"errors": {"actor_type": "is invalid"}, @@ -525,8 +529,10 @@ Note: Available `:permission_group` is currently moderator and admin. 404 is ret } ``` +Status: 404 + ```json -{"error": "Unable to update user."} +{"error": "Not found"} ``` ## `GET /api/pleroma/admin/reports` @@ -547,7 +553,7 @@ Note: Available `:permission_group` is currently moderator and admin. 404 is ret ```json { - "totalReports" : 1, + "total" : 1, "reports": [ { "account": { @@ -768,7 +774,7 @@ Note: Available `:permission_group` is currently moderator and admin. 404 is ret - 400 Bad Request `"Invalid parameters"` when `status` is missing - On success: `204`, empty response -## `POST /api/pleroma/admin/reports/:report_id/notes/:id` +## `DELETE /api/pleroma/admin/reports/:report_id/notes/:id` ### Delete report note @@ -1112,6 +1118,10 @@ Loads json generated from `config/descriptions.exs`. ### Stats +- Query Params: + - *optional* `instance`: **string** instance hostname (without protocol) to get stats for +- Example: `https://mypleroma.org/api/pleroma/admin/stats?instance=lain.com` + - Response: ```json @@ -1224,4 +1234,66 @@ Loads json generated from `config/descriptions.exs`. - Response: - On success: `204`, empty response - On failure: - - 400 Bad Request `"Invalid parameters"` when `status` is missing \ No newline at end of file + - 400 Bad Request `"Invalid parameters"` when `status` is missing + +## `GET /api/pleroma/admin/media_proxy_caches` + +### Get a list of all banned MediaProxy URLs in Cachex + +- Authentication: required +- Params: +- *optional* `page`: **integer** page number +- *optional* `page_size`: **integer** number of log entries per page (default is `50`) + +- Response: + +``` json +{ + "urls": [ + "http://example.com/media/a688346.jpg", + "http://example.com/media/fb1f4d.jpg" + ] +} + +``` + +## `POST /api/pleroma/admin/media_proxy_caches/delete` + +### Remove a banned MediaProxy URL from Cachex + +- Authentication: required +- Params: + - `urls` (array) + +- Response: + +``` json +{ + "urls": [ + "http://example.com/media/a688346.jpg", + "http://example.com/media/fb1f4d.jpg" + ] +} + +``` + +## `POST /api/pleroma/admin/media_proxy_caches/purge` + +### Purge a MediaProxy URL + +- Authentication: required +- Params: + - `urls` (array) + - `ban` (boolean) + +- Response: + +``` json +{ + "urls": [ + "http://example.com/media/a688346.jpg", + "http://example.com/media/fb1f4d.jpg" + ] +} + +``` diff --git a/docs/API/chats.md b/docs/API/chats.md new file mode 100644 index 000000000..aa6119670 --- /dev/null +++ b/docs/API/chats.md @@ -0,0 +1,248 @@ +# Chats + +Chats are a way to represent an IM-style conversation between two actors. They are not the same as direct messages and they are not `Status`es, even though they have a lot in common. + +## Why Chats? + +There are no 'visibility levels' in ActivityPub, their definition is purely a Mastodon convention. Direct Messaging between users on the fediverse has mostly been modeled by using ActivityPub addressing following Mastodon conventions on normal `Note` objects. In this case, a 'direct message' would be a message that has no followers addressed and also does not address the special public actor, but just the recipients in the `to` field. It would still be a `Note` and is presented with other `Note`s as a `Status` in the API. + +This is an awkward setup for a few reasons: + +- As DMs generally still follow the usual `Status` conventions, it is easy to accidentally pull somebody into a DM thread by mentioning them. (e.g. "I hate @badguy so much") +- It is possible to go from a publicly addressed `Status` to a DM reply, back to public, then to a 'followers only' reply, and so on. This can be become very confusing, as it is unclear which user can see which part of the conversation. +- The standard `Status` format of implicit addressing also leads to rather ugly results if you try to display the messages as a chat, because all the recipients are always mentioned by name in the message. +- As direct messages are posted with the same api call (and usually same frontend component) as public messages, accidentally making a public message private or vice versa can happen easily. Client bugs can also lead to this, accidentally making private messages public. + +As a measure to improve this situation, the `Conversation` concept and related Pleroma extensions were introduced. While it made it possible to work around a few of the issues, many of the problems remained and it didn't see much adoption because it was too complicated to use correctly. + +## Chats explained +For this reasons, Chats are a new and different entity, both in the API as well as in ActivityPub. A quick overview: + +- Chats are meant to represent an instant message conversation between two actors. For now these are only 1-on-1 conversations, but the other actor can be a group in the future. +- Chat messages have the ActivityPub type `ChatMessage`. They are not `Note`s. Servers that don't understand them will just drop them. +- The only addressing allowed in `ChatMessage`s is one single ActivityPub actor in the `to` field. +- There's always only one Chat between two actors. If you start chatting with someone and later start a 'new' Chat, the old Chat will be continued. +- `ChatMessage`s are posted with a different api, making it very hard to accidentally send a message to the wrong person. +- `ChatMessage`s don't show up in the existing timelines. +- Chats can never go from private to public. They are always private between the two actors. + +## Caveats + +- Chats are NOT E2E encrypted (yet). Security is still the same as email. + +## API + +In general, the way to send a `ChatMessage` is to first create a `Chat`, then post a message to that `Chat`. `Group`s will later be supported by making them a sub-type of `Account`. + +This is the overview of using the API. The API is also documented via OpenAPI, so you can view it and play with it by pointing SwaggerUI or a similar OpenAPI tool to `https://yourinstance.tld/api/openapi`. + +### Creating or getting a chat. + +To create or get an existing Chat for a certain recipient (identified by Account ID) +you can call: + +`POST /api/v1/pleroma/chats/by-account-id/:account_id` + +The account id is the normal FlakeId of the user +``` +POST /api/v1/pleroma/chats/by-account-id/someflakeid +``` + +If you already have the id of a chat, you can also use + +``` +GET /api/v1/pleroma/chats/:id +``` + +There will only ever be ONE Chat for you and a given recipient, so this call +will return the same Chat if you already have one with that user. + +Returned data: + +```json +{ + "account": { + "id": "someflakeid", + "username": "somenick", + ... + }, + "id" : "1", + "unread" : 2, + "last_message" : {...}, // The last message in that chat + "updated_at": "2020-04-21T15:11:46.000Z" +} +``` + +### Marking a chat as read + +To mark a number of messages in a chat up to a certain message as read, you can use + +`POST /api/v1/pleroma/chats/:id/read` + + +Parameters: +- last_read_id: Given this id, all chat messages until this one will be marked as read. Required. + + +Returned data: + +```json +{ + "account": { + "id": "someflakeid", + "username": "somenick", + ... + }, + "id" : "1", + "unread" : 0, + "updated_at": "2020-04-21T15:11:46.000Z" +} +``` + +### Marking a single chat message as read + +To set the `unread` property of a message to `false` + +`POST /api/v1/pleroma/chats/:id/messages/:message_id/read` + +Returned data: + +The modified chat message + +### Getting a list of Chats + +`GET /api/v1/pleroma/chats` + +This will return a list of chats that you have been involved in, sorted by their +last update (so new chats will be at the top). + +Returned data: + +```json +[ + { + "account": { + "id": "someflakeid", + "username": "somenick", + ... + }, + "id" : "1", + "unread" : 2, + "last_message" : {...}, // The last message in that chat + "updated_at": "2020-04-21T15:11:46.000Z" + } +] +``` + +The recipient of messages that are sent to this chat is given by their AP ID. +No pagination is implemented for now. + +### Getting the messages for a Chat + +For a given Chat id, you can get the associated messages with + +`GET /api/v1/pleroma/chats/:id/messages` + +This will return all messages, sorted by most recent to least recent. The usual +pagination options are implemented. + +Returned data: + +```json +[ + { + "account_id": "someflakeid", + "chat_id": "1", + "content": "Check this out :firefox:", + "created_at": "2020-04-21T15:11:46.000Z", + "emojis": [ + { + "shortcode": "firefox", + "static_url": "https://dontbulling.me/emoji/Firefox.gif", + "url": "https://dontbulling.me/emoji/Firefox.gif", + "visible_in_picker": false + } + ], + "id": "13", + "unread": true + }, + { + "account_id": "someflakeid", + "chat_id": "1", + "content": "Whats' up?", + "created_at": "2020-04-21T15:06:45.000Z", + "emojis": [], + "id": "12", + "unread": false + } +] +``` + +### Posting a chat message + +Posting a chat message for given Chat id works like this: + +`POST /api/v1/pleroma/chats/:id/messages` + +Parameters: +- content: The text content of the message. Optional if media is attached. +- media_id: The id of an upload that will be attached to the message. + +Currently, no formatting beyond basic escaping and emoji is implemented. + +Returned data: + +```json +{ + "account_id": "someflakeid", + "chat_id": "1", + "content": "Check this out :firefox:", + "created_at": "2020-04-21T15:11:46.000Z", + "emojis": [ + { + "shortcode": "firefox", + "static_url": "https://dontbulling.me/emoji/Firefox.gif", + "url": "https://dontbulling.me/emoji/Firefox.gif", + "visible_in_picker": false + } + ], + "id": "13", + "unread": false +} +``` + +### Deleting a chat message + +Deleting a chat message for given Chat id works like this: + +`DELETE /api/v1/pleroma/chats/:chat_id/messages/:message_id` + +Returned data is the deleted message. + +### Notifications + +There's a new `pleroma:chat_mention` notification, which has this form. It is not given out in the notifications endpoint by default, you need to explicitly request it with `include_types[]=pleroma:chat_mention`: + +```json +{ + "id": "someid", + "type": "pleroma:chat_mention", + "account": { ... } // User account of the sender, + "chat_message": { + "chat_id": "1", + "id": "10", + "content": "Hello", + "account_id": "someflakeid", + "unread": false + }, + "created_at": "somedate" +} +``` + +### Streaming + +There is an additional `user:pleroma_chat` stream. Incoming chat messages will make the current chat be sent to this `user` stream. The `event` of an incoming chat message is `pleroma:chat_update`. The payload is the updated chat with the incoming chat message in the `last_message` field. + +### Web Push + +If you want to receive push messages for this type, you'll need to add the `pleroma:chat_mention` type to your alerts in the push subscription. diff --git a/docs/API/differences_in_mastoapi_responses.md b/docs/API/differences_in_mastoapi_responses.md index e65fd5da4..13920e5f9 100644 --- a/docs/API/differences_in_mastoapi_responses.md +++ b/docs/API/differences_in_mastoapi_responses.md @@ -6,10 +6,6 @@ A Pleroma instance can be identified by " (compatible; Pleroma Pleroma uses 128-bit ids as opposed to Mastodon's 64 bits. However just like Mastodon's ids they are lexically sortable strings -## Attachment cap - -Some apps operate under the assumption that no more than 4 attachments can be returned or uploaded. Pleroma however does not enforce any limits on attachment count neither when returning the status object nor when posting. - ## Timelines Adding the parameter `with_muted=true` to the timeline queries will also return activities by muted (not by blocked!) users. @@ -31,13 +27,22 @@ Has these additional fields under the `pleroma` object: - `expires_at`: a datetime (iso8601) that states when the post will expire (be deleted automatically), or empty if the post won't expire - `thread_muted`: true if the thread the post belongs to is muted - `emoji_reactions`: A list with emoji / reaction maps. The format is `{name: "☕", count: 1, me: true}`. Contains no information about the reacting users, for that use the `/statuses/:id/reactions` endpoint. +- `parent_visible`: If the parent of this post is visible to the user or not. -## Attachments +## Media Attachments Has these additional fields under the `pleroma` object: - `mime_type`: mime type of the attachment. +### Attachment cap + +Some apps operate under the assumption that no more than 4 attachments can be returned or uploaded. Pleroma however does not enforce any limits on attachment count neither when returning the status object nor when posting. + +### Limitations + +Pleroma does not process remote images and therefore cannot include fields such as `meta` and `blurhash`. It does not support focal points or aspect ratios. The frontend is expected to handle it. + ## Accounts The `id` parameter can also be the `nickname` of the user. This only works in these endpoints, not the deeper nested ones for following etc. @@ -47,11 +52,14 @@ The `id` parameter can also be the `nickname` of the user. This only works in th Has these additional fields under the `pleroma` object: +- `ap_id`: nullable URL string, ActivityPub id of the user +- `background_image`: nullable URL string, background image of the user - `tags`: Lists an array of tags for the user -- `relationship{}`: Includes fields as documented for Mastodon API https://docs.joinmastodon.org/entities/relationship/ +- `relationship` (object): Includes fields as documented for Mastodon API https://docs.joinmastodon.org/entities/relationship/ - `is_moderator`: boolean, nullable, true if user is a moderator - `is_admin`: boolean, nullable, true if user is an admin - `confirmation_pending`: boolean, true if a new user account is waiting on email confirmation to be activated +- `hide_favorites`: boolean, true when the user has hiding favorites enabled - `hide_followers`: boolean, true when the user has follower hiding enabled - `hide_follows`: boolean, true when the user has follow hiding enabled - `hide_followers_count`: boolean, true when the user has follower stat hiding enabled @@ -62,6 +70,7 @@ Has these additional fields under the `pleroma` object: - `allow_following_move`: boolean, true when the user allows automatically follow moved following accounts - `unread_conversation_count`: The count of unread conversations. Only returned to the account owner. - `unread_notifications_count`: The count of unread notifications. Only returned to the account owner. +- `notification_settings`: object, can be absent. See `/api/pleroma/notification_settings` for the parameters/keys returned. ### Source @@ -226,3 +235,47 @@ Has theses additional parameters (which are the same as in Pleroma-API): Has these additional fields under the `pleroma` object: - `unread_count`: contains number unread notifications + +## Streaming + +There is an additional `user:pleroma_chat` stream. Incoming chat messages will make the current chat be sent to this `user` stream. The `event` of an incoming chat message is `pleroma:chat_update`. The payload is the updated chat with the incoming chat message in the `last_message` field. + +## Not implemented + +Pleroma is generally compatible with the Mastodon 2.7.2 API, but some newer features and non-essential features are omitted. These features usually return an HTTP 200 status code, but with an empty response. While they may be added in the future, they are considered low priority. + +### Suggestions + +*Added in Mastodon 2.4.3* + +- `GET /api/v1/suggestions`: Returns an empty array, `[]` + +### Trends + +*Added in Mastodon 3.0.0* + +- `GET /api/v1/trends`: Returns an empty array, `[]` + +### Identity proofs + +*Added in Mastodon 2.8.0* + +- `GET /api/v1/identity_proofs`: Returns an empty array, `[]` + +### Endorsements + +*Added in Mastodon 2.5.0* + +- `GET /api/v1/endorsements`: Returns an empty array, `[]` + +### Profile directory + +*Added in Mastodon 3.0.0* + +- `GET /api/v1/directory`: Returns HTTP 404 + +### Featured tags + +*Added in Mastodon 3.0.0* + +- `GET /api/v1/featured_tags`: Returns HTTP 404 diff --git a/docs/API/pleroma_api.md b/docs/API/pleroma_api.md index 70d4755b7..b7eee5192 100644 --- a/docs/API/pleroma_api.md +++ b/docs/API/pleroma_api.md @@ -450,18 +450,44 @@ The status posting endpoint takes an additional parameter, `in_reply_to_conversa * Response: JSON, list with updated files for updated pack (hashmap -> shortcode => filename) with status 200, either error status with error message. ## `GET /api/pleroma/emoji/packs` + ### Lists local custom emoji packs + * Method `GET` * Authentication: not required -* Params: None -* Response: JSON, "ok" and 200 status and the JSON hashmap of pack name to pack contents +* Params: + * `page`: page number for packs (default 1) + * `page_size`: page size for packs (default 50) +* Response: `packs` key with JSON hashmap of pack name to pack contents and `count` key for count of packs. + +```json +{ + "packs": { + "pack_name": {...}, // pack contents + ... + }, + "count": 0 // packs count +} +``` ## `GET /api/pleroma/emoji/packs/:name` + ### Get pack.json for the pack + * Method `GET` * Authentication: not required -* Params: None -* Response: JSON, pack json with `files` and `pack` keys with 200 status or 404 if the pack does not exist +* Params: + * `page`: page number for files (default 1) + * `page_size`: page size for files (default 30) +* Response: JSON, pack json with `files`, `files_count` and `pack` keys with 200 status or 404 if the pack does not exist. + +```json +{ + "files": {...}, + "files_count": 0, // emoji count in pack + "pack": {...} +} +``` ## `GET /api/pleroma/emoji/packs/:name/archive` ### Requests a local pack archive from the instance diff --git a/docs/administration/CLI_tasks/emoji.md b/docs/administration/CLI_tasks/emoji.md index 3d524a52b..ddcb7e62c 100644 --- a/docs/administration/CLI_tasks/emoji.md +++ b/docs/administration/CLI_tasks/emoji.md @@ -44,3 +44,11 @@ Currently, only .zip archives are recognized as remote pack files and packs are The manifest entry will either be written to a newly created `pack_name.json` file (pack name is asked in questions) or appended to the existing one, *replacing* the old pack with the same name if it was in the file previously. The file list will be written to the file specified previously, *replacing* that file. You _should_ check that the file list doesn't contain anything you don't need in the pack, that is, anything that is not an emoji (the whole pack is downloaded, but only emoji files are extracted). + +## Reload emoji packs + +```sh tab="OTP" +./bin/pleroma_ctl emoji reload +``` + +This command only works with OTP releases. diff --git a/docs/administration/CLI_tasks/user.md b/docs/administration/CLI_tasks/user.md index afeb8d52f..1e6f4a8b4 100644 --- a/docs/administration/CLI_tasks/user.md +++ b/docs/administration/CLI_tasks/user.md @@ -135,6 +135,16 @@ mix pleroma.user reset_password ``` +## Disable Multi Factor Authentication (MFA/2FA) for a user +```sh tab="OTP" + ./bin/pleroma_ctl user reset_mfa +``` + +```sh tab="From Source" +mix pleroma.user reset_mfa +``` + + ## Set the value of the given user's settings ```sh tab="OTP" ./bin/pleroma_ctl user set [option ...] diff --git a/docs/ap_extensions.md b/docs/ap_extensions.md new file mode 100644 index 000000000..c4550a1ac --- /dev/null +++ b/docs/ap_extensions.md @@ -0,0 +1,35 @@ +# ChatMessages + +ChatMessages are the messages sent in 1-on-1 chats. They are similar to +`Note`s, but the addresing is done by having a single AP actor in the `to` +field. Addressing multiple actors is not allowed. These messages are always +private, there is no public version of them. They are created with a `Create` +activity. + +Example: + +```json +{ + "actor": "http://2hu.gensokyo/users/raymoo", + "id": "http://2hu.gensokyo/objects/1", + "object": { + "attributedTo": "http://2hu.gensokyo/users/raymoo", + "content": "You expected a cute girl? Too bad.", + "id": "http://2hu.gensokyo/objects/2", + "published": "2020-02-12T14:08:20Z", + "to": [ + "http://2hu.gensokyo/users/marisa" + ], + "type": "ChatMessage" + }, + "published": "2018-02-12T14:08:20Z", + "to": [ + "http://2hu.gensokyo/users/marisa" + ], + "type": "Create" +} +``` + +This setup does not prevent multi-user chats, but these will have to go through +a `Group`, which will be the recipient of the messages and then `Announce` them +to the users in the `Group`. diff --git a/docs/clients.md b/docs/clients.md index 7f98dc7b1..ea751637e 100644 --- a/docs/clients.md +++ b/docs/clients.md @@ -42,6 +42,12 @@ Feel free to contact us to be added to this list! - Platforms: SailfishOS - Features: No Streaming +### Husky +- Source code: +- Contact: [@Husky@enigmatic.observer](https://enigmatic.observer/users/Husky) +- Platforms: Android +- Features: No Streaming, Emoji Reactions, Text Formatting, FE Stickers + ### Nekonium - Homepage: [F-Droid Repository](https://repo.gdgd.jp.net/), [Google Play](https://play.google.com/store/apps/details?id=com.apps.nekonium), [Amazon](https://www.amazon.co.jp/dp/B076FXPRBC/) - Source: diff --git a/docs/configuration/cheatsheet.md b/docs/configuration/cheatsheet.md index 505acb293..6759d5e93 100644 --- a/docs/configuration/cheatsheet.md +++ b/docs/configuration/cheatsheet.md @@ -36,30 +36,15 @@ To add configuration to your config file, you can copy it from the base config. * `federation_incoming_replies_max_depth`: Max. depth of reply-to activities fetching on incoming federation, to prevent out-of-memory situations while fetching very long threads. If set to `nil`, threads of any depth will be fetched. Lower this value if you experience out-of-memory crashes. * `federation_reachability_timeout_days`: Timeout (in days) of each external federation target being unreachable prior to pausing federating to it. * `allow_relay`: Enable Pleroma’s Relay, which makes it possible to follow a whole instance. -* `rewrite_policy`: Message Rewrite Policy, either one or a list. Here are the ones available by default: - * `Pleroma.Web.ActivityPub.MRF.NoOpPolicy`: Doesn’t modify activities (default). - * `Pleroma.Web.ActivityPub.MRF.DropPolicy`: Drops all activities. It generally doesn’t makes sense to use in production. - * `Pleroma.Web.ActivityPub.MRF.SimplePolicy`: Restrict the visibility of activities from certains instances (See [`:mrf_simple`](#mrf_simple)). - * `Pleroma.Web.ActivityPub.MRF.TagPolicy`: Applies policies to individual users based on tags, which can be set using pleroma-fe/admin-fe/any other app that supports Pleroma Admin API. For example it allows marking posts from individual users nsfw (sensitive). - * `Pleroma.Web.ActivityPub.MRF.SubchainPolicy`: Selectively runs other MRF policies when messages match (See [`:mrf_subchain`](#mrf_subchain)). - * `Pleroma.Web.ActivityPub.MRF.RejectNonPublic`: Drops posts with non-public visibility settings (See [`:mrf_rejectnonpublic`](#mrf_rejectnonpublic)). - * `Pleroma.Web.ActivityPub.MRF.EnsureRePrepended`: Rewrites posts to ensure that replies to posts with subjects do not have an identical subject and instead begin with re:. - * `Pleroma.Web.ActivityPub.MRF.AntiLinkSpamPolicy`: Rejects posts from likely spambots by rejecting posts from new users that contain links. - * `Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy`: Crawls attachments using their MediaProxy URLs so that the MediaProxy cache is primed. - * `Pleroma.Web.ActivityPub.MRF.MentionPolicy`: Drops posts mentioning configurable users. (See [`:mrf_mention`](#mrf_mention)). - * `Pleroma.Web.ActivityPub.MRF.VocabularyPolicy`: Restricts activities to a configured set of vocabulary. (See [`:mrf_vocabulary`](#mrf_vocabulary)). - * `Pleroma.Web.ActivityPub.MRF.ObjectAgePolicy`: Rejects or delists posts based on their age when received. (See [`:mrf_object_age`](#mrf_object_age)). -* `public`: Makes the client API in authentificated mode-only except for user-profiles. Useful for disabling the Local Timeline and The Whole Known Network. +* `public`: Makes the client API in authenticated mode-only except for user-profiles. Useful for disabling the Local Timeline and The Whole Known Network. * `quarantined_instances`: List of ActivityPub instances where private(DMs, followers-only) activities will not be send. * `managed_config`: Whenether the config for pleroma-fe is configured in [:frontend_configurations](#frontend_configurations) or in ``static/config.json``. * `allowed_post_formats`: MIME-type list of formats allowed to be posted (transformed into HTML). -* `mrf_transparency`: Make the content of your Message Rewrite Facility settings public (via nodeinfo). -* `mrf_transparency_exclusions`: Exclude specific instance names from MRF transparency. The use of the exclusions feature will be disclosed in nodeinfo as a boolean value. * `extended_nickname_format`: Set to `true` to use extended local nicknames format (allows underscores/dashes). This will break federation with older software for theses nicknames. * `max_pinned_statuses`: The maximum number of pinned statuses. `0` will disable the feature. * `autofollowed_nicknames`: Set to nicknames of (local) users that every new user should automatically follow. -* `no_attachment_links`: Set to true to disable automatically adding attachment link text to statuses. +* `attachment_links`: Set to true to enable automatically adding attachment link text to statuses. * `welcome_message`: A message that will be send to a newly registered users as a direct message. * `welcome_user_nickname`: The nickname of the local user that sends the welcome message. * `max_report_comment_size`: The maximum size of the report comment (Default: `1000`). @@ -77,11 +62,30 @@ To add configuration to your config file, you can copy it from the base config. * `external_user_synchronization`: Enabling following/followers counters synchronization for external users. * `cleanup_attachments`: Remove attachments along with statuses. Does not affect duplicate files and attachments without status. Enabling this will increase load to database when deleting statuses on larger instances. +## Message rewrite facility + +### :mrf +* `policies`: Message Rewrite Policy, either one or a list. Here are the ones available by default: + * `Pleroma.Web.ActivityPub.MRF.NoOpPolicy`: Doesn’t modify activities (default). + * `Pleroma.Web.ActivityPub.MRF.DropPolicy`: Drops all activities. It generally doesn’t makes sense to use in production. + * `Pleroma.Web.ActivityPub.MRF.SimplePolicy`: Restrict the visibility of activities from certains instances (See [`:mrf_simple`](#mrf_simple)). + * `Pleroma.Web.ActivityPub.MRF.TagPolicy`: Applies policies to individual users based on tags, which can be set using pleroma-fe/admin-fe/any other app that supports Pleroma Admin API. For example it allows marking posts from individual users nsfw (sensitive). + * `Pleroma.Web.ActivityPub.MRF.SubchainPolicy`: Selectively runs other MRF policies when messages match (See [`:mrf_subchain`](#mrf_subchain)). + * `Pleroma.Web.ActivityPub.MRF.RejectNonPublic`: Drops posts with non-public visibility settings (See [`:mrf_rejectnonpublic`](#mrf_rejectnonpublic)). + * `Pleroma.Web.ActivityPub.MRF.EnsureRePrepended`: Rewrites posts to ensure that replies to posts with subjects do not have an identical subject and instead begin with re:. + * `Pleroma.Web.ActivityPub.MRF.AntiLinkSpamPolicy`: Rejects posts from likely spambots by rejecting posts from new users that contain links. + * `Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy`: Crawls attachments using their MediaProxy URLs so that the MediaProxy cache is primed. + * `Pleroma.Web.ActivityPub.MRF.MentionPolicy`: Drops posts mentioning configurable users. (See [`:mrf_mention`](#mrf_mention)). + * `Pleroma.Web.ActivityPub.MRF.VocabularyPolicy`: Restricts activities to a configured set of vocabulary. (See [`:mrf_vocabulary`](#mrf_vocabulary)). + * `Pleroma.Web.ActivityPub.MRF.ObjectAgePolicy`: Rejects or delists posts based on their age when received. (See [`:mrf_object_age`](#mrf_object_age)). +* `transparency`: Make the content of your Message Rewrite Facility settings public (via nodeinfo). +* `transparency_exclusions`: Exclude specific instance names from MRF transparency. The use of the exclusions feature will be disclosed in nodeinfo as a boolean value. + ## Federation ### MRF policies !!! note - Configuring MRF policies is not enough for them to take effect. You have to enable them by specifying their module in `rewrite_policy` under [:instance](#instance) section. + Configuring MRF policies is not enough for them to take effect. You have to enable them by specifying their module in `policies` under [:mrf](#mrf) section. #### :mrf_simple * `media_removal`: List of instances to remove media from. @@ -137,8 +141,9 @@ their ActivityPub ID. An example: ```elixir -config :pleroma, :mrf_user_allowlist, - "example.org": ["https://example.org/users/admin"] +config :pleroma, :mrf_user_allowlist, %{ + "example.org" => ["https://example.org/users/admin"] +} ``` #### :mrf_object_age @@ -154,6 +159,10 @@ config :pleroma, :mrf_user_allowlist, * `rejected_shortcodes`: Regex-list of shortcodes to reject * `size_limit`: File size limit (in bytes), checked before an emoji is saved to the disk +#### :mrf_activity_expiration + +* `days`: Default global expiration time for all local Create activities (in days) + ### :activitypub * `unfollow_blocked`: Whether blocks result in people getting unfollowed * `outgoing_blocks`: Whether to federate blocks to other instances @@ -262,7 +271,7 @@ This section describe PWA manifest instance-specific values. Currently this opti #### Pleroma.Web.MediaProxy.Invalidation.Script -This strategy allow perform external bash script to purge cache. +This strategy allow perform external shell script to purge cache. Urls of attachments pass to script as arguments. * `script_path`: path to external script. @@ -278,8 +287,8 @@ config :pleroma, Pleroma.Web.MediaProxy.Invalidation.Script, This strategy allow perform custom http request to purge cache. * `method`: http method. default is `purge` -* `headers`: http headers. default is empty -* `options`: request options. default is empty +* `headers`: http headers. +* `options`: request options. Example: ```elixir @@ -963,13 +972,13 @@ config :pleroma, :database_config_whitelist, [ Restrict access for unauthenticated users to timelines (public and federate), user profiles and statuses. -* `timelines` - public and federated timelines - * `local` - public timeline +* `timelines`: public and federated timelines + * `local`: public timeline * `federated` -* `profiles` - user profiles +* `profiles`: user profiles * `local` * `remote` -* `activities` - statuses +* `activities`: statuses * `local` * `remote` diff --git a/docs/configuration/howto_theming_your_instance.md b/docs/configuration/howto_theming_your_instance.md index d0daf5b25..cfa00f538 100644 --- a/docs/configuration/howto_theming_your_instance.md +++ b/docs/configuration/howto_theming_your_instance.md @@ -60,7 +60,7 @@ Example of `my-awesome-theme.json` where we add the name "My Awesome Theme" ### Set as default theme -Now we can set the new theme as default in the [Pleroma FE configuration](General-tips-for-customizing-Pleroma-FE.md). +Now we can set the new theme as default in the [Pleroma FE configuration](../../../frontend/CONFIGURATION). Example of adding the new theme in the back-end config files ```elixir diff --git a/docs/configuration/mrf.md b/docs/configuration/mrf.md index d48d0cc99..31c66e098 100644 --- a/docs/configuration/mrf.md +++ b/docs/configuration/mrf.md @@ -34,9 +34,9 @@ config :pleroma, :instance, To use `SimplePolicy`, you must enable it. Do so by adding the following to your `:instance` config object, so that it looks like this: ```elixir -config :pleroma, :instance, +config :pleroma, :mrf, [...] - rewrite_policy: Pleroma.Web.ActivityPub.MRF.SimplePolicy + policies: Pleroma.Web.ActivityPub.MRF.SimplePolicy ``` Once `SimplePolicy` is enabled, you can configure various groups in the `:mrf_simple` config object. These groups are: @@ -58,8 +58,8 @@ Servers should be configured as lists. This example will enable `SimplePolicy`, block media from `illegalporn.biz`, mark media as NSFW from `porn.biz` and `porn.business`, reject messages from `spam.com`, remove messages from `spam.university` from the federated timeline and block reports (flags) from `whiny.whiner`: ```elixir -config :pleroma, :instance, - rewrite_policy: [Pleroma.Web.ActivityPub.MRF.SimplePolicy] +config :pleroma, :mrf, + policies: [Pleroma.Web.ActivityPub.MRF.SimplePolicy] config :pleroma, :mrf_simple, media_removal: ["illegalporn.biz"], @@ -75,7 +75,7 @@ The effects of MRF policies can be very drastic. It is important to use this fun ## Writing your own MRF Policy -As discussed above, the MRF system is a modular system that supports pluggable policies. This means that an admin may write a custom MRF policy in Elixir or any other language that runs on the Erlang VM, by specifying the module name in the `rewrite_policy` config setting. +As discussed above, the MRF system is a modular system that supports pluggable policies. This means that an admin may write a custom MRF policy in Elixir or any other language that runs on the Erlang VM, by specifying the module name in the `policies` config setting. For example, here is a sample policy module which rewrites all messages to "new message content": @@ -125,8 +125,8 @@ end If you save this file as `lib/pleroma/web/activity_pub/mrf/rewrite_policy.ex`, it will be included when you next rebuild Pleroma. You can enable it in the configuration like so: ```elixir -config :pleroma, :instance, - rewrite_policy: [ +config :pleroma, :mrf, + policies: [ Pleroma.Web.ActivityPub.MRF.SimplePolicy, Pleroma.Web.ActivityPub.MRF.RewritePolicy ] diff --git a/docs/configuration/storing_remote_media.md b/docs/configuration/storing_remote_media.md index 7e91fe7d9..c01985d25 100644 --- a/docs/configuration/storing_remote_media.md +++ b/docs/configuration/storing_remote_media.md @@ -33,6 +33,6 @@ as soon as the post is received by your instance. Add to your `prod.secret.exs`: ``` -config :pleroma, :instance, - rewrite_policy: [Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy] +config :pleroma, :mrf, + policies: [Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy] ``` diff --git a/docs/dev.md b/docs/dev.md index f1b4cbf8b..9c749c17c 100644 --- a/docs/dev.md +++ b/docs/dev.md @@ -20,4 +20,4 @@ This document contains notes and guidelines for Pleroma developers. ## Auth-related configuration, OAuth consumer mode etc. -See `Authentication` section of [`docs/configuration/cheatsheet.md`](docs/configuration/cheatsheet.md#authentication). +See `Authentication` section of [the configuration cheatsheet](configuration/cheatsheet.md#authentication). diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 000000000..1a90d0a8d --- /dev/null +++ b/docs/index.md @@ -0,0 +1,26 @@ +# Introduction to Pleroma +## What is Pleroma? +Pleroma is a federated social networking platform, compatible with Mastodon and other ActivityPub implementations. It is free software licensed under the AGPLv3. +It actually consists of two components: a backend, named simply Pleroma, and a user-facing frontend, named Pleroma-FE. It also includes the Mastodon frontend, if that's your thing. +It's part of what we call the fediverse, a federated network of instances which speak common protocols and can communicate with each other. +One account on an instance is enough to talk to the entire fediverse! + +## How can I use it? + +Pleroma instances are already widely deployed, a list can be found at and . + +If you don't feel like joining an existing instance, but instead prefer to deploy your own instance, that's easy too! +Installation instructions can be found in the installation section of these docs. + +## I got an account, now what? +Great! Now you can explore the fediverse! Open the login page for your Pleroma instance (e.g. ) and login with your username and password. (If you don't have an account yet, click on Register) + +### Pleroma-FE +The default front-end used by Pleroma is Pleroma-FE. You can find more information on what it is and how to use it in the [Introduction to Pleroma-FE](../frontend). + +### Mastodon interface +If the Pleroma interface isn't your thing, or you're just trying something new but you want to keep using the familiar Mastodon interface, we got that too! +Just add a "/web" after your instance url (e.g. ) and you'll end on the Mastodon web interface, but with a Pleroma backend! MAGIC! +The Mastodon interface is from the Glitch-soc fork. For more information on the Mastodon interface you can check the [Mastodon](https://docs.joinmastodon.org/) and [Glitch-soc](https://glitch-soc.github.io/docs/) documentation. + +Remember, what you see is only the frontend part of Mastodon, the backend is still Pleroma. diff --git a/docs/installation/alpine_linux_en.md b/docs/installation/alpine_linux_en.md index 2a9b8f6ff..c726d559f 100644 --- a/docs/installation/alpine_linux_en.md +++ b/docs/installation/alpine_linux_en.md @@ -225,10 +225,7 @@ sudo -Hu pleroma MIX_ENV=prod mix pleroma.user new + +#### Further reading + +{! backend/installation/further_reading.include !} + +## Questions + +Questions about the installation or didn’t it work as it should be, ask in [#pleroma:matrix.org](https://matrix.heldscal.la/#/room/#freenode_#pleroma:matrix.org) or IRC Channel **#pleroma** on **Freenode**. diff --git a/docs/installation/openbsd_en.md b/docs/installation/openbsd_en.md index e8c5d844c..5dbe24f75 100644 --- a/docs/installation/openbsd_en.md +++ b/docs/installation/openbsd_en.md @@ -242,3 +242,11 @@ If your instance is up and running, you can create your first user with administ ``` LC_ALL=en_US.UTF-8 MIX_ENV=prod mix pleroma.user new --admin ``` + +#### Further reading + +{! backend/installation/further_reading.include !} + +## Questions + +Questions about the installation or didn’t it work as it should be, ask in [#pleroma:matrix.org](https://matrix.heldscal.la/#/room/#freenode_#pleroma:matrix.org) or IRC Channel **#pleroma** on **Freenode**. diff --git a/docs/installation/otp_en.md b/docs/installation/otp_en.md index 86135cd20..e4f822d1c 100644 --- a/docs/installation/otp_en.md +++ b/docs/installation/otp_en.md @@ -270,10 +270,7 @@ This will create an account withe the username of 'joeuser' with the email addre ## Further reading -* [Backup your instance](../administration/backup.md) -* [Hardening your instance](../configuration/hardening.md) -* [How to activate mediaproxy](../configuration/howto_mediaproxy.md) -* [Updating your instance](../administration/updating.md) +{! backend/installation/further_reading.include !} ## Questions diff --git a/docs/introduction.md b/docs/introduction.md deleted file mode 100644 index a915c143c..000000000 --- a/docs/introduction.md +++ /dev/null @@ -1,65 +0,0 @@ -# Introduction to Pleroma -## What is Pleroma? -Pleroma is a federated social networking platform, compatible with GNU social, Mastodon and other OStatus and ActivityPub implementations. It is free software licensed under the AGPLv3. -It actually consists of two components: a backend, named simply Pleroma, and a user-facing frontend, named Pleroma-FE. It also includes the Mastodon frontend, if that's your thing. -It's part of what we call the fediverse, a federated network of instances which speak common protocols and can communicate with each other. -One account on an instance is enough to talk to the entire fediverse! - -## How can I use it? - -Pleroma instances are already widely deployed, a list can be found at . Information on all existing fediverse instances can be found at . - -If you don't feel like joining an existing instance, but instead prefer to deploy your own instance, that's easy too! -Installation instructions can be found in the installation section of these docs. - -## I got an account, now what? -Great! Now you can explore the fediverse! Open the login page for your Pleroma instance (e.g. ) and login with your username and password. (If you don't have an account yet, click on Register) - -At this point you will have two columns in front of you. - -### Left column - -- first block: here you can see your avatar, your nickname and statistics (Statuses, Following, Followers). Clicking your profile pic will open your profile. -Under that you have a text form which allows you to post new statuses. The number on the bottom of the text form is a character counter, every instance can have a different character limit (the default is 5000). -If you want to mention someone, type @ + name of the person. A drop-down menu will help you in finding the right person. -Under the text form there are also several visibility options and there is the option to use rich text. -Under that the icon on the left is for uploading media files and attach them to your post. There is also an emoji-picker and an option to post a poll. -To post your status, simply press Submit. -On the top right you will also see a wrench icon. This opens your personal settings. - -- second block: Here you can switch between the different timelines: - - Timeline: all the people that you follow - - Interactions: here you can switch between different timelines where there was interaction with your account. There is Mentions, Repeats and Favorites, and New follows - - Direct Messages: these are the Direct Messages sent to you - - Public Timeline: all the statutes from the local instance - - The Whole Known Network: all public posts the instance knows about, both local and remote! - - About: This isn't a Timeline but shows relevant info about the instance. You can find a list of the moderators and admins, Terms of Service, MRF policies and enabled features. -- Optional third block: This is the Instance panel that can be activated, but is deactivated by default. It's fully customisable and by default has links to the pleroma-fe and Mastodon-fe. -- fourth block: This is the Notifications block, here you will get notified whenever somebody mentions you, follows you, repeats or favorites one of your statuses. - -### Right column -This is where the interesting stuff happens! -Depending on the timeline you will see different statuses, but each status has a standard structure: - -- Profile pic, name and link to profile. An optional left-arrow if it's a reply to another status (hovering will reveal the reply-to status). Clicking on the profile pic will uncollapse the user's profile. -- A `+` button on the right allows you to Expand/Collapse an entire discussion thread. It also updates in realtime! -- An arrow icon allows you to open the status on the instance where it's originating from. -- The text of the status, including mentions and attachements. If you click on a mention, it will automatically open the profile page of that person. -- Three buttons (left to right): Reply, Repeat, Favorite. There is also a forth button, this is a dropdown menu for simple moderation like muting the conversation or, if you have moderation rights, delete the status from the server. - -### Top right - -- The magnifier icon opens the search screen where you can search for statuses, people and hashtags. It's also possible to import statusses from remote servers by pasting the url to the post in the search field. -- The gear icon gives you general settings -- If you have admin rights, you'll see an icon that opens the admin interface -- The last icon is to log out - -### Bottom right -On the bottom right you have a chatbox. Here you can communicate with people on the same instance in realtime. It is local-only, for now, but there are plans to make it extendable to the entire fediverse! - -### Mastodon interface -If the Pleroma interface isn't your thing, or you're just trying something new but you want to keep using the familiar Mastodon interface, we got that too! -Just add a "/web" after your instance url (e.g. ) and you'll end on the Mastodon web interface, but with a Pleroma backend! MAGIC! -The Mastodon interface is from the Glitch-soc fork. For more information on the Mastodon interface you can check the [Mastodon](https://docs.joinmastodon.org/) and [Glitch-soc](https://glitch-soc.github.io/docs/) documentation. - -Remember, what you see is only the frontend part of Mastodon, the backend is still Pleroma. diff --git a/elixir_buildpack.config b/elixir_buildpack.config index c23b08fb8..946408c12 100644 --- a/elixir_buildpack.config +++ b/elixir_buildpack.config @@ -1,2 +1,2 @@ -elixir_version=1.8.2 -erlang_version=21.3.7 +elixir_version=1.9.4 +erlang_version=22.3.4.1 diff --git a/installation/nginx-cache-purge.sh.example b/installation/nginx-cache-purge.sh.example index b2915321c..5f6cbb128 100755 --- a/installation/nginx-cache-purge.sh.example +++ b/installation/nginx-cache-purge.sh.example @@ -13,7 +13,7 @@ CACHE_DIRECTORY="/tmp/pleroma-media-cache" ## $3 - (optional) the number of parallel processes to run for grep. get_cache_files() { local max_parallel=${3-16} - find $2 -maxdepth 2 -type d | xargs -P $max_parallel -n 1 grep -E Rl "^KEY:.*$1" | sort -u + find $2 -maxdepth 2 -type d | xargs -P $max_parallel -n 1 grep -E -Rl "^KEY:.*$1" | sort -u } ## Removes an item from the given cache zone. @@ -37,4 +37,4 @@ purge() { } -purge $1 +purge $@ diff --git a/installation/pleroma.nginx b/installation/pleroma.nginx index 688be3e71..d301ca615 100644 --- a/installation/pleroma.nginx +++ b/installation/pleroma.nginx @@ -37,18 +37,17 @@ server { listen 443 ssl http2; listen [::]:443 ssl http2; - ssl_session_timeout 5m; + ssl_session_timeout 1d; + ssl_session_cache shared:MozSSL:10m; # about 40000 sessions + ssl_session_tickets off; ssl_trusted_certificate /etc/letsencrypt/live/example.tld/chain.pem; ssl_certificate /etc/letsencrypt/live/example.tld/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.tld/privkey.pem; - # Add TLSv1.0 to support older devices - ssl_protocols TLSv1.2; - # Uncomment line below if you want to support older devices (Before Android 4.4.2, IE 8, etc.) - # ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES"; + ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4"; - ssl_prefer_server_ciphers on; + ssl_prefer_server_ciphers off; # In case of an old server with an OpenSSL version of 1.0.2 or below, # leave only prime256v1 or comment out the following line. ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; diff --git a/lib/mix/tasks/pleroma/config.ex b/lib/mix/tasks/pleroma/config.ex index 5c9ef6904..d5129d410 100644 --- a/lib/mix/tasks/pleroma/config.ex +++ b/lib/mix/tasks/pleroma/config.ex @@ -52,6 +52,7 @@ def migrate_to_db(file_path \\ nil) do defp do_migrate_to_db(config_file) do if File.exists?(config_file) do + shell_info("Migrating settings from file: #{Path.expand(config_file)}") Ecto.Adapters.SQL.query!(Repo, "TRUNCATE config;") Ecto.Adapters.SQL.query!(Repo, "ALTER SEQUENCE config_id_seq RESTART;") @@ -72,8 +73,7 @@ defp create(group, settings) do group |> Pleroma.Config.Loader.filter_group(settings) |> Enum.each(fn {key, value} -> - key = inspect(key) - {:ok, _} = ConfigDB.update_or_create(%{group: inspect(group), key: key, value: value}) + {:ok, _} = ConfigDB.update_or_create(%{group: group, key: key, value: value}) shell_info("Settings for key #{key} migrated.") end) @@ -131,12 +131,9 @@ defp write_and_delete(config, file, delete?) do end defp write(config, file) do - value = - config.value - |> ConfigDB.from_binary() - |> inspect(limit: :infinity) + value = inspect(config.value, limit: :infinity) - IO.write(file, "config #{config.group}, #{config.key}, #{value}\r\n\r\n") + IO.write(file, "config #{inspect(config.group)}, #{inspect(config.key)}, #{value}\r\n\r\n") config end diff --git a/lib/mix/tasks/pleroma/emoji.ex b/lib/mix/tasks/pleroma/emoji.ex index 29a5fa99c..f4eaeac98 100644 --- a/lib/mix/tasks/pleroma/emoji.ex +++ b/lib/mix/tasks/pleroma/emoji.ex @@ -237,6 +237,12 @@ def run(["gen-pack" | args]) do end end + def run(["reload"]) do + start_pleroma() + Pleroma.Emoji.reload() + IO.puts("Emoji packs have been reloaded.") + end + defp fetch_and_decode(from) do with {:ok, json} <- fetch(from) do Jason.decode!(json) diff --git a/lib/mix/tasks/pleroma/refresh_counter_cache.ex b/lib/mix/tasks/pleroma/refresh_counter_cache.ex index 15b4dbfa6..efcbaa3b1 100644 --- a/lib/mix/tasks/pleroma/refresh_counter_cache.ex +++ b/lib/mix/tasks/pleroma/refresh_counter_cache.ex @@ -17,30 +17,53 @@ defmodule Mix.Tasks.Pleroma.RefreshCounterCache do def run([]) do Mix.Pleroma.start_pleroma() - ["public", "unlisted", "private", "direct"] - |> Enum.each(fn visibility -> - count = status_visibility_count_query(visibility) - name = "status_visibility_#{visibility}" - CounterCache.set(name, count) - Mix.Pleroma.shell_info("Set #{name} to #{count}") + instances = + Activity + |> distinct([a], true) + |> select([a], fragment("split_part(?, '/', 3)", a.actor)) + |> Repo.all() + + instances + |> Enum.with_index(1) + |> Enum.each(fn {instance, i} -> + counters = instance_counters(instance) + CounterCache.set(instance, counters) + + Mix.Pleroma.shell_info( + "[#{i}/#{length(instances)}] Setting #{instance} counters: #{inspect(counters)}" + ) end) Mix.Pleroma.shell_info("Done") end - defp status_visibility_count_query(visibility) do + defp instance_counters(instance) do + counters = %{"public" => 0, "unlisted" => 0, "private" => 0, "direct" => 0} + Activity - |> where( + |> where([a], fragment("(? ->> 'type'::text) = 'Create'", a.data)) + |> where([a], fragment("split_part(?, '/', 3) = ?", a.actor, ^instance)) + |> select( + [a], + {fragment( + "activity_visibility(?, ?, ?)", + a.actor, + a.recipients, + a.data + ), count(a.id)} + ) + |> group_by( [a], fragment( - "activity_visibility(?, ?, ?) = ?", + "activity_visibility(?, ?, ?)", a.actor, a.recipients, - a.data, - ^visibility + a.data ) ) - |> where([a], fragment("(? ->> 'type'::text) = 'Create'", a.data)) - |> Repo.aggregate(:count, :id, timeout: :timer.minutes(30)) + |> Repo.all(timeout: :timer.minutes(30)) + |> Enum.reduce(counters, fn {visibility, count}, acc -> + Map.put(acc, visibility, count) + end) end end diff --git a/lib/mix/tasks/pleroma/user.ex b/lib/mix/tasks/pleroma/user.ex index 3635c02bc..bca7e87bf 100644 --- a/lib/mix/tasks/pleroma/user.ex +++ b/lib/mix/tasks/pleroma/user.ex @@ -144,6 +144,18 @@ def run(["reset_password", nickname]) do end end + def run(["reset_mfa", nickname]) do + start_pleroma() + + with %User{local: true} = user <- User.get_cached_by_nickname(nickname), + {:ok, _token} <- Pleroma.MFA.disable(user) do + shell_info("Multi-Factor Authentication disabled for #{user.nickname}") + else + _ -> + shell_error("No local user #{nickname}") + end + end + def run(["deactivate", nickname]) do start_pleroma() diff --git a/lib/pleroma/activity.ex b/lib/pleroma/activity.ex index 6213d0eb7..c3cea8d2a 100644 --- a/lib/pleroma/activity.ex +++ b/lib/pleroma/activity.ex @@ -24,16 +24,6 @@ defmodule Pleroma.Activity do @primary_key {:id, FlakeId.Ecto.CompatType, autogenerate: true} - # https://github.com/tootsuite/mastodon/blob/master/app/models/notification.rb#L19 - @mastodon_notification_types %{ - "Create" => "mention", - "Follow" => ["follow", "follow_request"], - "Announce" => "reblog", - "Like" => "favourite", - "Move" => "move", - "EmojiReact" => "pleroma:emoji_reaction" - } - schema "activities" do field(:data, :map) field(:local, :boolean, default: true) @@ -41,6 +31,10 @@ defmodule Pleroma.Activity do field(:recipients, {:array, :string}, default: []) field(:thread_muted?, :boolean, virtual: true) + # A field that can be used if you need to join some kind of other + # id to order / paginate this field by + field(:pagination_id, :string, virtual: true) + # This is a fake relation, # do not use outside of with_preloaded_user_actor/with_joined_user_actor has_one(:user_actor, User, on_delete: :nothing, foreign_key: :id) @@ -300,32 +294,6 @@ def follow_accepted?( def follow_accepted?(_), do: false - @spec mastodon_notification_type(Activity.t()) :: String.t() | nil - - for {ap_type, type} <- @mastodon_notification_types, not is_list(type) do - def mastodon_notification_type(%Activity{data: %{"type" => unquote(ap_type)}}), - do: unquote(type) - end - - def mastodon_notification_type(%Activity{data: %{"type" => "Follow"}} = activity) do - if follow_accepted?(activity) do - "follow" - else - "follow_request" - end - end - - def mastodon_notification_type(%Activity{}), do: nil - - @spec from_mastodon_notification_type(String.t()) :: String.t() | nil - @doc "Converts Mastodon notification type to AR activity type" - def from_mastodon_notification_type(type) do - with {k, _v} <- - Enum.find(@mastodon_notification_types, fn {_k, v} -> type in List.wrap(v) end) do - k - end - end - def all_by_actor_and_id(actor, status_ids \\ []) def all_by_actor_and_id(_actor, []), do: [] diff --git a/lib/pleroma/application.ex b/lib/pleroma/application.ex index 9d3d92b38..9615af122 100644 --- a/lib/pleroma/application.ex +++ b/lib/pleroma/application.ex @@ -39,7 +39,7 @@ def start(_type, _args) do Pleroma.HTML.compile_scrubbers() Config.DeprecationWarnings.warn() Pleroma.Plugs.HTTPSecurityPlug.warn_if_disabled() - Pleroma.Repo.check_migrations_applied!() + Pleroma.ApplicationRequirements.verify!() setup_instrumenters() load_custom_modules() @@ -148,7 +148,8 @@ defp cachex_children do build_cachex("idempotency", expiration: idempotency_expiration(), limit: 2500), build_cachex("web_resp", limit: 2500), build_cachex("emoji_packs", expiration: emoji_packs_expiration(), limit: 10), - build_cachex("failed_proxy_url", limit: 2500) + build_cachex("failed_proxy_url", limit: 2500), + build_cachex("banned_urls", default_ttl: :timer.hours(24 * 30), limit: 5_000) ] end diff --git a/lib/pleroma/application_requirements.ex b/lib/pleroma/application_requirements.ex new file mode 100644 index 000000000..88575a498 --- /dev/null +++ b/lib/pleroma/application_requirements.ex @@ -0,0 +1,107 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.ApplicationRequirements do + @moduledoc """ + The module represents the collection of validations to runs before start server. + """ + + defmodule VerifyError, do: defexception([:message]) + + import Ecto.Query + + require Logger + + @spec verify!() :: :ok | VerifyError.t() + def verify! do + :ok + |> check_migrations_applied!() + |> check_rum!() + |> handle_result() + end + + defp handle_result(:ok), do: :ok + defp handle_result({:error, message}), do: raise(VerifyError, message: message) + + # Checks for pending migrations. + # + def check_migrations_applied!(:ok) do + unless Pleroma.Config.get( + [:i_am_aware_this_may_cause_data_loss, :disable_migration_check], + false + ) do + {_, res, _} = + Ecto.Migrator.with_repo(Pleroma.Repo, fn repo -> + down_migrations = + Ecto.Migrator.migrations(repo) + |> Enum.reject(fn + {:up, _, _} -> true + {:down, _, _} -> false + end) + + if length(down_migrations) > 0 do + down_migrations_text = + Enum.map(down_migrations, fn {:down, id, name} -> "- #{name} (#{id})\n" end) + + Logger.error( + "The following migrations were not applied:\n#{down_migrations_text}If you want to start Pleroma anyway, set\nconfig :pleroma, :i_am_aware_this_may_cause_data_loss, disable_migration_check: true" + ) + + {:error, "Unapplied Migrations detected"} + else + :ok + end + end) + + res + else + :ok + end + end + + def check_migrations_applied!(result), do: result + + # Checks for settings of RUM indexes. + # + defp check_rum!(:ok) do + {_, res, _} = + Ecto.Migrator.with_repo(Pleroma.Repo, fn repo -> + migrate = + from(o in "columns", + where: o.table_name == "objects", + where: o.column_name == "fts_content" + ) + |> repo.exists?(prefix: "information_schema") + + setting = Pleroma.Config.get([:database, :rum_enabled], false) + + do_check_rum!(setting, migrate) + end) + + res + end + + defp check_rum!(result), do: result + + defp do_check_rum!(setting, migrate) do + case {setting, migrate} do + {true, false} -> + Logger.error( + "Use `RUM` index is enabled, but were not applied migrations for it.\nIf you want to start Pleroma anyway, set\nconfig :pleroma, :database, rum_enabled: false\nOtherwise apply the following migrations:\n`mix ecto.migrate --migrations-path priv/repo/optional_migrations/rum_indexing/`" + ) + + {:error, "Unapplied RUM Migrations detected"} + + {false, true} -> + Logger.error( + "Detected applied migrations to use `RUM` index, but `RUM` isn't enable in settings.\nIf you want to use `RUM`, set\nconfig :pleroma, :database, rum_enabled: true\nOtherwise roll `RUM` migrations back.\n`mix ecto.rollback --migrations-path priv/repo/optional_migrations/rum_indexing/`" + ) + + {:error, "RUM Migrations detected"} + + _ -> + :ok + end + end +end diff --git a/lib/pleroma/bbs/handler.ex b/lib/pleroma/bbs/handler.ex index 12d64c2fe..cd523cf7d 100644 --- a/lib/pleroma/bbs/handler.ex +++ b/lib/pleroma/bbs/handler.ex @@ -92,10 +92,10 @@ def handle_command(state, "home") do params = %{} - |> Map.put("type", ["Create"]) - |> Map.put("blocking_user", user) - |> Map.put("muting_user", user) - |> Map.put("user", user) + |> Map.put(:type, ["Create"]) + |> Map.put(:blocking_user, user) + |> Map.put(:muting_user, user) + |> Map.put(:user, user) activities = [user.ap_id | Pleroma.User.following(user)] diff --git a/lib/pleroma/chat.ex b/lib/pleroma/chat.ex new file mode 100644 index 000000000..24a86371e --- /dev/null +++ b/lib/pleroma/chat.ex @@ -0,0 +1,72 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Chat do + use Ecto.Schema + + import Ecto.Changeset + + alias Pleroma.Repo + alias Pleroma.User + + @moduledoc """ + Chat keeps a reference to ChatMessage conversations between a user and an recipient. The recipient can be a user (for now) or a group (not implemented yet). + + It is a helper only, to make it easy to display a list of chats with other people, ordered by last bump. The actual messages are retrieved by querying the recipients of the ChatMessages. + """ + + @primary_key {:id, FlakeId.Ecto.CompatType, autogenerate: true} + + schema "chats" do + belongs_to(:user, User, type: FlakeId.Ecto.CompatType) + field(:recipient, :string) + + timestamps() + end + + def changeset(struct, params) do + struct + |> cast(params, [:user_id, :recipient]) + |> validate_change(:recipient, fn + :recipient, recipient -> + case User.get_cached_by_ap_id(recipient) do + nil -> [recipient: "must be an existing user"] + _ -> [] + end + end) + |> validate_required([:user_id, :recipient]) + |> unique_constraint(:user_id, name: :chats_user_id_recipient_index) + end + + def get_by_id(id) do + __MODULE__ + |> Repo.get(id) + end + + def get(user_id, recipient) do + __MODULE__ + |> Repo.get_by(user_id: user_id, recipient: recipient) + end + + def get_or_create(user_id, recipient) do + %__MODULE__{} + |> changeset(%{user_id: user_id, recipient: recipient}) + |> Repo.insert( + # Need to set something, otherwise we get nothing back at all + on_conflict: [set: [recipient: recipient]], + returning: true, + conflict_target: [:user_id, :recipient] + ) + end + + def bump_or_create(user_id, recipient) do + %__MODULE__{} + |> changeset(%{user_id: user_id, recipient: recipient}) + |> Repo.insert( + on_conflict: [set: [updated_at: NaiveDateTime.utc_now()]], + returning: true, + conflict_target: [:user_id, :recipient] + ) + end +end diff --git a/lib/pleroma/chat/message_reference.ex b/lib/pleroma/chat/message_reference.ex new file mode 100644 index 000000000..131ae0186 --- /dev/null +++ b/lib/pleroma/chat/message_reference.ex @@ -0,0 +1,117 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Chat.MessageReference do + @moduledoc """ + A reference that builds a relation between an AP chat message that a user can see and whether it has been seen + by them, or should be displayed to them. Used to build the chat view that is presented to the user. + """ + + use Ecto.Schema + + alias Pleroma.Chat + alias Pleroma.Object + alias Pleroma.Repo + + import Ecto.Changeset + import Ecto.Query + + @primary_key {:id, FlakeId.Ecto.Type, autogenerate: true} + + schema "chat_message_references" do + belongs_to(:object, Object) + belongs_to(:chat, Chat, type: FlakeId.Ecto.CompatType) + + field(:unread, :boolean, default: true) + + timestamps() + end + + def changeset(struct, params) do + struct + |> cast(params, [:object_id, :chat_id, :unread]) + |> validate_required([:object_id, :chat_id, :unread]) + end + + def get_by_id(id) do + __MODULE__ + |> Repo.get(id) + |> Repo.preload(:object) + end + + def delete(cm_ref) do + cm_ref + |> Repo.delete() + end + + def delete_for_object(%{id: object_id}) do + from(cr in __MODULE__, + where: cr.object_id == ^object_id + ) + |> Repo.delete_all() + end + + def for_chat_and_object(%{id: chat_id}, %{id: object_id}) do + __MODULE__ + |> Repo.get_by(chat_id: chat_id, object_id: object_id) + |> Repo.preload(:object) + end + + def for_chat_query(chat) do + from(cr in __MODULE__, + where: cr.chat_id == ^chat.id, + order_by: [desc: :id], + preload: [:object] + ) + end + + def last_message_for_chat(chat) do + chat + |> for_chat_query() + |> limit(1) + |> Repo.one() + end + + def create(chat, object, unread) do + params = %{ + chat_id: chat.id, + object_id: object.id, + unread: unread + } + + %__MODULE__{} + |> changeset(params) + |> Repo.insert() + end + + def unread_count_for_chat(chat) do + chat + |> for_chat_query() + |> where([cmr], cmr.unread == true) + |> Repo.aggregate(:count) + end + + def mark_as_read(cm_ref) do + cm_ref + |> changeset(%{unread: false}) + |> Repo.update() + end + + def set_all_seen_for_chat(chat, last_read_id \\ nil) do + query = + chat + |> for_chat_query() + |> exclude(:order_by) + |> exclude(:preload) + |> where([cmr], cmr.unread == true) + + if last_read_id do + query + |> where([cmr], cmr.id <= ^last_read_id) + else + query + end + |> Repo.update_all(set: [unread: false]) + end +end diff --git a/lib/pleroma/config/config_db.ex b/lib/pleroma/config/config_db.ex index 2b43d4c36..1a89d8895 100644 --- a/lib/pleroma/config/config_db.ex +++ b/lib/pleroma/config/config_db.ex @@ -6,7 +6,7 @@ defmodule Pleroma.ConfigDB do use Ecto.Schema import Ecto.Changeset - import Ecto.Query + import Ecto.Query, only: [select: 3] import Pleroma.Web.Gettext alias __MODULE__ @@ -14,16 +14,6 @@ defmodule Pleroma.ConfigDB do @type t :: %__MODULE__{} - @full_key_update [ - {:pleroma, :ecto_repos}, - {:quack, :meta}, - {:mime, :types}, - {:cors_plug, [:max_age, :methods, :expose, :headers]}, - {:auto_linker, :opts}, - {:swarm, :node_blacklist}, - {:logger, :backends} - ] - @full_subkey_update [ {:pleroma, :assets, :mascots}, {:pleroma, :emoji, :groups}, @@ -32,14 +22,10 @@ defmodule Pleroma.ConfigDB do {:pleroma, :mrf_keyword, :replace} ] - @regex ~r/^~r(?'delimiter'[\/|"'([{<]{1})(?'pattern'.+)[\/|"')\]}>]{1}(?'modifier'[uismxfU]*)/u - - @delimiters ["/", "|", "\"", "'", {"(", ")"}, {"[", "]"}, {"{", "}"}, {"<", ">"}] - schema "config" do - field(:key, :string) - field(:group, :string) - field(:value, :binary) + field(:key, Pleroma.EctoType.Config.Atom) + field(:group, Pleroma.EctoType.Config.Atom) + field(:value, Pleroma.EctoType.Config.BinaryValue) field(:db, {:array, :string}, virtual: true, default: []) timestamps() @@ -51,10 +37,6 @@ def get_all_as_keyword do |> select([c], {c.group, c.key, c.value}) |> Repo.all() |> Enum.reduce([], fn {group, key, value}, acc -> - group = ConfigDB.from_string(group) - key = ConfigDB.from_string(key) - value = from_binary(value) - Keyword.update(acc, group, [{key, value}], &Keyword.merge(&1, [{key, value}])) end) end @@ -64,50 +46,41 @@ def get_by_params(params), do: Repo.get_by(ConfigDB, params) @spec changeset(ConfigDB.t(), map()) :: Changeset.t() def changeset(config, params \\ %{}) do - params = Map.put(params, :value, transform(params[:value])) - config |> cast(params, [:key, :group, :value]) |> validate_required([:key, :group, :value]) |> unique_constraint(:key, name: :config_group_key_index) end - @spec create(map()) :: {:ok, ConfigDB.t()} | {:error, Changeset.t()} - def create(params) do + defp create(params) do %ConfigDB{} |> changeset(params) |> Repo.insert() end - @spec update(ConfigDB.t(), map()) :: {:ok, ConfigDB.t()} | {:error, Changeset.t()} - def update(%ConfigDB{} = config, %{value: value}) do + defp update(%ConfigDB{} = config, %{value: value}) do config |> changeset(%{value: value}) |> Repo.update() end - @spec get_db_keys(ConfigDB.t()) :: [String.t()] - def get_db_keys(%ConfigDB{} = config) do - config.value - |> ConfigDB.from_binary() - |> get_db_keys(config.key) - end - @spec get_db_keys(keyword(), any()) :: [String.t()] def get_db_keys(value, key) do - if Keyword.keyword?(value) do - value |> Keyword.keys() |> Enum.map(&convert(&1)) - else - [convert(key)] - end + keys = + if Keyword.keyword?(value) do + Keyword.keys(value) + else + [key] + end + + Enum.map(keys, &to_json_types(&1)) end @spec merge_group(atom(), atom(), keyword(), keyword()) :: keyword() def merge_group(group, key, old_value, new_value) do - new_keys = to_map_set(new_value) + new_keys = to_mapset(new_value) - intersect_keys = - old_value |> to_map_set() |> MapSet.intersection(new_keys) |> MapSet.to_list() + intersect_keys = old_value |> to_mapset() |> MapSet.intersection(new_keys) |> MapSet.to_list() merged_value = ConfigDB.merge(old_value, new_value) @@ -120,12 +93,10 @@ def merge_group(group, key, old_value, new_value) do [] end) |> List.flatten() - |> Enum.reduce(merged_value, fn subkey, acc -> - Keyword.put(acc, subkey, new_value[subkey]) - end) + |> Enum.reduce(merged_value, &Keyword.put(&2, &1, new_value[&1])) end - defp to_map_set(keyword) do + defp to_mapset(keyword) do keyword |> Keyword.keys() |> MapSet.new() @@ -159,57 +130,55 @@ defp deep_merge(_key, value1, value2) do @spec update_or_create(map()) :: {:ok, ConfigDB.t()} | {:error, Changeset.t()} def update_or_create(params) do + params = Map.put(params, :value, to_elixir_types(params[:value])) search_opts = Map.take(params, [:group, :key]) with %ConfigDB{} = config <- ConfigDB.get_by_params(search_opts), - {:partial_update, true, config} <- - {:partial_update, can_be_partially_updated?(config), config}, - old_value <- from_binary(config.value), - transformed_value <- do_transform(params[:value]), - {:can_be_merged, true, config} <- {:can_be_merged, is_list(transformed_value), config}, - new_value <- - merge_group( - ConfigDB.from_string(config.group), - ConfigDB.from_string(config.key), - old_value, - transformed_value - ) do - ConfigDB.update(config, %{value: new_value}) + {_, true, config} <- {:partial_update, can_be_partially_updated?(config), config}, + {_, true, config} <- + {:can_be_merged, is_list(params[:value]) and is_list(config.value), config} do + new_value = merge_group(config.group, config.key, config.value, params[:value]) + update(config, %{value: new_value}) else {reason, false, config} when reason in [:partial_update, :can_be_merged] -> - ConfigDB.update(config, params) + update(config, params) nil -> - ConfigDB.create(params) + create(params) end end defp can_be_partially_updated?(%ConfigDB{} = config), do: not only_full_update?(config) - defp only_full_update?(%ConfigDB{} = config) do - config_group = ConfigDB.from_string(config.group) - config_key = ConfigDB.from_string(config.key) + defp only_full_update?(%ConfigDB{group: group, key: key}) do + full_key_update = [ + {:pleroma, :ecto_repos}, + {:quack, :meta}, + {:mime, :types}, + {:cors_plug, [:max_age, :methods, :expose, :headers]}, + {:auto_linker, :opts}, + {:swarm, :node_blacklist}, + {:logger, :backends} + ] - Enum.any?(@full_key_update, fn - {group, key} when is_list(key) -> - config_group == group and config_key in key - - {group, key} -> - config_group == group and config_key == key + Enum.any?(full_key_update, fn + {s_group, s_key} -> + group == s_group and ((is_list(s_key) and key in s_key) or key == s_key) end) end - @spec delete(map()) :: {:ok, ConfigDB.t()} | {:error, Changeset.t()} + @spec delete(ConfigDB.t() | map()) :: {:ok, ConfigDB.t()} | {:error, Changeset.t()} + def delete(%ConfigDB{} = config), do: Repo.delete(config) + def delete(params) do search_opts = Map.delete(params, :subkeys) with %ConfigDB{} = config <- ConfigDB.get_by_params(search_opts), {config, sub_keys} when is_list(sub_keys) <- {config, params[:subkeys]}, - old_value <- from_binary(config.value), - keys <- Enum.map(sub_keys, &do_transform_string(&1)), - {:partial_remove, config, new_value} when new_value != [] <- - {:partial_remove, config, Keyword.drop(old_value, keys)} do - ConfigDB.update(config, %{value: new_value}) + keys <- Enum.map(sub_keys, &string_to_elixir_types(&1)), + {_, config, new_value} when new_value != [] <- + {:partial_remove, config, Keyword.drop(config.value, keys)} do + update(config, %{value: new_value}) else {:partial_remove, config, []} -> Repo.delete(config) @@ -225,37 +194,32 @@ def delete(params) do end end - @spec from_binary(binary()) :: term() - def from_binary(binary), do: :erlang.binary_to_term(binary) - - @spec from_binary_with_convert(binary()) :: any() - def from_binary_with_convert(binary) do - binary - |> from_binary() - |> do_convert() + @spec to_json_types(term()) :: map() | list() | boolean() | String.t() + def to_json_types(entity) when is_list(entity) do + Enum.map(entity, &to_json_types/1) end - @spec from_string(String.t()) :: atom() | no_return() - def from_string(string), do: do_transform_string(string) + def to_json_types(%Regex{} = entity), do: inspect(entity) - @spec convert(any()) :: any() - def convert(entity), do: do_convert(entity) - - defp do_convert(entity) when is_list(entity) do - for v <- entity, into: [], do: do_convert(v) + def to_json_types(entity) when is_map(entity) do + Map.new(entity, fn {k, v} -> {to_json_types(k), to_json_types(v)} end) end - defp do_convert(%Regex{} = entity), do: inspect(entity) + def to_json_types({:args, args}) when is_list(args) do + arguments = + Enum.map(args, fn + arg when is_tuple(arg) -> inspect(arg) + arg -> to_json_types(arg) + end) - defp do_convert(entity) when is_map(entity) do - for {k, v} <- entity, into: %{}, do: {do_convert(k), do_convert(v)} + %{"tuple" => [":args", arguments]} end - defp do_convert({:proxy_url, {type, :localhost, port}}) do - %{"tuple" => [":proxy_url", %{"tuple" => [do_convert(type), "localhost", port]}]} + def to_json_types({:proxy_url, {type, :localhost, port}}) do + %{"tuple" => [":proxy_url", %{"tuple" => [to_json_types(type), "localhost", port]}]} end - defp do_convert({:proxy_url, {type, host, port}}) when is_tuple(host) do + def to_json_types({:proxy_url, {type, host, port}}) when is_tuple(host) do ip = host |> :inet_parse.ntoa() @@ -264,66 +228,64 @@ defp do_convert({:proxy_url, {type, host, port}}) when is_tuple(host) do %{ "tuple" => [ ":proxy_url", - %{"tuple" => [do_convert(type), ip, port]} + %{"tuple" => [to_json_types(type), ip, port]} ] } end - defp do_convert({:proxy_url, {type, host, port}}) do + def to_json_types({:proxy_url, {type, host, port}}) do %{ "tuple" => [ ":proxy_url", - %{"tuple" => [do_convert(type), to_string(host), port]} + %{"tuple" => [to_json_types(type), to_string(host), port]} ] } end - defp do_convert({:partial_chain, entity}), do: %{"tuple" => [":partial_chain", inspect(entity)]} + def to_json_types({:partial_chain, entity}), + do: %{"tuple" => [":partial_chain", inspect(entity)]} - defp do_convert(entity) when is_tuple(entity) do + def to_json_types(entity) when is_tuple(entity) do value = entity |> Tuple.to_list() - |> do_convert() + |> to_json_types() %{"tuple" => value} end - defp do_convert(entity) when is_boolean(entity) or is_number(entity) or is_nil(entity) do + def to_json_types(entity) when is_binary(entity), do: entity + + def to_json_types(entity) when is_boolean(entity) or is_number(entity) or is_nil(entity) do entity end - defp do_convert(entity) - when is_atom(entity) and entity in [:"tlsv1.1", :"tlsv1.2", :"tlsv1.3"] do + def to_json_types(entity) when entity in [:"tlsv1.1", :"tlsv1.2", :"tlsv1.3"] do ":#{entity}" end - defp do_convert(entity) when is_atom(entity), do: inspect(entity) + def to_json_types(entity) when is_atom(entity), do: inspect(entity) - defp do_convert(entity) when is_binary(entity), do: entity + @spec to_elixir_types(boolean() | String.t() | map() | list()) :: term() + def to_elixir_types(%{"tuple" => [":args", args]}) when is_list(args) do + arguments = + Enum.map(args, fn arg -> + if String.contains?(arg, ["{", "}"]) do + {elem, []} = Code.eval_string(arg) + elem + else + to_elixir_types(arg) + end + end) - @spec transform(any()) :: binary() | no_return() - def transform(entity) when is_binary(entity) or is_map(entity) or is_list(entity) do - entity - |> do_transform() - |> to_binary() + {:args, arguments} end - def transform(entity), do: to_binary(entity) - - @spec transform_with_out_binary(any()) :: any() - def transform_with_out_binary(entity), do: do_transform(entity) - - @spec to_binary(any()) :: binary() - def to_binary(entity), do: :erlang.term_to_binary(entity) - - defp do_transform(%Regex{} = entity), do: entity - - defp do_transform(%{"tuple" => [":proxy_url", %{"tuple" => [type, host, port]}]}) do - {:proxy_url, {do_transform_string(type), parse_host(host), port}} + def to_elixir_types(%{"tuple" => [":proxy_url", %{"tuple" => [type, host, port]}]}) do + {:proxy_url, {string_to_elixir_types(type), parse_host(host), port}} end - defp do_transform(%{"tuple" => [":partial_chain", entity]}) do + def to_elixir_types(%{"tuple" => [":partial_chain", entity]}) do {partial_chain, []} = entity |> String.replace(~r/[^\w|^{:,[|^,|^[|^\]^}|^\/|^\.|^"]^\s/, "") @@ -332,25 +294,51 @@ defp do_transform(%{"tuple" => [":partial_chain", entity]}) do {:partial_chain, partial_chain} end - defp do_transform(%{"tuple" => entity}) do - Enum.reduce(entity, {}, fn val, acc -> Tuple.append(acc, do_transform(val)) end) + def to_elixir_types(%{"tuple" => entity}) do + Enum.reduce(entity, {}, &Tuple.append(&2, to_elixir_types(&1))) end - defp do_transform(entity) when is_map(entity) do - for {k, v} <- entity, into: %{}, do: {do_transform(k), do_transform(v)} + def to_elixir_types(entity) when is_map(entity) do + Map.new(entity, fn {k, v} -> {to_elixir_types(k), to_elixir_types(v)} end) end - defp do_transform(entity) when is_list(entity) do - for v <- entity, into: [], do: do_transform(v) + def to_elixir_types(entity) when is_list(entity) do + Enum.map(entity, &to_elixir_types/1) end - defp do_transform(entity) when is_binary(entity) do + def to_elixir_types(entity) when is_binary(entity) do entity |> String.trim() - |> do_transform_string() + |> string_to_elixir_types() end - defp do_transform(entity), do: entity + def to_elixir_types(entity), do: entity + + @spec string_to_elixir_types(String.t()) :: + atom() | Regex.t() | module() | String.t() | no_return() + def string_to_elixir_types("~r" <> _pattern = regex) do + pattern = + ~r/^~r(?'delimiter'[\/|"'([{<]{1})(?'pattern'.+)[\/|"')\]}>]{1}(?'modifier'[uismxfU]*)/u + + delimiters = ["/", "|", "\"", "'", {"(", ")"}, {"[", "]"}, {"{", "}"}, {"<", ">"}] + + with %{"modifier" => modifier, "pattern" => pattern, "delimiter" => regex_delimiter} <- + Regex.named_captures(pattern, regex), + {:ok, {leading, closing}} <- find_valid_delimiter(delimiters, pattern, regex_delimiter), + {result, _} <- Code.eval_string("~r#{leading}#{pattern}#{closing}#{modifier}") do + result + end + end + + def string_to_elixir_types(":" <> atom), do: String.to_atom(atom) + + def string_to_elixir_types(value) do + if module_name?(value) do + String.to_existing_atom("Elixir." <> value) + else + value + end + end defp parse_host("localhost"), do: :localhost @@ -387,27 +375,8 @@ defp find_valid_delimiter([delimiter | others], pattern, regex_delimiter) do end end - defp do_transform_string("~r" <> _pattern = regex) do - with %{"modifier" => modifier, "pattern" => pattern, "delimiter" => regex_delimiter} <- - Regex.named_captures(@regex, regex), - {:ok, {leading, closing}} <- find_valid_delimiter(@delimiters, pattern, regex_delimiter), - {result, _} <- Code.eval_string("~r#{leading}#{pattern}#{closing}#{modifier}") do - result - end - end - - defp do_transform_string(":" <> atom), do: String.to_atom(atom) - - defp do_transform_string(value) do - if is_module_name?(value) do - String.to_existing_atom("Elixir." <> value) - else - value - end - end - - @spec is_module_name?(String.t()) :: boolean() - def is_module_name?(string) do + @spec module_name?(String.t()) :: boolean() + def module_name?(string) do Regex.match?(~r/^(Pleroma|Phoenix|Tesla|Quack|Ueberauth|Swoosh)\./, string) or string in ["Oban", "Ueberauth", "ExSyslogger"] end diff --git a/lib/pleroma/config/deprecation_warnings.ex b/lib/pleroma/config/deprecation_warnings.ex index c39a8984b..0a6c724fb 100644 --- a/lib/pleroma/config/deprecation_warnings.ex +++ b/lib/pleroma/config/deprecation_warnings.ex @@ -3,10 +3,25 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Config.DeprecationWarnings do + alias Pleroma.Config + require Logger + alias Pleroma.Config + + @type config_namespace() :: [atom()] + @type config_map() :: {config_namespace(), config_namespace(), String.t()} + + @mrf_config_map [ + {[:instance, :rewrite_policy], [:mrf, :policies], + "\n* `config :pleroma, :instance, rewrite_policy` is now `config :pleroma, :mrf, policies`"}, + {[:instance, :mrf_transparency], [:mrf, :transparency], + "\n* `config :pleroma, :instance, mrf_transparency` is now `config :pleroma, :mrf, transparency`"}, + {[:instance, :mrf_transparency_exclusions], [:mrf, :transparency_exclusions], + "\n* `config :pleroma, :instance, mrf_transparency_exclusions` is now `config :pleroma, :mrf, transparency_exclusions`"} + ] def check_hellthread_threshold do - if Pleroma.Config.get([:mrf_hellthread, :threshold]) do + if Config.get([:mrf_hellthread, :threshold]) do Logger.warn(""" !!!DEPRECATION WARNING!!! You are using the old configuration mechanism for the hellthread filter. Please check config.md. @@ -14,7 +29,59 @@ def check_hellthread_threshold do end end + def mrf_user_allowlist do + config = Config.get(:mrf_user_allowlist) + + if config && Enum.any?(config, fn {k, _} -> is_atom(k) end) do + rewritten = + Enum.reduce(Config.get(:mrf_user_allowlist), Map.new(), fn {k, v}, acc -> + Map.put(acc, to_string(k), v) + end) + + Config.put(:mrf_user_allowlist, rewritten) + + Logger.error(""" + !!!DEPRECATION WARNING!!! + As of Pleroma 2.0.7, the `mrf_user_allowlist` setting changed of format. + Pleroma 2.1 will remove support for the old format. Please change your configuration to match this: + + config :pleroma, :mrf_user_allowlist, #{inspect(rewritten, pretty: true)} + """) + end + end + def warn do check_hellthread_threshold() + mrf_user_allowlist() + check_old_mrf_config() + end + + def check_old_mrf_config do + warning_preface = """ + !!!DEPRECATION WARNING!!! + Your config is using old namespaces for MRF configuration. They should work for now, but you are advised to change to new namespaces to prevent possible issues later: + """ + + move_namespace_and_warn(@mrf_config_map, warning_preface) + end + + @spec move_namespace_and_warn([config_map()], String.t()) :: :ok + def move_namespace_and_warn(config_map, warning_preface) do + warning = + Enum.reduce(config_map, "", fn + {old, new, err_msg}, acc -> + old_config = Config.get(old) + + if old_config do + Config.put(new, old_config) + acc <> err_msg + else + acc + end + end) + + if warning != "" do + Logger.warn(warning_preface <> warning) + end end end diff --git a/lib/pleroma/config/transfer_task.ex b/lib/pleroma/config/transfer_task.ex index c02b70e96..eb86b8ff4 100644 --- a/lib/pleroma/config/transfer_task.ex +++ b/lib/pleroma/config/transfer_task.ex @@ -28,10 +28,6 @@ defmodule Pleroma.Config.TransferTask do {:pleroma, Pleroma.Captcha, [:seconds_valid]}, {:pleroma, Pleroma.Upload, [:proxy_remote]}, {:pleroma, :instance, [:upload_limit]}, - {:pleroma, :email_notifications, [:digest]}, - {:pleroma, :oauth2, [:clean_expired_tokens]}, - {:pleroma, Pleroma.ActivityExpiration, [:enabled]}, - {:pleroma, Pleroma.ScheduledActivity, [:enabled]}, {:pleroma, :gopher, [:enabled]} ] @@ -48,7 +44,7 @@ def load_and_update_env(deleted_settings \\ [], restart_pleroma? \\ true) do {logger, other} = (Repo.all(ConfigDB) ++ deleted_settings) - |> Enum.map(&transform_and_merge/1) + |> Enum.map(&merge_with_default/1) |> Enum.split_with(fn {group, _, _, _} -> group in [:logger, :quack] end) logger @@ -92,11 +88,7 @@ defp maybe_set_pleroma_last(apps) do end end - defp transform_and_merge(%{group: group, key: key, value: value} = setting) do - group = ConfigDB.from_string(group) - key = ConfigDB.from_string(key) - value = ConfigDB.from_binary(value) - + defp merge_with_default(%{group: group, key: key, value: value} = setting) do default = Config.Holder.default_config(group, key) merged = diff --git a/lib/pleroma/constants.ex b/lib/pleroma/constants.ex index 06174f624..13eeaa96b 100644 --- a/lib/pleroma/constants.ex +++ b/lib/pleroma/constants.ex @@ -24,6 +24,6 @@ defmodule Pleroma.Constants do const(static_only_files, do: - ~w(index.html robots.txt static static-fe finmoji emoji packs sounds images instance sw.js sw-pleroma.js favicon.png schemas doc) + ~w(index.html robots.txt static static-fe finmoji emoji packs sounds images instance sw.js sw-pleroma.js favicon.png schemas doc embed.js embed.css) ) end diff --git a/lib/pleroma/conversation/participation.ex b/lib/pleroma/conversation/participation.ex index 51bb1bda9..8bc3e85d6 100644 --- a/lib/pleroma/conversation/participation.ex +++ b/lib/pleroma/conversation/participation.ex @@ -162,10 +162,13 @@ def for_user_with_last_activity_id(user, params \\ %{}) do for_user(user, params) |> Enum.map(fn participation -> activity_id = - ActivityPub.fetch_latest_activity_id_for_context(participation.conversation.ap_id, %{ - "user" => user, - "blocking_user" => user - }) + ActivityPub.fetch_latest_direct_activity_id_for_context( + participation.conversation.ap_id, + %{ + user: user, + blocking_user: user + } + ) %{ participation diff --git a/lib/pleroma/counter_cache.ex b/lib/pleroma/counter_cache.ex index 4d348a413..ebd1f603d 100644 --- a/lib/pleroma/counter_cache.ex +++ b/lib/pleroma/counter_cache.ex @@ -10,32 +10,70 @@ defmodule Pleroma.CounterCache do import Ecto.Query schema "counter_cache" do - field(:name, :string) - field(:count, :integer) + field(:instance, :string) + field(:public, :integer) + field(:unlisted, :integer) + field(:private, :integer) + field(:direct, :integer) end def changeset(struct, params) do struct - |> cast(params, [:name, :count]) - |> validate_required([:name]) - |> unique_constraint(:name) + |> cast(params, [:instance, :public, :unlisted, :private, :direct]) + |> validate_required([:instance]) + |> unique_constraint(:instance) end - def get_as_map(names) when is_list(names) do + def get_by_instance(instance) do CounterCache - |> where([cc], cc.name in ^names) - |> Repo.all() - |> Enum.group_by(& &1.name, & &1.count) - |> Map.new(fn {k, v} -> {k, hd(v)} end) + |> select([c], %{ + "public" => c.public, + "unlisted" => c.unlisted, + "private" => c.private, + "direct" => c.direct + }) + |> where([c], c.instance == ^instance) + |> Repo.one() + |> case do + nil -> %{"public" => 0, "unlisted" => 0, "private" => 0, "direct" => 0} + val -> val + end end - def set(name, count) do + def get_sum do + CounterCache + |> select([c], %{ + "public" => type(sum(c.public), :integer), + "unlisted" => type(sum(c.unlisted), :integer), + "private" => type(sum(c.private), :integer), + "direct" => type(sum(c.direct), :integer) + }) + |> Repo.one() + end + + def set(instance, values) do + params = + Enum.reduce( + ["public", "private", "unlisted", "direct"], + %{"instance" => instance}, + fn param, acc -> + Map.put_new(acc, param, Map.get(values, param, 0)) + end + ) + %CounterCache{} - |> changeset(%{"name" => name, "count" => count}) + |> changeset(params) |> Repo.insert( - on_conflict: [set: [count: count]], + on_conflict: [ + set: [ + public: params["public"], + private: params["private"], + unlisted: params["unlisted"], + direct: params["direct"] + ] + ], returning: true, - conflict_target: :name + conflict_target: :instance ) end end diff --git a/lib/pleroma/web/activity_pub/object_validators/types/date_time.ex b/lib/pleroma/ecto_type/activity_pub/object_validators/date_time.ex similarity index 77% rename from lib/pleroma/web/activity_pub/object_validators/types/date_time.ex rename to lib/pleroma/ecto_type/activity_pub/object_validators/date_time.ex index 4f412fcde..d852c0abd 100644 --- a/lib/pleroma/web/activity_pub/object_validators/types/date_time.ex +++ b/lib/pleroma/ecto_type/activity_pub/object_validators/date_time.ex @@ -1,4 +1,8 @@ -defmodule Pleroma.Web.ActivityPub.ObjectValidators.Types.DateTime do +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.EctoType.ActivityPub.ObjectValidators.DateTime do @moduledoc """ The AP standard defines the date fields in AP as xsd:DateTime. Elixir's DateTime can't parse this, but it can parse the related iso8601. This diff --git a/lib/pleroma/web/activity_pub/object_validators/types/object_id.ex b/lib/pleroma/ecto_type/activity_pub/object_validators/object_id.ex similarity index 69% rename from lib/pleroma/web/activity_pub/object_validators/types/object_id.ex rename to lib/pleroma/ecto_type/activity_pub/object_validators/object_id.ex index f71f76370..8034235b0 100644 --- a/lib/pleroma/web/activity_pub/object_validators/types/object_id.ex +++ b/lib/pleroma/ecto_type/activity_pub/object_validators/object_id.ex @@ -1,4 +1,8 @@ -defmodule Pleroma.Web.ActivityPub.ObjectValidators.Types.ObjectID do +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.EctoType.ActivityPub.ObjectValidators.ObjectID do use Ecto.Type def type, do: :string diff --git a/lib/pleroma/ecto_type/activity_pub/object_validators/recipients.ex b/lib/pleroma/ecto_type/activity_pub/object_validators/recipients.ex new file mode 100644 index 000000000..205527a96 --- /dev/null +++ b/lib/pleroma/ecto_type/activity_pub/object_validators/recipients.ex @@ -0,0 +1,40 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.EctoType.ActivityPub.ObjectValidators.Recipients do + use Ecto.Type + + alias Pleroma.EctoType.ActivityPub.ObjectValidators.ObjectID + + def type, do: {:array, ObjectID} + + def cast(object) when is_binary(object) do + cast([object]) + end + + def cast(data) when is_list(data) do + data + |> Enum.reduce_while({:ok, []}, fn element, {:ok, list} -> + case ObjectID.cast(element) do + {:ok, id} -> + {:cont, {:ok, [id | list]}} + + _ -> + {:halt, :error} + end + end) + end + + def cast(_) do + :error + end + + def dump(data) do + {:ok, data} + end + + def load(data) do + {:ok, data} + end +end diff --git a/lib/pleroma/ecto_type/activity_pub/object_validators/safe_text.ex b/lib/pleroma/ecto_type/activity_pub/object_validators/safe_text.ex new file mode 100644 index 000000000..7f0405c7b --- /dev/null +++ b/lib/pleroma/ecto_type/activity_pub/object_validators/safe_text.ex @@ -0,0 +1,25 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.EctoType.ActivityPub.ObjectValidators.SafeText do + use Ecto.Type + + alias Pleroma.HTML + + def type, do: :string + + def cast(str) when is_binary(str) do + {:ok, HTML.filter_tags(str)} + end + + def cast(_), do: :error + + def dump(data) do + {:ok, data} + end + + def load(data) do + {:ok, data} + end +end diff --git a/lib/pleroma/web/activity_pub/object_validators/types/uri.ex b/lib/pleroma/ecto_type/activity_pub/object_validators/uri.ex similarity index 63% rename from lib/pleroma/web/activity_pub/object_validators/types/uri.ex rename to lib/pleroma/ecto_type/activity_pub/object_validators/uri.ex index 24845bcc0..2054c26be 100644 --- a/lib/pleroma/web/activity_pub/object_validators/types/uri.ex +++ b/lib/pleroma/ecto_type/activity_pub/object_validators/uri.ex @@ -1,4 +1,8 @@ -defmodule Pleroma.Web.ActivityPub.ObjectValidators.Types.Uri do +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.EctoType.ActivityPub.ObjectValidators.Uri do use Ecto.Type def type, do: :string diff --git a/lib/pleroma/ecto_type/config/atom.ex b/lib/pleroma/ecto_type/config/atom.ex new file mode 100644 index 000000000..df565d432 --- /dev/null +++ b/lib/pleroma/ecto_type/config/atom.ex @@ -0,0 +1,26 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.EctoType.Config.Atom do + use Ecto.Type + + def type, do: :atom + + def cast(key) when is_atom(key) do + {:ok, key} + end + + def cast(key) when is_binary(key) do + {:ok, Pleroma.ConfigDB.string_to_elixir_types(key)} + end + + def cast(_), do: :error + + def load(key) do + {:ok, Pleroma.ConfigDB.string_to_elixir_types(key)} + end + + def dump(key) when is_atom(key), do: {:ok, inspect(key)} + def dump(_), do: :error +end diff --git a/lib/pleroma/ecto_type/config/binary_value.ex b/lib/pleroma/ecto_type/config/binary_value.ex new file mode 100644 index 000000000..bbd2608c5 --- /dev/null +++ b/lib/pleroma/ecto_type/config/binary_value.ex @@ -0,0 +1,27 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.EctoType.Config.BinaryValue do + use Ecto.Type + + def type, do: :term + + def cast(value) when is_binary(value) do + if String.valid?(value) do + {:ok, value} + else + {:ok, :erlang.binary_to_term(value)} + end + end + + def cast(value), do: {:ok, value} + + def load(value) when is_binary(value) do + {:ok, :erlang.binary_to_term(value)} + end + + def dump(value) do + {:ok, :erlang.term_to_binary(value)} + end +end diff --git a/lib/pleroma/emoji/pack.ex b/lib/pleroma/emoji/pack.ex index 14a5185be..d076ae312 100644 --- a/lib/pleroma/emoji/pack.ex +++ b/lib/pleroma/emoji/pack.ex @@ -1,6 +1,7 @@ defmodule Pleroma.Emoji.Pack do - @derive {Jason.Encoder, only: [:files, :pack]} + @derive {Jason.Encoder, only: [:files, :pack, :files_count]} defstruct files: %{}, + files_count: 0, pack_file: nil, path: nil, pack: %{}, @@ -8,6 +9,7 @@ defmodule Pleroma.Emoji.Pack do @type t() :: %__MODULE__{ files: %{String.t() => Path.t()}, + files_count: non_neg_integer(), pack_file: Path.t(), path: Path.t(), pack: map(), @@ -16,7 +18,7 @@ defmodule Pleroma.Emoji.Pack do alias Pleroma.Emoji - @spec create(String.t()) :: :ok | {:error, File.posix()} | {:error, :empty_values} + @spec create(String.t()) :: {:ok, t()} | {:error, File.posix()} | {:error, :empty_values} def create(name) do with :ok <- validate_not_empty([name]), dir <- Path.join(emoji_path(), name), @@ -26,10 +28,28 @@ def create(name) do end end - @spec show(String.t()) :: {:ok, t()} | {:error, atom()} - def show(name) do + defp paginate(entities, 1, page_size), do: Enum.take(entities, page_size) + + defp paginate(entities, page, page_size) do + entities + |> Enum.chunk_every(page_size) + |> Enum.at(page - 1) + end + + @spec show(keyword()) :: {:ok, t()} | {:error, atom()} + def show(opts) do + name = opts[:name] + with :ok <- validate_not_empty([name]), {:ok, pack} <- load_pack(name) do + shortcodes = + pack.files + |> Map.keys() + |> Enum.sort() + |> paginate(opts[:page], opts[:page_size]) + + pack = Map.put(pack, :files, Map.take(pack.files, shortcodes)) + {:ok, validate_pack(pack)} end end @@ -120,10 +140,10 @@ def list_remote(url) do end end - @spec list_local() :: {:ok, map()} - def list_local do + @spec list_local(keyword()) :: {:ok, map(), non_neg_integer()} + def list_local(opts) do with {:ok, results} <- list_packs_dir() do - packs = + all_packs = results |> Enum.map(fn name -> case load_pack(name) do @@ -132,9 +152,13 @@ def list_local do end end) |> Enum.reject(&is_nil/1) + + packs = + all_packs + |> paginate(opts[:page], opts[:page_size]) |> Map.new(fn pack -> {pack.name, validate_pack(pack)} end) - {:ok, packs} + {:ok, packs, length(all_packs)} end end @@ -146,7 +170,7 @@ def get_archive(name) do end end - @spec download(String.t(), String.t(), String.t()) :: :ok | {:error, atom()} + @spec download(String.t(), String.t(), String.t()) :: {:ok, t()} | {:error, atom()} def download(name, url, as) do uri = url |> String.trim() |> URI.parse() @@ -197,7 +221,12 @@ def load_pack(name) do |> Map.put(:path, Path.dirname(pack_file)) |> Map.put(:name, name) - {:ok, pack} + files_count = + pack.files + |> Map.keys() + |> length() + + {:ok, Map.put(pack, :files_count, files_count)} else {:error, :not_found} end @@ -296,7 +325,9 @@ defp downloadable?(pack) do # Otherwise, they'd have to download it from external-src pack.pack["share-files"] && Enum.all?(pack.files, fn {_, file} -> - File.exists?(Path.join(pack.path, file)) + pack.path + |> Path.join(file) + |> File.exists?() end) end @@ -440,7 +471,7 @@ defp list_packs_dir do # with the API so it should be sufficient with {:create_dir, :ok} <- {:create_dir, File.mkdir_p(emoji_path)}, {:ls, {:ok, results}} <- {:ls, File.ls(emoji_path)} do - {:ok, results} + {:ok, Enum.sort(results)} else {:create_dir, {:error, e}} -> {:error, :create_dir, e} {:ls, {:error, e}} -> {:error, :ls, e} diff --git a/lib/pleroma/following_relationship.ex b/lib/pleroma/following_relationship.ex index 3a3082e72..c2020d30a 100644 --- a/lib/pleroma/following_relationship.ex +++ b/lib/pleroma/following_relationship.ex @@ -124,6 +124,7 @@ def get_follow_requests(%User{id: id}) do |> join(:inner, [r], f in assoc(r, :follower)) |> where([r], r.state == ^:follow_pending) |> where([r], r.following_id == ^id) + |> where([r, f], f.deactivated != true) |> select([r, f], f) |> Repo.all() end @@ -141,6 +142,12 @@ def following_query(%User{} = user) do |> where([r], r.state == ^:follow_accept) end + def outgoing_pending_follow_requests_query(%User{} = follower) do + __MODULE__ + |> where([r], r.follower_id == ^follower.id) + |> where([r], r.state == ^:follow_pending) + end + def following(%User{} = user) do following = following_query(user) diff --git a/lib/pleroma/helpers/uri_helper.ex b/lib/pleroma/helpers/uri_helper.ex index 69d8c8fe0..6d205a636 100644 --- a/lib/pleroma/helpers/uri_helper.ex +++ b/lib/pleroma/helpers/uri_helper.ex @@ -17,14 +17,6 @@ def append_uri_params(uri, appended_params) do |> URI.to_string() end - def append_param_if_present(%{} = params, param_name, param_value) do - if param_value do - Map.put(params, param_name, param_value) - else - params - end - end - def maybe_add_base("/" <> uri, base), do: Path.join([base, uri]) def maybe_add_base(uri, _base), do: uri end diff --git a/lib/pleroma/html.ex b/lib/pleroma/html.ex index d78c5f202..dc1b9b840 100644 --- a/lib/pleroma/html.ex +++ b/lib/pleroma/html.ex @@ -109,7 +109,7 @@ def extract_first_external_url(object, content) do result = content |> Floki.parse_fragment!() - |> Floki.filter_out("a.mention,a.hashtag,a[rel~=\"tag\"]") + |> Floki.filter_out("a.mention,a.hashtag,a.attachment,a[rel~=\"tag\"]") |> Floki.attribute("a", "href") |> Enum.at(0) diff --git a/lib/pleroma/http/adapter_helper/hackney.ex b/lib/pleroma/http/adapter_helper/hackney.ex index dcb4cac71..3972a03a9 100644 --- a/lib/pleroma/http/adapter_helper/hackney.ex +++ b/lib/pleroma/http/adapter_helper/hackney.ex @@ -22,22 +22,7 @@ def options(connection_opts \\ [], %URI{} = uri) do |> Pleroma.HTTP.AdapterHelper.maybe_add_proxy(proxy) end - defp add_scheme_opts(opts, %URI{scheme: "http"}), do: opts - - defp add_scheme_opts(opts, %URI{scheme: "https", host: host}) do - ssl_opts = [ - ssl_options: [ - # Workaround for remote server certificate chain issues - partial_chain: &:hackney_connect.partial_chain/1, - - # We don't support TLS v1.3 yet - versions: [:tlsv1, :"tlsv1.1", :"tlsv1.2"], - server_name_indication: to_charlist(host) - ] - ] - - Keyword.merge(opts, ssl_opts) - end + defp add_scheme_opts(opts, _), do: opts def after_request(_), do: :ok end diff --git a/lib/pleroma/http/ex_aws.ex b/lib/pleroma/http/ex_aws.ex new file mode 100644 index 000000000..e53e64077 --- /dev/null +++ b/lib/pleroma/http/ex_aws.ex @@ -0,0 +1,22 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.HTTP.ExAws do + @moduledoc false + + @behaviour ExAws.Request.HttpClient + + alias Pleroma.HTTP + + @impl true + def request(method, url, body \\ "", headers \\ [], http_opts \\ []) do + case HTTP.request(method, url, body, headers, http_opts) do + {:ok, env} -> + {:ok, %{status_code: env.status, headers: env.headers, body: env.body}} + + {:error, reason} -> + {:error, %{reason: reason}} + end + end +end diff --git a/lib/pleroma/http/http.ex b/lib/pleroma/http/http.ex index 583b56484..66ca75367 100644 --- a/lib/pleroma/http/http.ex +++ b/lib/pleroma/http/http.ex @@ -16,6 +16,7 @@ defmodule Pleroma.HTTP do require Logger @type t :: __MODULE__ + @type method() :: :get | :post | :put | :delete | :head @doc """ Performs GET request. @@ -28,6 +29,9 @@ def get(url, headers \\ [], options \\ []) def get(nil, _, _), do: nil def get(url, headers, options), do: request(:get, url, "", headers, options) + @spec head(Request.url(), Request.headers(), keyword()) :: {:ok, Env.t()} | {:error, any()} + def head(url, headers \\ [], options \\ []), do: request(:head, url, "", headers, options) + @doc """ Performs POST request. @@ -42,7 +46,7 @@ def post(url, body, headers \\ [], options \\ []), Builds and performs http request. # Arguments: - `method` - :get, :post, :put, :delete + `method` - :get, :post, :put, :delete, :head `url` - full url `body` - request body `headers` - a keyworld list of headers, e.g. `[{"content-type", "text/plain"}]` @@ -52,7 +56,7 @@ def post(url, body, headers \\ [], options \\ []), `{:ok, %Tesla.Env{}}` or `{:error, error}` """ - @spec request(atom(), Request.url(), String.t(), Request.headers(), keyword()) :: + @spec request(method(), Request.url(), String.t(), Request.headers(), keyword()) :: {:ok, Env.t()} | {:error, any()} def request(method, url, body, headers, options) when is_binary(url) do uri = URI.parse(url) diff --git a/lib/pleroma/http/tzdata.ex b/lib/pleroma/http/tzdata.ex new file mode 100644 index 000000000..34bb253a7 --- /dev/null +++ b/lib/pleroma/http/tzdata.ex @@ -0,0 +1,25 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.HTTP.Tzdata do + @moduledoc false + + @behaviour Tzdata.HTTPClient + + alias Pleroma.HTTP + + @impl true + def get(url, headers, options) do + with {:ok, %Tesla.Env{} = env} <- HTTP.get(url, headers, options) do + {:ok, {env.status, env.headers, env.body}} + end + end + + @impl true + def head(url, headers, options) do + with {:ok, %Tesla.Env{} = env} <- HTTP.head(url, headers, options) do + {:ok, {env.status, env.headers}} + end + end +end diff --git a/lib/pleroma/maps.ex b/lib/pleroma/maps.ex new file mode 100644 index 000000000..ab2e32e2f --- /dev/null +++ b/lib/pleroma/maps.ex @@ -0,0 +1,15 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Maps do + def put_if_present(map, key, value, value_function \\ &{:ok, &1}) when is_map(map) do + with false <- is_nil(key), + false <- is_nil(value), + {:ok, new_value} <- value_function.(value) do + Map.put(map, key, new_value) + else + _ -> map + end + end +end diff --git a/lib/pleroma/migration_helper/notification_backfill.ex b/lib/pleroma/migration_helper/notification_backfill.ex new file mode 100644 index 000000000..b3770307a --- /dev/null +++ b/lib/pleroma/migration_helper/notification_backfill.ex @@ -0,0 +1,85 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.MigrationHelper.NotificationBackfill do + alias Pleroma.Notification + alias Pleroma.Object + alias Pleroma.Repo + alias Pleroma.User + + import Ecto.Query + + def fill_in_notification_types do + query = + from(n in Pleroma.Notification, + where: is_nil(n.type), + preload: :activity + ) + + query + |> Repo.chunk_stream(100) + |> Enum.each(fn notification -> + type = + notification.activity + |> type_from_activity() + + notification + |> Notification.changeset(%{type: type}) + |> Repo.update() + end) + end + + # This is copied over from Notifications to keep this stable. + defp type_from_activity(%{data: %{"type" => type}} = activity) do + case type do + "Follow" -> + accepted_function = fn activity -> + with %User{} = follower <- User.get_by_ap_id(activity.data["actor"]), + %User{} = followed <- User.get_by_ap_id(activity.data["object"]) do + Pleroma.FollowingRelationship.following?(follower, followed) + end + end + + if accepted_function.(activity) do + "follow" + else + "follow_request" + end + + "Announce" -> + "reblog" + + "Like" -> + "favourite" + + "Move" -> + "move" + + "EmojiReact" -> + "pleroma:emoji_reaction" + + # Compatibility with old reactions + "EmojiReaction" -> + "pleroma:emoji_reaction" + + "Create" -> + activity + |> type_from_activity_object() + + t -> + raise "No notification type for activity type #{t}" + end + end + + defp type_from_activity_object(%{data: %{"type" => "Create", "object" => %{}}}), do: "mention" + + defp type_from_activity_object(%{data: %{"type" => "Create"}} = activity) do + object = Object.get_by_ap_id(activity.data["object"]) + + case object && object.data["type"] do + "ChatMessage" -> "pleroma:chat_mention" + _ -> "mention" + end + end +end diff --git a/lib/pleroma/notification.ex b/lib/pleroma/notification.ex index 7eca55ac9..2ef1a80c5 100644 --- a/lib/pleroma/notification.ex +++ b/lib/pleroma/notification.ex @@ -30,12 +30,29 @@ defmodule Pleroma.Notification do schema "notifications" do field(:seen, :boolean, default: false) + # This is an enum type in the database. If you add a new notification type, + # remember to add a migration to add it to the `notifications_type` enum + # as well. + field(:type, :string) belongs_to(:user, User, type: FlakeId.Ecto.CompatType) belongs_to(:activity, Activity, type: FlakeId.Ecto.CompatType) timestamps() end + def update_notification_type(user, activity) do + with %__MODULE__{} = notification <- + Repo.get_by(__MODULE__, user_id: user.id, activity_id: activity.id) do + type = + activity + |> type_from_activity() + + notification + |> changeset(%{type: type}) + |> Repo.update() + end + end + @spec unread_notifications_count(User.t()) :: integer() def unread_notifications_count(%User{id: user_id}) do from(q in __MODULE__, @@ -44,9 +61,21 @@ def unread_notifications_count(%User{id: user_id}) do |> Repo.aggregate(:count, :id) end + @notification_types ~w{ + favourite + follow + follow_request + mention + move + pleroma:chat_mention + pleroma:emoji_reaction + reblog + } + def changeset(%Notification{} = notification, attrs) do notification - |> cast(attrs, [:seen]) + |> cast(attrs, [:seen, :type]) + |> validate_inclusion(:type, @notification_types) end @spec last_read_query(User.t()) :: Ecto.Queryable.t() @@ -137,8 +166,16 @@ defp exclude_visibility(query, %{exclude_visibilities: visibility}) query |> join(:left, [n, a], mutated_activity in Pleroma.Activity, on: - fragment("?->>'context'", a.data) == - fragment("?->>'context'", mutated_activity.data) and + fragment( + "COALESCE((?->'object')->>'id', ?->>'object')", + a.data, + a.data + ) == + fragment( + "COALESCE((?->'object')->>'id', ?->>'object')", + mutated_activity.data, + mutated_activity.data + ) and fragment("(?->>'type' = 'Like' or ?->>'type' = 'Announce')", a.data, a.data) and fragment("?->>'type'", mutated_activity.data) == "Create", as: :mutated_activity @@ -300,42 +337,96 @@ def dismiss(%{id: user_id} = _user, id) do end end - def create_notifications(%Activity{data: %{"to" => _, "type" => "Create"}} = activity) do - object = Object.normalize(activity) + def create_notifications(activity, options \\ []) + + def create_notifications(%Activity{data: %{"to" => _, "type" => "Create"}} = activity, options) do + object = Object.normalize(activity, false) if object && object.data["type"] == "Answer" do {:ok, []} else - do_create_notifications(activity) + do_create_notifications(activity, options) end end - def create_notifications(%Activity{data: %{"type" => type}} = activity) + def create_notifications(%Activity{data: %{"type" => type}} = activity, options) when type in ["Follow", "Like", "Announce", "Move", "EmojiReact"] do - do_create_notifications(activity) + do_create_notifications(activity, options) end - def create_notifications(_), do: {:ok, []} + def create_notifications(_, _), do: {:ok, []} + + defp do_create_notifications(%Activity{} = activity, options) do + do_send = Keyword.get(options, :do_send, true) - defp do_create_notifications(%Activity{} = activity) do {enabled_receivers, disabled_receivers} = get_notified_from_activity(activity) potential_receivers = enabled_receivers ++ disabled_receivers notifications = Enum.map(potential_receivers, fn user -> - do_send = user in enabled_receivers + do_send = do_send && user in enabled_receivers create_notification(activity, user, do_send) end) + |> Enum.reject(&is_nil/1) {:ok, notifications} end + defp type_from_activity(%{data: %{"type" => type}} = activity) do + case type do + "Follow" -> + if Activity.follow_accepted?(activity) do + "follow" + else + "follow_request" + end + + "Announce" -> + "reblog" + + "Like" -> + "favourite" + + "Move" -> + "move" + + "EmojiReact" -> + "pleroma:emoji_reaction" + + # Compatibility with old reactions + "EmojiReaction" -> + "pleroma:emoji_reaction" + + "Create" -> + activity + |> type_from_activity_object() + + t -> + raise "No notification type for activity type #{t}" + end + end + + defp type_from_activity_object(%{data: %{"type" => "Create", "object" => %{}}}), do: "mention" + + defp type_from_activity_object(%{data: %{"type" => "Create"}} = activity) do + object = Object.get_by_ap_id(activity.data["object"]) + + case object && object.data["type"] do + "ChatMessage" -> "pleroma:chat_mention" + _ -> "mention" + end + end + # TODO move to sql, too. def create_notification(%Activity{} = activity, %User{} = user, do_send \\ true) do unless skip?(activity, user) do {:ok, %{notification: notification}} = Multi.new() - |> Multi.insert(:notification, %Notification{user_id: user.id, activity: activity}) + |> Multi.insert(:notification, %Notification{ + user_id: user.id, + activity: activity, + type: type_from_activity(activity) + }) |> Marker.multi_set_last_read_id(user, "notifications") |> Repo.transaction() @@ -459,6 +550,7 @@ def exclude_thread_muter_ap_ids(ap_ids, %Activity{} = activity) do def skip?(%Activity{} = activity, %User{} = user) do [ :self, + :invisible, :followers, :follows, :non_followers, @@ -475,6 +567,12 @@ def skip?(:self, %Activity{} = activity, %User{} = user) do activity.data["actor"] == user.ap_id end + def skip?(:invisible, %Activity{} = activity, _) do + actor = activity.data["actor"] + user = User.get_cached_by_ap_id(actor) + User.invisible?(user) + end + def skip?( :followers, %Activity{} = activity, @@ -527,4 +625,12 @@ def skip?(:recently_followed, %Activity{data: %{"type" => "Follow"}} = activity, end def skip?(_, _, _), do: false + + def for_user_and_activity(user, activity) do + from(n in __MODULE__, + where: n.user_id == ^user.id, + where: n.activity_id == ^activity.id + ) + |> Repo.one() + end end diff --git a/lib/pleroma/object/fetcher.ex b/lib/pleroma/object/fetcher.ex index 263ded5dd..3e2949ee2 100644 --- a/lib/pleroma/object/fetcher.ex +++ b/lib/pleroma/object/fetcher.ex @@ -83,8 +83,8 @@ def fetch_object_from_id(id, options \\ []) do {:transmogrifier, {:error, {:reject, nil}}} -> {:reject, nil} - {:transmogrifier, _} -> - {:error, "Transmogrifier failure."} + {:transmogrifier, _} = e -> + {:error, e} {:object, data, nil} -> reinject_object(%Object{}, data) diff --git a/lib/pleroma/pagination.ex b/lib/pleroma/pagination.ex index d43a96cd2..9a3795769 100644 --- a/lib/pleroma/pagination.ex +++ b/lib/pleroma/pagination.ex @@ -23,12 +23,12 @@ def page_keys, do: @page_keys @spec fetch_paginated(Ecto.Query.t(), map(), type(), atom() | nil) :: [Ecto.Schema.t()] def fetch_paginated(query, params, type \\ :keyset, table_binding \\ nil) - def fetch_paginated(query, %{"total" => true} = params, :keyset, table_binding) do + def fetch_paginated(query, %{total: true} = params, :keyset, table_binding) do total = Repo.aggregate(query, :count, :id) %{ total: total, - items: fetch_paginated(query, Map.drop(params, ["total"]), :keyset, table_binding) + items: fetch_paginated(query, Map.drop(params, [:total]), :keyset, table_binding) } end @@ -41,7 +41,7 @@ def fetch_paginated(query, params, :keyset, table_binding) do |> enforce_order(options) end - def fetch_paginated(query, %{"total" => true} = params, :offset, table_binding) do + def fetch_paginated(query, %{total: true} = params, :offset, table_binding) do total = query |> Ecto.Query.exclude(:left_join) @@ -49,7 +49,7 @@ def fetch_paginated(query, %{"total" => true} = params, :offset, table_binding) %{ total: total, - items: fetch_paginated(query, Map.drop(params, ["total"]), :offset, table_binding) + items: fetch_paginated(query, Map.drop(params, [:total]), :offset, table_binding) } end @@ -64,6 +64,12 @@ def fetch_paginated(query, params, :offset, table_binding) do @spec paginate(Ecto.Query.t(), map(), type(), atom() | nil) :: [Ecto.Schema.t()] def paginate(query, options, method \\ :keyset, table_binding \\ nil) + def paginate(list, options, _method, _table_binding) when is_list(list) do + offset = options[:offset] || 0 + limit = options[:limit] || 0 + Enum.slice(list, offset, limit) + end + def paginate(query, options, :keyset, table_binding) do query |> restrict(:min_id, options, table_binding) @@ -90,12 +96,6 @@ defp cast_params(params) do skip_order: :boolean } - params = - Enum.reduce(params, %{}, fn - {key, _value}, acc when is_atom(key) -> Map.drop(acc, [key]) - {key, value}, acc -> Map.put(acc, key, value) - end) - changeset = cast({%{}, param_types}, params, Map.keys(param_types)) changeset.changes end diff --git a/lib/pleroma/plugs/http_security_plug.ex b/lib/pleroma/plugs/http_security_plug.ex index 41e3a31f4..1420a9611 100644 --- a/lib/pleroma/plugs/http_security_plug.ex +++ b/lib/pleroma/plugs/http_security_plug.ex @@ -75,7 +75,7 @@ defp csp_string do sources = get_proxy_and_attachment_sources() {[img_src, sources], [media_src, sources]} else - {img_src, media_src} + {[img_src, " https:"], [media_src, " https:"]} end connect_src = ["connect-src 'self' blob: ", static_url, ?\s, websocket_url] @@ -113,6 +113,10 @@ defp get_proxy_and_attachment_sources do add_source(acc, host) end) + media_proxy_base_url = + if Config.get([:media_proxy, :base_url]), + do: URI.parse(Config.get([:media_proxy, :base_url])).host + upload_base_url = if Config.get([Pleroma.Upload, :base_url]), do: URI.parse(Config.get([Pleroma.Upload, :base_url])).host @@ -122,6 +126,7 @@ defp get_proxy_and_attachment_sources do do: URI.parse(Config.get([Pleroma.Uploaders.S3, :public_endpoint])).host [] + |> add_source(media_proxy_base_url) |> add_source(upload_base_url) |> add_source(s3_endpoint) |> add_source(media_proxy_whitelist) diff --git a/lib/pleroma/plugs/uploaded_media.ex b/lib/pleroma/plugs/uploaded_media.ex index 94147e0c4..40984cfc0 100644 --- a/lib/pleroma/plugs/uploaded_media.ex +++ b/lib/pleroma/plugs/uploaded_media.ex @@ -10,6 +10,8 @@ defmodule Pleroma.Plugs.UploadedMedia do import Pleroma.Web.Gettext require Logger + alias Pleroma.Web.MediaProxy + @behaviour Plug # no slashes @path "media" @@ -35,8 +37,7 @@ def call(%{request_path: <<"/", @path, "/", file::binary>>} = conn, opts) do %{query_params: %{"name" => name}} = conn -> name = String.replace(name, "\"", "\\\"") - conn - |> put_resp_header("content-disposition", "filename=\"#{name}\"") + put_resp_header(conn, "content-disposition", "filename=\"#{name}\"") conn -> conn @@ -47,7 +48,8 @@ def call(%{request_path: <<"/", @path, "/", file::binary>>} = conn, opts) do with uploader <- Keyword.fetch!(config, :uploader), proxy_remote = Keyword.get(config, :proxy_remote, false), - {:ok, get_method} <- uploader.get_file(file) do + {:ok, get_method} <- uploader.get_file(file), + false <- media_is_banned(conn, get_method) do get_media(conn, get_method, proxy_remote, opts) else _ -> @@ -59,6 +61,14 @@ def call(%{request_path: <<"/", @path, "/", file::binary>>} = conn, opts) do def call(conn, _opts), do: conn + defp media_is_banned(%{request_path: path} = _conn, {:static_dir, _}) do + MediaProxy.in_banned_urls(Pleroma.Web.base_url() <> path) + end + + defp media_is_banned(_, {:url, url}), do: MediaProxy.in_banned_urls(url) + + defp media_is_banned(_, _), do: false + defp get_media(conn, {:static_dir, directory}, _, opts) do static_opts = Map.get(opts, :static_plug_opts) diff --git a/lib/pleroma/repo.ex b/lib/pleroma/repo.ex index f62138466..f317e4d58 100644 --- a/lib/pleroma/repo.ex +++ b/lib/pleroma/repo.ex @@ -8,11 +8,10 @@ defmodule Pleroma.Repo do adapter: Ecto.Adapters.Postgres, migration_timestamps: [type: :naive_datetime_usec] + import Ecto.Query require Logger - defmodule Instrumenter do - use Prometheus.EctoInstrumenter - end + defmodule Instrumenter, do: use(Prometheus.EctoInstrumenter) @doc """ Dynamically loads the repository url from the @@ -50,36 +49,30 @@ def get_assoc(resource, association) do end end - def check_migrations_applied!() do - unless Pleroma.Config.get( - [:i_am_aware_this_may_cause_data_loss, :disable_migration_check], - false - ) do - Ecto.Migrator.with_repo(__MODULE__, fn repo -> - down_migrations = - Ecto.Migrator.migrations(repo) - |> Enum.reject(fn - {:up, _, _} -> true - {:down, _, _} -> false - end) + def chunk_stream(query, chunk_size) do + # We don't actually need start and end funcitons of resource streaming, + # but it seems to be the only way to not fetch records one-by-one and + # have individual records be the elements of the stream, instead of + # lists of records + Stream.resource( + fn -> 0 end, + fn + last_id -> + query + |> order_by(asc: :id) + |> where([r], r.id > ^last_id) + |> limit(^chunk_size) + |> all() + |> case do + [] -> + {:halt, last_id} - if length(down_migrations) > 0 do - down_migrations_text = - Enum.map(down_migrations, fn {:down, id, name} -> "- #{name} (#{id})\n" end) - - Logger.error( - "The following migrations were not applied:\n#{down_migrations_text}If you want to start Pleroma anyway, set\nconfig :pleroma, :i_am_aware_this_may_cause_data_loss, disable_migration_check: true" - ) - - raise Pleroma.Repo.UnappliedMigrationsError - end - end) - else - :ok - end + records -> + last_id = List.last(records).id + {records, last_id} + end + end, + fn _ -> :ok end + ) end end - -defmodule Pleroma.Repo.UnappliedMigrationsError do - defexception message: "Unapplied Migrations detected" -end diff --git a/lib/pleroma/signature.ex b/lib/pleroma/signature.ex index d01728361..3aa6909d2 100644 --- a/lib/pleroma/signature.ex +++ b/lib/pleroma/signature.ex @@ -5,10 +5,10 @@ defmodule Pleroma.Signature do @behaviour HTTPSignatures.Adapter + alias Pleroma.EctoType.ActivityPub.ObjectValidators alias Pleroma.Keys alias Pleroma.User alias Pleroma.Web.ActivityPub.ActivityPub - alias Pleroma.Web.ActivityPub.ObjectValidators.Types def key_id_to_actor_id(key_id) do uri = @@ -24,7 +24,7 @@ def key_id_to_actor_id(key_id) do maybe_ap_id = URI.to_string(uri) - case Types.ObjectID.cast(maybe_ap_id) do + case ObjectValidators.ObjectID.cast(maybe_ap_id) do {:ok, ap_id} -> {:ok, ap_id} diff --git a/lib/pleroma/stats.ex b/lib/pleroma/stats.ex index 6b3a8a41f..9a03f01db 100644 --- a/lib/pleroma/stats.ex +++ b/lib/pleroma/stats.ex @@ -97,20 +97,11 @@ def calculate_stat_data do } end - def get_status_visibility_count do - counter_cache = - CounterCache.get_as_map([ - "status_visibility_public", - "status_visibility_private", - "status_visibility_unlisted", - "status_visibility_direct" - ]) - - %{ - public: counter_cache["status_visibility_public"] || 0, - unlisted: counter_cache["status_visibility_unlisted"] || 0, - private: counter_cache["status_visibility_private"] || 0, - direct: counter_cache["status_visibility_direct"] || 0 - } + def get_status_visibility_count(instance \\ nil) do + if is_nil(instance) do + CounterCache.get_sum() + else + CounterCache.get_by_instance(instance) + end end end diff --git a/lib/pleroma/upload.ex b/lib/pleroma/upload.ex index 1be1a3a5b..797555bff 100644 --- a/lib/pleroma/upload.ex +++ b/lib/pleroma/upload.ex @@ -67,6 +67,7 @@ def store(upload, opts \\ []) do {:ok, %{ "type" => opts.activity_type, + "mediaType" => upload.content_type, "url" => [ %{ "type" => "Link", diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 72ee2d58e..9d5c61e79 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -14,6 +14,7 @@ defmodule Pleroma.User do alias Pleroma.Config alias Pleroma.Conversation.Participation alias Pleroma.Delivery + alias Pleroma.EctoType.ActivityPub.ObjectValidators alias Pleroma.Emoji alias Pleroma.FollowingRelationship alias Pleroma.Formatter @@ -30,7 +31,6 @@ defmodule Pleroma.User do alias Pleroma.Web alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.ActivityPub.Builder - alias Pleroma.Web.ActivityPub.ObjectValidators.Types alias Pleroma.Web.ActivityPub.Pipeline alias Pleroma.Web.ActivityPub.Utils alias Pleroma.Web.CommonAPI @@ -79,6 +79,7 @@ defmodule Pleroma.User do schema "users" do field(:bio, :string) + field(:raw_bio, :string) field(:email, :string) field(:name, :string) field(:nickname, :string) @@ -115,7 +116,7 @@ defmodule Pleroma.User do field(:is_admin, :boolean, default: false) field(:show_role, :boolean, default: true) field(:settings, :map, default: nil) - field(:uri, Types.Uri, default: nil) + field(:uri, ObjectValidators.Uri, default: nil) field(:hide_followers_count, :boolean, default: false) field(:hide_follows_count, :boolean, default: false) field(:hide_followers, :boolean, default: false) @@ -262,37 +263,60 @@ def account_status(%User{deactivated: true}), do: :deactivated def account_status(%User{password_reset_pending: true}), do: :password_reset_pending def account_status(%User{confirmation_pending: true}) do - case Config.get([:instance, :account_activation_required]) do - true -> :confirmation_pending - _ -> :active + if Config.get([:instance, :account_activation_required]) do + :confirmation_pending + else + :active end end def account_status(%User{}), do: :active - @spec visible_for?(User.t(), User.t() | nil) :: boolean() - def visible_for?(user, for_user \\ nil) + @spec visible_for(User.t(), User.t() | nil) :: + :visible + | :invisible + | :restricted_unauthenticated + | :deactivated + | :confirmation_pending + def visible_for(user, for_user \\ nil) - def visible_for?(%User{invisible: true}, _), do: false + def visible_for(%User{invisible: true}, _), do: :invisible - def visible_for?(%User{id: user_id}, %User{id: user_id}), do: true + def visible_for(%User{id: user_id}, %User{id: user_id}), do: :visible - def visible_for?(%User{local: local} = user, nil) do - cfg_key = - if local, - do: :local, - else: :remote - - if Config.get([:restrict_unauthenticated, :profiles, cfg_key]), - do: false, - else: account_status(user) == :active + def visible_for(%User{} = user, nil) do + if restrict_unauthenticated?(user) do + :restrict_unauthenticated + else + visible_account_status(user) + end end - def visible_for?(%User{} = user, for_user) do - account_status(user) == :active || superuser?(for_user) + def visible_for(%User{} = user, for_user) do + if superuser?(for_user) do + :visible + else + visible_account_status(user) + end end - def visible_for?(_, _), do: false + def visible_for(_, _), do: :invisible + + defp restrict_unauthenticated?(%User{local: local}) do + config_key = if local, do: :local, else: :remote + + Config.get([:restrict_unauthenticated, :profiles, config_key], false) + end + + defp visible_account_status(user) do + status = account_status(user) + + if status in [:active, :password_reset_pending] do + :visible + else + status + end + end @spec superuser?(User.t()) :: boolean() def superuser?(%User{local: true, is_admin: true}), do: true @@ -432,6 +456,7 @@ def update_changeset(struct, params \\ %{}) do params, [ :bio, + :raw_bio, :name, :emoji, :avatar, @@ -463,6 +488,7 @@ def update_changeset(struct, params \\ %{}) do |> validate_format(:nickname, local_nickname_regex()) |> validate_length(:bio, max: bio_limit) |> validate_length(:name, min: 1, max: name_limit) + |> validate_inclusion(:actor_type, ["Person", "Service"]) |> put_fields() |> put_emoji() |> put_change_if_present(:bio, &{:ok, parse_bio(&1, struct)}) @@ -607,7 +633,16 @@ def register_changeset(struct, params \\ %{}, opts \\ []) do struct |> confirmation_changeset(need_confirmation: need_confirmation?) - |> cast(params, [:bio, :email, :name, :nickname, :password, :password_confirmation, :emoji]) + |> cast(params, [ + :bio, + :raw_bio, + :email, + :name, + :nickname, + :password, + :password_confirmation, + :emoji + ]) |> validate_required([:name, :nickname, :password, :password_confirmation]) |> validate_confirmation(:password) |> unique_constraint(:email) @@ -747,7 +782,6 @@ def follow(%User{} = follower, %User{} = followed, state \\ :follow_accept) do follower |> update_following_count() - |> set_cache() end end @@ -776,7 +810,6 @@ defp do_unfollow(%User{} = follower, %User{} = followed) do {:ok, follower} = follower |> update_following_count() - |> set_cache() {:ok, follower, followed} @@ -1128,35 +1161,25 @@ defp follow_information_changeset(user, params) do ]) end + @spec update_follower_count(User.t()) :: {:ok, User.t()} def update_follower_count(%User{} = user) do if user.local or !Pleroma.Config.get([:instance, :external_user_synchronization]) do - follower_count_query = - User.Query.build(%{followers: user, deactivated: false}) - |> select([u], %{count: count(u.id)}) + follower_count = FollowingRelationship.follower_count(user) - User - |> where(id: ^user.id) - |> join(:inner, [u], s in subquery(follower_count_query)) - |> update([u, s], - set: [follower_count: s.count] - ) - |> select([u], u) - |> Repo.update_all([]) - |> case do - {1, [user]} -> set_cache(user) - _ -> {:error, user} - end + user + |> follow_information_changeset(%{follower_count: follower_count}) + |> update_and_set_cache else {:ok, maybe_fetch_follow_information(user)} end end - @spec update_following_count(User.t()) :: User.t() + @spec update_following_count(User.t()) :: {:ok, User.t()} def update_following_count(%User{local: false} = user) do if Pleroma.Config.get([:instance, :external_user_synchronization]) do - maybe_fetch_follow_information(user) + {:ok, maybe_fetch_follow_information(user)} else - user + {:ok, user} end end @@ -1165,7 +1188,7 @@ def update_following_count(%User{local: true} = user) do user |> follow_information_changeset(%{following_count: following_count}) - |> Repo.update!() + |> update_and_set_cache() end def set_unread_conversation_count(%User{local: true} = user) do @@ -1286,7 +1309,8 @@ def block(%User{} = blocker, %User{} = blocked) do unsubscribe(blocked, blocker) - if following?(blocked, blocker), do: unfollow(blocked, blocker) + unfollowing_blocked = Config.get([:activitypub, :unfollow_blocked], true) + if unfollowing_blocked && following?(blocked, blocker), do: unfollow(blocked, blocker) {:ok, blocker} = update_follower_count(blocker) {:ok, blocker, _} = Participation.mark_all_as_read(blocker, blocked) @@ -1488,6 +1512,9 @@ def perform(:delete, %User{} = user) do end) delete_user_activities(user) + delete_notifications_from_user_activities(user) + + delete_outgoing_pending_follow_requests(user) delete_or_deactivate(user) end @@ -1501,8 +1528,7 @@ def perform(:blocks_import, %User{} = blocker, blocked_identifiers) blocked_identifiers, fn blocked_identifier -> with {:ok, %User{} = blocked} <- get_or_fetch(blocked_identifier), - {:ok, _user_block} <- block(blocker, blocked), - {:ok, _} <- ActivityPub.block(blocker, blocked) do + {:ok, _block} <- CommonAPI.block(blocker, blocked) do blocked else err -> @@ -1574,6 +1600,13 @@ def follow_import(%User{} = follower, followed_identifiers) }) end + def delete_notifications_from_user_activities(%User{ap_id: ap_id}) do + Notification + |> join(:inner, [n], activity in assoc(n, :activity)) + |> where([n, a], fragment("? = ?", a.actor, ^ap_id)) + |> Repo.delete_all() + end + def delete_user_activities(%User{ap_id: ap_id} = user) do ap_id |> Activity.Queries.by_actor() @@ -1611,6 +1644,12 @@ defp delete_activity(%{data: %{"type" => type}} = activity, user) defp delete_activity(_activity, _user), do: "Doing nothing" + defp delete_outgoing_pending_follow_requests(user) do + user + |> FollowingRelationship.outgoing_pending_follow_requests_query() + |> Repo.delete_all() + end + def html_filter_policy(%User{no_rich_text: true}) do Pleroma.HTML.Scrubber.TwitterText end diff --git a/lib/pleroma/user/query.ex b/lib/pleroma/user/query.ex index 293bbc082..66ffe9090 100644 --- a/lib/pleroma/user/query.ex +++ b/lib/pleroma/user/query.ex @@ -45,7 +45,7 @@ defmodule Pleroma.User.Query do is_admin: boolean(), is_moderator: boolean(), super_users: boolean(), - exclude_service_users: boolean(), + invisible: boolean(), followers: User.t(), friends: User.t(), recipients_from_activity: [String.t()], @@ -89,8 +89,8 @@ defp compose_query({key, value}, query) where(query, [u], ilike(field(u, ^key), ^"%#{value}%")) end - defp compose_query({:exclude_service_users, _}, query) do - where(query, [u], not like(u.ap_id, "%/relay") and not like(u.ap_id, "%/internal/fetch")) + defp compose_query({:invisible, bool}, query) when is_boolean(bool) do + where(query, [u], u.invisible == ^bool) end defp compose_query({key, value}, query) diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index b8a2873d8..05bd824f5 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -5,10 +5,12 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do alias Pleroma.Activity alias Pleroma.Activity.Ir.Topics + alias Pleroma.ActivityExpiration alias Pleroma.Config alias Pleroma.Constants alias Pleroma.Conversation alias Pleroma.Conversation.Participation + alias Pleroma.Maps alias Pleroma.Notification alias Pleroma.Object alias Pleroma.Object.Containment @@ -19,7 +21,6 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do alias Pleroma.User alias Pleroma.Web.ActivityPub.MRF alias Pleroma.Web.ActivityPub.Transmogrifier - alias Pleroma.Web.ActivityPub.Utils alias Pleroma.Web.Streamer alias Pleroma.Web.WebFinger alias Pleroma.Workers.BackgroundWorker @@ -31,25 +32,6 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do require Logger require Pleroma.Constants - # For Announce activities, we filter the recipients based on following status for any actors - # that match actual users. See issue #164 for more information about why this is necessary. - defp get_recipients(%{"type" => "Announce"} = data) do - to = Map.get(data, "to", []) - cc = Map.get(data, "cc", []) - bcc = Map.get(data, "bcc", []) - actor = User.get_cached_by_ap_id(data["actor"]) - - recipients = - Enum.filter(Enum.concat([to, cc, bcc]), fn recipient -> - case User.get_cached_by_ap_id(recipient) do - nil -> true - user -> User.following?(user, actor) - end - end) - - {recipients, to, cc} - end - defp get_recipients(%{"type" => "Create"} = data) do to = Map.get(data, "to", []) cc = Map.get(data, "cc", []) @@ -67,16 +49,12 @@ defp get_recipients(data) do {recipients, to, cc} end - defp check_actor_is_active(actor) do - if not is_nil(actor) do - with user <- User.get_cached_by_ap_id(actor), - false <- user.deactivated do - true - else - _e -> false - end - else - true + defp check_actor_is_active(nil), do: true + + defp check_actor_is_active(actor) when is_binary(actor) do + case User.get_cached_by_ap_id(actor) do + %User{deactivated: deactivated} -> not deactivated + _ -> false end end @@ -87,7 +65,7 @@ defp check_remote_limit(%{"object" => %{"content" => content}}) when not is_nil( defp check_remote_limit(_), do: true - def increase_note_count_if_public(actor, object) do + defp increase_note_count_if_public(actor, object) do if is_public?(object), do: User.increase_note_count(actor), else: {:ok, actor} end @@ -95,38 +73,35 @@ def decrease_note_count_if_public(actor, object) do if is_public?(object), do: User.decrease_note_count(actor), else: {:ok, actor} end - def increase_replies_count_if_reply(%{ - "object" => %{"inReplyTo" => reply_ap_id} = object, - "type" => "Create" - }) do + defp increase_replies_count_if_reply(%{ + "object" => %{"inReplyTo" => reply_ap_id} = object, + "type" => "Create" + }) do if is_public?(object) do Object.increase_replies_count(reply_ap_id) end end - def increase_replies_count_if_reply(_create_data), do: :noop + defp increase_replies_count_if_reply(_create_data), do: :noop - def decrease_replies_count_if_reply(%Object{ - data: %{"inReplyTo" => reply_ap_id} = object - }) do - if is_public?(object) do - Object.decrease_replies_count(reply_ap_id) - end - end - - def decrease_replies_count_if_reply(_object), do: :noop - - def increase_poll_votes_if_vote(%{ - "object" => %{"inReplyTo" => reply_ap_id, "name" => name}, - "type" => "Create", - "actor" => actor - }) do + defp increase_poll_votes_if_vote(%{ + "object" => %{"inReplyTo" => reply_ap_id, "name" => name}, + "type" => "Create", + "actor" => actor + }) do Object.increase_vote_count(reply_ap_id, name, actor) end - def increase_poll_votes_if_vote(_create_data), do: :noop + defp increase_poll_votes_if_vote(_create_data), do: :noop + @object_types ["ChatMessage"] @spec persist(map(), keyword()) :: {:ok, Activity.t() | Object.t()} + def persist(%{"type" => type} = object, meta) when type in @object_types do + with {:ok, object} <- Object.create(object) do + {:ok, object, meta} + end + end + def persist(object, meta) do with local <- Keyword.fetch!(meta, :local), {recipients, _, _} <- get_recipients(object), @@ -153,20 +128,17 @@ def insert(map, local \\ true, fake \\ false, bypass_actor_check \\ false) when {:containment, :ok} <- {:containment, Containment.contain_child(map)}, {:ok, map, object} <- insert_full_object(map) do {:ok, activity} = - Repo.insert(%Activity{ + %Activity{ data: map, local: local, actor: map["actor"], recipients: recipients - }) + } + |> Repo.insert() + |> maybe_create_activity_expiration() # Splice in the child object if we have one. - activity = - if not is_nil(object) do - Map.put(activity, :object, object) - else - activity - end + activity = Maps.put_if_present(activity, :object, object) BackgroundWorker.enqueue("fetch_data_for_activity", %{"activity_id" => activity.id}) @@ -201,10 +173,18 @@ def notify_and_stream(activity) do stream_out_participations(participations) end + defp maybe_create_activity_expiration({:ok, %{data: %{"expires_at" => expires_at}} = activity}) do + with {:ok, _} <- ActivityExpiration.create(activity, expires_at) do + {:ok, activity} + end + end + + defp maybe_create_activity_expiration(result), do: result + defp create_or_bump_conversation(activity, actor) do with {:ok, conversation} <- Conversation.create_or_bump_for(activity), - %User{} = user <- User.get_cached_by_ap_id(actor), - Participation.mark_as_read(user, conversation) do + %User{} = user <- User.get_cached_by_ap_id(actor) do + Participation.mark_as_read(user, conversation) {:ok, conversation} end end @@ -226,13 +206,15 @@ def stream_out_participations(participations) do end def stream_out_participations(%Object{data: %{"context" => context}}, user) do - with %Conversation{} = conversation <- Conversation.get_for_ap_id(context), - conversation = Repo.preload(conversation, :participations), - last_activity_id = - fetch_latest_activity_id_for_context(conversation.ap_id, %{ - "user" => user, - "blocking_user" => user - }) do + with %Conversation{} = conversation <- Conversation.get_for_ap_id(context) do + conversation = Repo.preload(conversation, :participations) + + last_activity_id = + fetch_latest_direct_activity_id_for_context(conversation.ap_id, %{ + user: user, + blocking_user: user + }) + if last_activity_id do stream_out_participations(conversation.participations) end @@ -266,12 +248,13 @@ defp do_create(%{to: to, actor: actor, context: context, object: object} = param published = params[:published] quick_insert? = Config.get([:env]) == :benchmark - with create_data <- - make_create_data( - %{to: to, actor: actor, published: published, context: context, object: object}, - additional - ), - {:ok, activity} <- insert(create_data, local, fake), + create_data = + make_create_data( + %{to: to, actor: actor, published: published, context: context, object: object}, + additional + ) + + with {:ok, activity} <- insert(create_data, local, fake), {:fake, false, activity} <- {:fake, fake, activity}, _ <- increase_replies_count_if_reply(create_data), _ <- increase_poll_votes_if_vote(create_data), @@ -299,12 +282,13 @@ def listen(%{to: to, actor: actor, context: context, object: object} = params) d local = !(params[:local] == false) published = params[:published] - with listen_data <- - make_listen_data( - %{to: to, actor: actor, published: published, context: context, object: object}, - additional - ), - {:ok, activity} <- insert(listen_data, local), + listen_data = + make_listen_data( + %{to: to, actor: actor, published: published, context: context, object: object}, + additional + ) + + with {:ok, activity} <- insert(listen_data, local), _ <- notify_and_stream(activity), :ok <- maybe_federate(activity) do {:ok, activity} @@ -322,53 +306,36 @@ def reject(params) do end @spec accept_or_reject(String.t(), map()) :: {:ok, Activity.t()} | {:error, any()} - def accept_or_reject(type, %{to: to, actor: actor, object: object} = params) do + defp accept_or_reject(type, %{to: to, actor: actor, object: object} = params) do local = Map.get(params, :local, true) activity_id = Map.get(params, :activity_id, nil) - with data <- - %{"to" => to, "type" => type, "actor" => actor.ap_id, "object" => object} - |> Utils.maybe_put("id", activity_id), - {:ok, activity} <- insert(data, local), + data = + %{"to" => to, "type" => type, "actor" => actor.ap_id, "object" => object} + |> Maps.put_if_present("id", activity_id) + + with {:ok, activity} <- insert(data, local), _ <- notify_and_stream(activity), :ok <- maybe_federate(activity) do {:ok, activity} end end - @spec update(map()) :: {:ok, Activity.t()} | {:error, any()} - def update(%{to: to, cc: cc, actor: actor, object: object} = params) do - local = !(params[:local] == false) - activity_id = params[:activity_id] - - with data <- %{ - "to" => to, - "cc" => cc, - "type" => "Update", - "actor" => actor, - "object" => object - }, - data <- Utils.maybe_put(data, "id", activity_id), - {:ok, activity} <- insert(data, local), - _ <- notify_and_stream(activity), - :ok <- maybe_federate(activity) do - {:ok, activity} - end - end - - @spec follow(User.t(), User.t(), String.t() | nil, boolean()) :: + @spec follow(User.t(), User.t(), String.t() | nil, boolean(), keyword()) :: {:ok, Activity.t()} | {:error, any()} - def follow(follower, followed, activity_id \\ nil, local \\ true) do + def follow(follower, followed, activity_id \\ nil, local \\ true, opts \\ []) do with {:ok, result} <- - Repo.transaction(fn -> do_follow(follower, followed, activity_id, local) end) do + Repo.transaction(fn -> do_follow(follower, followed, activity_id, local, opts) end) do result end end - defp do_follow(follower, followed, activity_id, local) do - with data <- make_follow_data(follower, followed, activity_id), - {:ok, activity} <- insert(data, local), - _ <- notify_and_stream(activity), + defp do_follow(follower, followed, activity_id, local, opts) do + skip_notify_and_stream = Keyword.get(opts, :skip_notify_and_stream, false) + data = make_follow_data(follower, followed, activity_id) + + with {:ok, activity} <- insert(data, local), + _ <- skip_notify_and_stream || notify_and_stream(activity), :ok <- maybe_federate(activity) do {:ok, activity} else @@ -399,33 +366,6 @@ defp do_unfollow(follower, followed, activity_id, local) do end end - @spec block(User.t(), User.t(), String.t() | nil, boolean()) :: - {:ok, Activity.t()} | {:error, any()} - def block(blocker, blocked, activity_id \\ nil, local \\ true) do - with {:ok, result} <- - Repo.transaction(fn -> do_block(blocker, blocked, activity_id, local) end) do - result - end - end - - defp do_block(blocker, blocked, activity_id, local) do - unfollow_blocked = Config.get([:activitypub, :unfollow_blocked]) - - if unfollow_blocked do - follow_activity = fetch_latest_follow(blocker, blocked) - if follow_activity, do: unfollow(blocker, blocked, nil, local) - end - - with block_data <- make_block_data(blocker, blocked, activity_id), - {:ok, activity} <- insert(block_data, local), - _ <- notify_and_stream(activity), - :ok <- maybe_federate(activity) do - {:ok, activity} - else - {:error, error} -> Repo.rollback(error) - end - end - @spec flag(map()) :: {:ok, Activity.t()} | {:error, any()} def flag( %{ @@ -496,8 +436,8 @@ def fetch_activities_for_context_query(context, opts) do public = [Constants.as_public()] recipients = - if opts["user"], - do: [opts["user"].ap_id | User.following(opts["user"])] ++ public, + if opts[:user], + do: [opts[:user].ap_id | User.following(opts[:user])] ++ public, else: public from(activity in Activity) @@ -505,7 +445,7 @@ def fetch_activities_for_context_query(context, opts) do |> maybe_preload_bookmarks(opts) |> maybe_set_thread_muted_field(opts) |> restrict_blocked(opts) - |> restrict_recipients(recipients, opts["user"]) + |> restrict_recipients(recipients, opts[:user]) |> where( [activity], fragment( @@ -528,11 +468,12 @@ def fetch_activities_for_context(context, opts \\ %{}) do |> Repo.all() end - @spec fetch_latest_activity_id_for_context(String.t(), keyword() | map()) :: + @spec fetch_latest_direct_activity_id_for_context(String.t(), keyword() | map()) :: FlakeId.Ecto.CompatType.t() | nil - def fetch_latest_activity_id_for_context(context, opts \\ %{}) do + def fetch_latest_direct_activity_id_for_context(context, opts \\ %{}) do context - |> fetch_activities_for_context_query(Map.merge(%{"skip_preload" => true}, opts)) + |> fetch_activities_for_context_query(Map.merge(%{skip_preload: true}, opts)) + |> restrict_visibility(%{visibility: "direct"}) |> limit(1) |> select([a], a.id) |> Repo.one() @@ -540,24 +481,18 @@ def fetch_latest_activity_id_for_context(context, opts \\ %{}) do @spec fetch_public_or_unlisted_activities(map(), Pagination.type()) :: [Activity.t()] def fetch_public_or_unlisted_activities(opts \\ %{}, pagination \\ :keyset) do - opts = Map.drop(opts, ["user"]) + opts = Map.delete(opts, :user) - query = fetch_activities_query([Constants.as_public()], opts) - - query = - if opts["restrict_unlisted"] do - restrict_unlisted(query) - else - query - end - - Pagination.fetch_paginated(query, opts, pagination) + [Constants.as_public()] + |> fetch_activities_query(opts) + |> restrict_unlisted(opts) + |> Pagination.fetch_paginated(opts, pagination) end @spec fetch_public_activities(map(), Pagination.type()) :: [Activity.t()] def fetch_public_activities(opts \\ %{}, pagination \\ :keyset) do opts - |> Map.put("restrict_unlisted", true) + |> Map.put(:restrict_unlisted, true) |> fetch_public_or_unlisted_activities(pagination) end @@ -566,20 +501,17 @@ def fetch_public_activities(opts \\ %{}, pagination \\ :keyset) do defp restrict_visibility(query, %{visibility: visibility}) when is_list(visibility) do if Enum.all?(visibility, &(&1 in @valid_visibilities)) do - query = - from( - a in query, - where: - fragment( - "activity_visibility(?, ?, ?) = ANY (?)", - a.actor, - a.recipients, - a.data, - ^visibility - ) - ) - - query + from( + a in query, + where: + fragment( + "activity_visibility(?, ?, ?) = ANY (?)", + a.actor, + a.recipients, + a.data, + ^visibility + ) + ) else Logger.error("Could not restrict visibility to #{visibility}") end @@ -601,7 +533,7 @@ defp restrict_visibility(_query, %{visibility: visibility}) defp restrict_visibility(query, _visibility), do: query - defp exclude_visibility(query, %{"exclude_visibilities" => visibility}) + defp exclude_visibility(query, %{exclude_visibilities: visibility}) when is_list(visibility) do if Enum.all?(visibility, &(&1 in @valid_visibilities)) do from( @@ -621,7 +553,7 @@ defp exclude_visibility(query, %{"exclude_visibilities" => visibility}) end end - defp exclude_visibility(query, %{"exclude_visibilities" => visibility}) + defp exclude_visibility(query, %{exclude_visibilities: visibility}) when visibility in @valid_visibilities do from( a in query, @@ -636,7 +568,7 @@ defp exclude_visibility(query, %{"exclude_visibilities" => visibility}) ) end - defp exclude_visibility(query, %{"exclude_visibilities" => visibility}) + defp exclude_visibility(query, %{exclude_visibilities: visibility}) when visibility not in [nil | @valid_visibilities] do Logger.error("Could not exclude visibility to #{visibility}") query @@ -647,14 +579,10 @@ defp exclude_visibility(query, _visibility), do: query defp restrict_thread_visibility(query, _, %{skip_thread_containment: true} = _), do: query - defp restrict_thread_visibility( - query, - %{"user" => %User{skip_thread_containment: true}}, - _ - ), - do: query + defp restrict_thread_visibility(query, %{user: %User{skip_thread_containment: true}}, _), + do: query - defp restrict_thread_visibility(query, %{"user" => %User{ap_id: ap_id}}, _) do + defp restrict_thread_visibility(query, %{user: %User{ap_id: ap_id}}, _) do from( a in query, where: fragment("thread_visibility(?, (?)->>'id') = true", ^ap_id, a.data) @@ -666,87 +594,99 @@ defp restrict_thread_visibility(query, _, _), do: query def fetch_user_abstract_activities(user, reading_user, params \\ %{}) do params = params - |> Map.put("user", reading_user) - |> Map.put("actor_id", user.ap_id) + |> Map.put(:user, reading_user) + |> Map.put(:actor_id, user.ap_id) - recipients = - user_activities_recipients(%{ - "godmode" => params["godmode"], - "reading_user" => reading_user - }) - - fetch_activities(recipients, params) + %{ + godmode: params[:godmode], + reading_user: reading_user + } + |> user_activities_recipients() + |> fetch_activities(params) |> Enum.reverse() end def fetch_user_activities(user, reading_user, params \\ %{}) do params = params - |> Map.put("type", ["Create", "Announce"]) - |> Map.put("user", reading_user) - |> Map.put("actor_id", user.ap_id) - |> Map.put("pinned_activity_ids", user.pinned_activities) + |> Map.put(:type, ["Create", "Announce"]) + |> Map.put(:user, reading_user) + |> Map.put(:actor_id, user.ap_id) + |> Map.put(:pinned_activity_ids, user.pinned_activities) params = if User.blocks?(reading_user, user) do params else params - |> Map.put("blocking_user", reading_user) - |> Map.put("muting_user", reading_user) + |> Map.put(:blocking_user, reading_user) + |> Map.put(:muting_user, reading_user) end - recipients = - user_activities_recipients(%{ - "godmode" => params["godmode"], - "reading_user" => reading_user - }) - - fetch_activities(recipients, params) + %{ + godmode: params[:godmode], + reading_user: reading_user + } + |> user_activities_recipients() + |> fetch_activities(params) |> Enum.reverse() end def fetch_statuses(reading_user, params) do - params = - params - |> Map.put("type", ["Create", "Announce"]) + params = Map.put(params, :type, ["Create", "Announce"]) - recipients = - user_activities_recipients(%{ - "godmode" => params["godmode"], - "reading_user" => reading_user - }) - - fetch_activities(recipients, params, :offset) + %{ + godmode: params[:godmode], + reading_user: reading_user + } + |> user_activities_recipients() + |> fetch_activities(params, :offset) |> Enum.reverse() end - defp user_activities_recipients(%{"godmode" => true}) do - [] - end + defp user_activities_recipients(%{godmode: true}), do: [] - defp user_activities_recipients(%{"reading_user" => reading_user}) do + defp user_activities_recipients(%{reading_user: reading_user}) do if reading_user do - [Constants.as_public()] ++ [reading_user.ap_id | User.following(reading_user)] + [Constants.as_public(), reading_user.ap_id | User.following(reading_user)] else [Constants.as_public()] end end - defp restrict_since(query, %{"since_id" => ""}), do: query + defp restrict_announce_object_actor(_query, %{announce_filtering_user: _, skip_preload: true}) do + raise "Can't use the child object without preloading!" + end - defp restrict_since(query, %{"since_id" => since_id}) do + defp restrict_announce_object_actor(query, %{announce_filtering_user: %{ap_id: actor}}) do + from( + [activity, object] in query, + where: + fragment( + "?->>'type' != ? or ?->>'actor' != ?", + activity.data, + "Announce", + object.data, + ^actor + ) + ) + end + + defp restrict_announce_object_actor(query, _), do: query + + defp restrict_since(query, %{since_id: ""}), do: query + + defp restrict_since(query, %{since_id: since_id}) do from(activity in query, where: activity.id > ^since_id) end defp restrict_since(query, _), do: query - defp restrict_tag_reject(_query, %{"tag_reject" => _tag_reject, "skip_preload" => true}) do + defp restrict_tag_reject(_query, %{tag_reject: _tag_reject, skip_preload: true}) do raise "Can't use the child object without preloading!" end - defp restrict_tag_reject(query, %{"tag_reject" => tag_reject}) - when is_list(tag_reject) and tag_reject != [] do + defp restrict_tag_reject(query, %{tag_reject: [_ | _] = tag_reject}) do from( [_activity, object] in query, where: fragment("not (?)->'tag' \\?| (?)", object.data, ^tag_reject) @@ -755,12 +695,11 @@ defp restrict_tag_reject(query, %{"tag_reject" => tag_reject}) defp restrict_tag_reject(query, _), do: query - defp restrict_tag_all(_query, %{"tag_all" => _tag_all, "skip_preload" => true}) do + defp restrict_tag_all(_query, %{tag_all: _tag_all, skip_preload: true}) do raise "Can't use the child object without preloading!" end - defp restrict_tag_all(query, %{"tag_all" => tag_all}) - when is_list(tag_all) and tag_all != [] do + defp restrict_tag_all(query, %{tag_all: [_ | _] = tag_all}) do from( [_activity, object] in query, where: fragment("(?)->'tag' \\?& (?)", object.data, ^tag_all) @@ -769,18 +708,18 @@ defp restrict_tag_all(query, %{"tag_all" => tag_all}) defp restrict_tag_all(query, _), do: query - defp restrict_tag(_query, %{"tag" => _tag, "skip_preload" => true}) do + defp restrict_tag(_query, %{tag: _tag, skip_preload: true}) do raise "Can't use the child object without preloading!" end - defp restrict_tag(query, %{"tag" => tag}) when is_list(tag) do + defp restrict_tag(query, %{tag: tag}) when is_list(tag) do from( [_activity, object] in query, where: fragment("(?)->'tag' \\?| (?)", object.data, ^tag) ) end - defp restrict_tag(query, %{"tag" => tag}) when is_binary(tag) do + defp restrict_tag(query, %{tag: tag}) when is_binary(tag) do from( [_activity, object] in query, where: fragment("(?)->'tag' \\? (?)", object.data, ^tag) @@ -803,35 +742,35 @@ defp restrict_recipients(query, recipients, user) do ) end - defp restrict_local(query, %{"local_only" => true}) do + defp restrict_local(query, %{local_only: true}) do from(activity in query, where: activity.local == true) end defp restrict_local(query, _), do: query - defp restrict_actor(query, %{"actor_id" => actor_id}) do + defp restrict_actor(query, %{actor_id: actor_id}) do from(activity in query, where: activity.actor == ^actor_id) end defp restrict_actor(query, _), do: query - defp restrict_type(query, %{"type" => type}) when is_binary(type) do + defp restrict_type(query, %{type: type}) when is_binary(type) do from(activity in query, where: fragment("?->>'type' = ?", activity.data, ^type)) end - defp restrict_type(query, %{"type" => type}) do + defp restrict_type(query, %{type: type}) do from(activity in query, where: fragment("?->>'type' = ANY(?)", activity.data, ^type)) end defp restrict_type(query, _), do: query - defp restrict_state(query, %{"state" => state}) do + defp restrict_state(query, %{state: state}) do from(activity in query, where: fragment("?->>'state' = ?", activity.data, ^state)) end defp restrict_state(query, _), do: query - defp restrict_favorited_by(query, %{"favorited_by" => ap_id}) do + defp restrict_favorited_by(query, %{favorited_by: ap_id}) do from( [_activity, object] in query, where: fragment("(?)->'likes' \\? (?)", object.data, ^ap_id) @@ -840,20 +779,21 @@ defp restrict_favorited_by(query, %{"favorited_by" => ap_id}) do defp restrict_favorited_by(query, _), do: query - defp restrict_media(_query, %{"only_media" => _val, "skip_preload" => true}) do + defp restrict_media(_query, %{only_media: _val, skip_preload: true}) do raise "Can't use the child object without preloading!" end - defp restrict_media(query, %{"only_media" => val}) when val in [true, "true", "1"] do + defp restrict_media(query, %{only_media: true}) do from( - [_activity, object] in query, + [activity, object] in query, + where: fragment("(?)->>'type' = ?", activity.data, "Create"), where: fragment("not (?)->'attachment' = (?)", object.data, ^[]) ) end defp restrict_media(query, _), do: query - defp restrict_replies(query, %{"exclude_replies" => val}) when val in [true, "true", "1"] do + defp restrict_replies(query, %{exclude_replies: true}) do from( [_activity, object] in query, where: fragment("?->>'inReplyTo' is null", object.data) @@ -861,8 +801,8 @@ defp restrict_replies(query, %{"exclude_replies" => val}) when val in [true, "tr end defp restrict_replies(query, %{ - "reply_filtering_user" => user, - "reply_visibility" => "self" + reply_filtering_user: user, + reply_visibility: "self" }) do from( [activity, object] in query, @@ -877,8 +817,8 @@ defp restrict_replies(query, %{ end defp restrict_replies(query, %{ - "reply_filtering_user" => user, - "reply_visibility" => "following" + reply_filtering_user: user, + reply_visibility: "following" }) do from( [activity, object] in query, @@ -897,16 +837,16 @@ defp restrict_replies(query, %{ defp restrict_replies(query, _), do: query - defp restrict_reblogs(query, %{"exclude_reblogs" => val}) when val in [true, "true", "1"] do + defp restrict_reblogs(query, %{exclude_reblogs: true}) do from(activity in query, where: fragment("?->>'type' != 'Announce'", activity.data)) end defp restrict_reblogs(query, _), do: query - defp restrict_muted(query, %{"with_muted" => val}) when val in [true, "true", "1"], do: query + defp restrict_muted(query, %{with_muted: true}), do: query - defp restrict_muted(query, %{"muting_user" => %User{} = user} = opts) do - mutes = opts["muted_users_ap_ids"] || User.muted_users_ap_ids(user) + defp restrict_muted(query, %{muting_user: %User{} = user} = opts) do + mutes = opts[:muted_users_ap_ids] || User.muted_users_ap_ids(user) query = from([activity] in query, @@ -914,7 +854,7 @@ defp restrict_muted(query, %{"muting_user" => %User{} = user} = opts) do where: fragment("not (?->'to' \\?| ?)", activity.data, ^mutes) ) - unless opts["skip_preload"] do + unless opts[:skip_preload] do from([thread_mute: tm] in query, where: is_nil(tm.user_id)) else query @@ -923,8 +863,8 @@ defp restrict_muted(query, %{"muting_user" => %User{} = user} = opts) do defp restrict_muted(query, _), do: query - defp restrict_blocked(query, %{"blocking_user" => %User{} = user} = opts) do - blocked_ap_ids = opts["blocked_users_ap_ids"] || User.blocked_users_ap_ids(user) + defp restrict_blocked(query, %{blocking_user: %User{} = user} = opts) do + blocked_ap_ids = opts[:blocked_users_ap_ids] || User.blocked_users_ap_ids(user) domain_blocks = user.domain_blocks || [] following_ap_ids = User.get_friends_ap_ids(user) @@ -936,6 +876,12 @@ defp restrict_blocked(query, %{"blocking_user" => %User{} = user} = opts) do [activity, object: o] in query, where: fragment("not (? = ANY(?))", activity.actor, ^blocked_ap_ids), where: fragment("not (? && ?)", activity.recipients, ^blocked_ap_ids), + where: + fragment( + "recipients_contain_blocked_domains(?, ?) = false", + activity.recipients, + ^domain_blocks + ), where: fragment( "not (?->>'type' = 'Announce' and ?->'to' \\?| ?)", @@ -964,7 +910,7 @@ defp restrict_blocked(query, %{"blocking_user" => %User{} = user} = opts) do defp restrict_blocked(query, _), do: query - defp restrict_unlisted(query) do + defp restrict_unlisted(query, %{restrict_unlisted: true}) do from( activity in query, where: @@ -976,19 +922,16 @@ defp restrict_unlisted(query) do ) end - # TODO: when all endpoints migrated to OpenAPI compare `pinned` with `true` (boolean) only, - # the same for `restrict_media/2`, `restrict_replies/2`, 'restrict_reblogs/2' - # and `restrict_muted/2` + defp restrict_unlisted(query, _), do: query - defp restrict_pinned(query, %{"pinned" => pinned, "pinned_activity_ids" => ids}) - when pinned in [true, "true", "1"] do + defp restrict_pinned(query, %{pinned: true, pinned_activity_ids: ids}) do from(activity in query, where: activity.id in ^ids) end defp restrict_pinned(query, _), do: query - defp restrict_muted_reblogs(query, %{"muting_user" => %User{} = user} = opts) do - muted_reblogs = opts["reblog_muted_users_ap_ids"] || User.reblog_muted_users_ap_ids(user) + defp restrict_muted_reblogs(query, %{muting_user: %User{} = user} = opts) do + muted_reblogs = opts[:reblog_muted_users_ap_ids] || User.reblog_muted_users_ap_ids(user) from( activity in query, @@ -1004,7 +947,7 @@ defp restrict_muted_reblogs(query, %{"muting_user" => %User{} = user} = opts) do defp restrict_muted_reblogs(query, _), do: query - defp restrict_instance(query, %{"instance" => instance}) do + defp restrict_instance(query, %{instance: instance}) do users = from( u in User, @@ -1018,7 +961,7 @@ defp restrict_instance(query, %{"instance" => instance}) do defp restrict_instance(query, _), do: query - defp exclude_poll_votes(query, %{"include_poll_votes" => true}), do: query + defp exclude_poll_votes(query, %{include_poll_votes: true}), do: query defp exclude_poll_votes(query, _) do if has_named_binding?(query, :object) do @@ -1030,38 +973,61 @@ defp exclude_poll_votes(query, _) do end end - defp exclude_id(query, %{"exclude_id" => id}) when is_binary(id) do + defp exclude_chat_messages(query, %{include_chat_messages: true}), do: query + + defp exclude_chat_messages(query, _) do + if has_named_binding?(query, :object) do + from([activity, object: o] in query, + where: fragment("not(?->>'type' = ?)", o.data, "ChatMessage") + ) + else + query + end + end + + defp exclude_invisible_actors(query, %{invisible_actors: true}), do: query + + defp exclude_invisible_actors(query, _opts) do + invisible_ap_ids = + User.Query.build(%{invisible: true, select: [:ap_id]}) + |> Repo.all() + |> Enum.map(fn %{ap_id: ap_id} -> ap_id end) + + from([activity] in query, where: activity.actor not in ^invisible_ap_ids) + end + + defp exclude_id(query, %{exclude_id: id}) when is_binary(id) do from(activity in query, where: activity.id != ^id) end defp exclude_id(query, _), do: query - defp maybe_preload_objects(query, %{"skip_preload" => true}), do: query + defp maybe_preload_objects(query, %{skip_preload: true}), do: query defp maybe_preload_objects(query, _) do query |> Activity.with_preloaded_object() end - defp maybe_preload_bookmarks(query, %{"skip_preload" => true}), do: query + defp maybe_preload_bookmarks(query, %{skip_preload: true}), do: query defp maybe_preload_bookmarks(query, opts) do query - |> Activity.with_preloaded_bookmark(opts["user"]) + |> Activity.with_preloaded_bookmark(opts[:user]) end - defp maybe_preload_report_notes(query, %{"preload_report_notes" => true}) do + defp maybe_preload_report_notes(query, %{preload_report_notes: true}) do query |> Activity.with_preloaded_report_notes() end defp maybe_preload_report_notes(query, _), do: query - defp maybe_set_thread_muted_field(query, %{"skip_preload" => true}), do: query + defp maybe_set_thread_muted_field(query, %{skip_preload: true}), do: query defp maybe_set_thread_muted_field(query, opts) do query - |> Activity.with_set_thread_muted_field(opts["muting_user"] || opts["user"]) + |> Activity.with_set_thread_muted_field(opts[:muting_user] || opts[:user]) end defp maybe_order(query, %{order: :desc}) do @@ -1077,24 +1043,23 @@ defp maybe_order(query, %{order: :asc}) do defp maybe_order(query, _), do: query defp fetch_activities_query_ap_ids_ops(opts) do - source_user = opts["muting_user"] + source_user = opts[:muting_user] ap_id_relationships = if source_user, do: [:mute, :reblog_mute], else: [] ap_id_relationships = - ap_id_relationships ++ - if opts["blocking_user"] && opts["blocking_user"] == source_user do - [:block] - else - [] - end + if opts[:blocking_user] && opts[:blocking_user] == source_user do + [:block | ap_id_relationships] + else + ap_id_relationships + end preloaded_ap_ids = User.outgoing_relationships_ap_ids(source_user, ap_id_relationships) - restrict_blocked_opts = Map.merge(%{"blocked_users_ap_ids" => preloaded_ap_ids[:block]}, opts) - restrict_muted_opts = Map.merge(%{"muted_users_ap_ids" => preloaded_ap_ids[:mute]}, opts) + restrict_blocked_opts = Map.merge(%{blocked_users_ap_ids: preloaded_ap_ids[:block]}, opts) + restrict_muted_opts = Map.merge(%{muted_users_ap_ids: preloaded_ap_ids[:mute]}, opts) restrict_muted_reblogs_opts = - Map.merge(%{"reblog_muted_users_ap_ids" => preloaded_ap_ids[:reblog_mute]}, opts) + Map.merge(%{reblog_muted_users_ap_ids: preloaded_ap_ids[:reblog_mute]}, opts) {restrict_blocked_opts, restrict_muted_opts, restrict_muted_reblogs_opts} end @@ -1113,7 +1078,7 @@ def fetch_activities_query(recipients, opts \\ %{}) do |> maybe_preload_report_notes(opts) |> maybe_set_thread_muted_field(opts) |> maybe_order(opts) - |> restrict_recipients(recipients, opts["user"]) + |> restrict_recipients(recipients, opts[:user]) |> restrict_replies(opts) |> restrict_tag(opts) |> restrict_tag_reject(opts) @@ -1133,18 +1098,21 @@ def fetch_activities_query(recipients, opts \\ %{}) do |> restrict_pinned(opts) |> restrict_muted_reblogs(restrict_muted_reblogs_opts) |> restrict_instance(opts) + |> restrict_announce_object_actor(opts) |> Activity.restrict_deactivated_users() |> exclude_poll_votes(opts) + |> exclude_chat_messages(opts) + |> exclude_invisible_actors(opts) |> exclude_visibility(opts) end def fetch_activities(recipients, opts \\ %{}, pagination \\ :keyset) do - list_memberships = Pleroma.List.memberships(opts["user"]) + list_memberships = Pleroma.List.memberships(opts[:user]) fetch_activities_query(recipients ++ list_memberships, opts) |> Pagination.fetch_paginated(opts, pagination) |> Enum.reverse() - |> maybe_update_cc(list_memberships, opts["user"]) + |> maybe_update_cc(list_memberships, opts[:user]) end @doc """ @@ -1157,19 +1125,17 @@ def fetch_favourites(user, params \\ %{}, pagination \\ :keyset) do |> Activity.Queries.by_type("Like") |> Activity.with_joined_object() |> Object.with_joined_activity() - |> select([_like, object, activity], %{activity | object: object}) + |> select([like, object, activity], %{activity | object: object, pagination_id: like.id}) |> order_by([like, _, _], desc_nulls_last: like.id) |> Pagination.fetch_paginated( - Map.merge(params, %{"skip_order" => true}), - pagination, - :object_activity + Map.merge(params, %{skip_order: true}), + pagination ) end - defp maybe_update_cc(activities, list_memberships, %User{ap_id: user_ap_id}) - when is_list(list_memberships) and length(list_memberships) > 0 do + defp maybe_update_cc(activities, [_ | _] = list_memberships, %User{ap_id: user_ap_id}) do Enum.map(activities, fn - %{data: %{"bcc" => bcc}} = activity when is_list(bcc) and length(bcc) > 0 -> + %{data: %{"bcc" => [_ | _] = bcc}} = activity -> if Enum.any?(bcc, &(&1 in list_memberships)) do update_in(activity.data["cc"], &[user_ap_id | &1]) else @@ -1183,7 +1149,7 @@ defp maybe_update_cc(activities, list_memberships, %User{ap_id: user_ap_id}) defp maybe_update_cc(activities, _, _), do: activities - def fetch_activities_bounded_query(query, recipients, recipients_with_public) do + defp fetch_activities_bounded_query(query, recipients, recipients_with_public) do from(activity in query, where: fragment("? && ?", activity.recipients, ^recipients) or @@ -1207,12 +1173,7 @@ def fetch_activities_bounded( @spec upload(Upload.source(), keyword()) :: {:ok, Object.t()} | {:error, any()} def upload(file, opts \\ []) do with {:ok, data} <- Upload.store(file, opts) do - obj_data = - if opts[:actor] do - Map.put(data, "actor", opts[:actor]) - else - data - end + obj_data = Maps.put_if_present(data, "actor", opts[:actor]) Repo.insert(%Object{data: obj_data}) end @@ -1258,8 +1219,8 @@ defp object_to_user_data(data) do %{"type" => "Emoji"} -> true _ -> false end) - |> Enum.reduce(%{}, fn %{"icon" => %{"url" => url}, "name" => name}, acc -> - Map.put(acc, String.trim(name, ":"), url) + |> Map.new(fn %{"icon" => %{"url" => url}, "name" => name} -> + {String.trim(name, ":"), url} end) locked = data["manuallyApprovesFollowers"] || false @@ -1305,18 +1266,15 @@ defp object_to_user_data(data) do } # nickname can be nil because of virtual actors - user_data = - if data["preferredUsername"] do - Map.put( - user_data, - :nickname, - "#{data["preferredUsername"]}@#{URI.parse(data["id"]).host}" - ) - else - Map.put(user_data, :nickname, nil) - end - - {:ok, user_data} + if data["preferredUsername"] do + Map.put( + user_data, + :nickname, + "#{data["preferredUsername"]}@#{URI.parse(data["id"]).host}" + ) + else + Map.put(user_data, :nickname, nil) + end end def fetch_follow_information_for_user(user) do @@ -1391,9 +1349,8 @@ defp collection_private(%{"first" => first}) do defp collection_private(_data), do: {:ok, true} def user_data_from_user_object(data) do - with {:ok, data} <- MRF.filter(data), - {:ok, data} <- object_to_user_data(data) do - {:ok, data} + with {:ok, data} <- MRF.filter(data) do + {:ok, object_to_user_data(data)} else e -> {:error, e} end @@ -1401,15 +1358,14 @@ def user_data_from_user_object(data) do def fetch_and_prepare_user_from_ap_id(ap_id) do with {:ok, data} <- Fetcher.fetch_and_contain_remote_object_from_id(ap_id), - {:ok, data} <- user_data_from_user_object(data), - data <- maybe_update_follow_information(data) do - {:ok, data} + {:ok, data} <- user_data_from_user_object(data) do + {:ok, maybe_update_follow_information(data)} else - {:error, "Object has been deleted"} = e -> + {:error, "Object has been deleted" = e} -> Logger.debug("Could not decode user at fetch #{ap_id}, #{inspect(e)}") {:error, e} - e -> + {:error, e} -> Logger.error("Could not decode user at fetch #{ap_id}, #{inspect(e)}") {:error, e} end @@ -1432,8 +1388,6 @@ def make_user_from_ap_id(ap_id) do |> Repo.insert() |> User.set_cache() end - else - e -> {:error, e} end end end @@ -1447,7 +1401,7 @@ def make_user_from_nickname(nickname) do end # filter out broken threads - def contain_broken_threads(%Activity{} = activity, %User{} = user) do + defp contain_broken_threads(%Activity{} = activity, %User{} = user) do entire_thread_visible_for_user?(activity, user) end @@ -1458,7 +1412,7 @@ def contain_activity(%Activity{} = activity, %User{} = user) do def fetch_direct_messages_query do Activity - |> restrict_type(%{"type" => "Create"}) + |> restrict_type(%{type: "Create"}) |> restrict_visibility(%{visibility: "direct"}) |> order_by([activity], asc: activity.id) end diff --git a/lib/pleroma/web/activity_pub/activity_pub_controller.ex b/lib/pleroma/web/activity_pub/activity_pub_controller.ex index 28727d619..220c4fe52 100644 --- a/lib/pleroma/web/activity_pub/activity_pub_controller.ex +++ b/lib/pleroma/web/activity_pub/activity_pub_controller.ex @@ -21,6 +21,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubController do alias Pleroma.Web.ActivityPub.UserView alias Pleroma.Web.ActivityPub.Utils alias Pleroma.Web.ActivityPub.Visibility + alias Pleroma.Web.ControllerHelper alias Pleroma.Web.Endpoint alias Pleroma.Web.FederatingPlug alias Pleroma.Web.Federator @@ -230,27 +231,23 @@ def outbox( when page? in [true, "true"] do with %User{} = user <- User.get_cached_by_nickname(nickname), {:ok, user} <- User.ensure_keys_present(user) do - activities = - if params["max_id"] do - ActivityPub.fetch_user_activities(user, for_user, %{ - "max_id" => params["max_id"], - # This is a hack because postgres generates inefficient queries when filtering by - # 'Answer', poll votes will be hidden by the visibility filter in this case anyway - "include_poll_votes" => true, - "limit" => 10 - }) - else - ActivityPub.fetch_user_activities(user, for_user, %{ - "limit" => 10, - "include_poll_votes" => true - }) - end + # "include_poll_votes" is a hack because postgres generates inefficient + # queries when filtering by 'Answer', poll votes will be hidden by the + # visibility filter in this case anyway + params = + params + |> Map.drop(["nickname", "page"]) + |> Map.put("include_poll_votes", true) + |> Map.new(fn {k, v} -> {String.to_existing_atom(k), v} end) + + activities = ActivityPub.fetch_user_activities(user, for_user, params) conn |> put_resp_content_type("application/activity+json") |> put_view(UserView) |> render("activity_collection_page.json", %{ activities: activities, + pagination: ControllerHelper.get_pagination_fields(conn, activities), iri: "#{user.ap_id}/outbox" }) end @@ -353,21 +350,24 @@ def read_inbox( %{"nickname" => nickname, "page" => page?} = params ) when page? in [true, "true"] do + params = + params + |> Map.drop(["nickname", "page"]) + |> Map.put("blocking_user", user) + |> Map.put("user", user) + |> Map.new(fn {k, v} -> {String.to_existing_atom(k), v} end) + activities = - if params["max_id"] do - ActivityPub.fetch_activities([user.ap_id | User.following(user)], %{ - "max_id" => params["max_id"], - "limit" => 10 - }) - else - ActivityPub.fetch_activities([user.ap_id | User.following(user)], %{"limit" => 10}) - end + [user.ap_id | User.following(user)] + |> ActivityPub.fetch_activities(params) + |> Enum.reverse() conn |> put_resp_content_type("application/activity+json") |> put_view(UserView) |> render("activity_collection_page.json", %{ activities: activities, + pagination: ControllerHelper.get_pagination_fields(conn, activities), iri: "#{user.ap_id}/inbox" }) end @@ -514,7 +514,6 @@ defp ensure_user_keys_present_and_maybe_refresh_for_user(user, for_user) do {new_user, for_user} end - # TODO: Add support for "object" field @doc """ Endpoint based on @@ -525,6 +524,8 @@ defp ensure_user_keys_present_and_maybe_refresh_for_user(user, for_user) do Response: - HTTP Code: 201 Created - HTTP Body: ActivityPub object to be inserted into another's `attachment` field + + Note: Will not point to a URL with a `Location` header because no standalone Activity has been created. """ def upload_media(%{assigns: %{user: %User{} = user}} = conn, %{"file" => file} = data) do with {:ok, object} <- diff --git a/lib/pleroma/web/activity_pub/builder.ex b/lib/pleroma/web/activity_pub/builder.ex index 51b74414a..cabc28de9 100644 --- a/lib/pleroma/web/activity_pub/builder.ex +++ b/lib/pleroma/web/activity_pub/builder.ex @@ -5,6 +5,7 @@ defmodule Pleroma.Web.ActivityPub.Builder do This module encodes our addressing policies and general shape of our objects. """ + alias Pleroma.Emoji alias Pleroma.Object alias Pleroma.User alias Pleroma.Web.ActivityPub.Relay @@ -65,6 +66,42 @@ def delete(actor, object_id) do }, []} end + def create(actor, object, recipients) do + {:ok, + %{ + "id" => Utils.generate_activity_id(), + "actor" => actor.ap_id, + "to" => recipients, + "object" => object, + "type" => "Create", + "published" => DateTime.utc_now() |> DateTime.to_iso8601() + }, []} + end + + def chat_message(actor, recipient, content, opts \\ []) do + basic = %{ + "id" => Utils.generate_object_id(), + "actor" => actor.ap_id, + "type" => "ChatMessage", + "to" => [recipient], + "content" => content, + "published" => DateTime.utc_now() |> DateTime.to_iso8601(), + "emoji" => Emoji.Formatter.get_emoji_map(content) + } + + case opts[:attachment] do + %Object{data: attachment_data} -> + { + :ok, + Map.put(basic, "attachment", attachment_data), + [] + } + + _ -> + {:ok, basic, []} + end + end + @spec tombstone(String.t(), String.t()) :: {:ok, map(), keyword()} def tombstone(actor, id) do {:ok, @@ -86,6 +123,33 @@ def like(actor, object) do end end + # Retricted to user updates for now, always public + @spec update(User.t(), Object.t()) :: {:ok, map(), keyword()} + def update(actor, object) do + to = [Pleroma.Constants.as_public(), actor.follower_address] + + {:ok, + %{ + "id" => Utils.generate_activity_id(), + "type" => "Update", + "actor" => actor.ap_id, + "object" => object, + "to" => to + }, []} + end + + @spec block(User.t(), User.t()) :: {:ok, map(), keyword()} + def block(blocker, blocked) do + {:ok, + %{ + "id" => Utils.generate_activity_id(), + "type" => "Block", + "actor" => blocker.ap_id, + "object" => blocked.ap_id, + "to" => [blocked.ap_id] + }, []} + end + @spec announce(User.t(), Object.t(), keyword()) :: {:ok, map(), keyword()} def announce(actor, object, options \\ []) do public? = Keyword.get(options, :public, false) diff --git a/lib/pleroma/web/activity_pub/mrf.ex b/lib/pleroma/web/activity_pub/mrf.ex index a0b3af432..206d6af52 100644 --- a/lib/pleroma/web/activity_pub/mrf.ex +++ b/lib/pleroma/web/activity_pub/mrf.ex @@ -8,18 +8,15 @@ defmodule Pleroma.Web.ActivityPub.MRF do def filter(policies, %{} = object) do policies |> Enum.reduce({:ok, object}, fn - policy, {:ok, object} -> - policy.filter(object) - - _, error -> - error + policy, {:ok, object} -> policy.filter(object) + _, error -> error end) end def filter(%{} = object), do: get_policies() |> filter(object) def get_policies do - Pleroma.Config.get([:instance, :rewrite_policy], []) |> get_policies() + Pleroma.Config.get([:mrf, :policies], []) |> get_policies() end defp get_policies(policy) when is_atom(policy), do: [policy] @@ -54,7 +51,7 @@ def describe(policies) do get_policies() |> Enum.map(fn policy -> to_string(policy) |> String.split(".") |> List.last() end) - exclusions = Pleroma.Config.get([:instance, :mrf_transparency_exclusions]) + exclusions = Pleroma.Config.get([:mrf, :transparency_exclusions]) base = %{ diff --git a/lib/pleroma/web/activity_pub/mrf/activity_expiration_policy.ex b/lib/pleroma/web/activity_pub/mrf/activity_expiration_policy.ex new file mode 100644 index 000000000..8e47f1e02 --- /dev/null +++ b/lib/pleroma/web/activity_pub/mrf/activity_expiration_policy.ex @@ -0,0 +1,43 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ActivityPub.MRF.ActivityExpirationPolicy do + @moduledoc "Adds expiration to all local Create activities" + @behaviour Pleroma.Web.ActivityPub.MRF + + @impl true + def filter(activity) do + activity = + if note?(activity) and local?(activity) do + maybe_add_expiration(activity) + else + activity + end + + {:ok, activity} + end + + @impl true + def describe, do: {:ok, %{}} + + defp local?(%{"id" => id}) do + String.starts_with?(id, Pleroma.Web.Endpoint.url()) + end + + defp note?(activity) do + match?(%{"type" => "Create", "object" => %{"type" => "Note"}}, activity) + end + + defp maybe_add_expiration(activity) do + days = Pleroma.Config.get([:mrf_activity_expiration, :days], 365) + expires_at = NaiveDateTime.utc_now() |> Timex.shift(days: days) + + with %{"expires_at" => existing_expires_at} <- activity, + :lt <- NaiveDateTime.compare(existing_expires_at, expires_at) do + activity + else + _ -> Map.put(activity, "expires_at", expires_at) + end + end +end diff --git a/lib/pleroma/web/activity_pub/mrf/anti_link_spam_policy.ex b/lib/pleroma/web/activity_pub/mrf/anti_link_spam_policy.ex index 9e7800997..a7e187b5e 100644 --- a/lib/pleroma/web/activity_pub/mrf/anti_link_spam_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/anti_link_spam_policy.ex @@ -27,11 +27,14 @@ defp contains_links?(_), do: false @impl true def filter(%{"type" => "Create", "actor" => actor, "object" => object} = message) do - with {:ok, %User{} = u} <- User.get_or_fetch_by_ap_id(actor), + with {:ok, %User{local: false} = u} <- User.get_or_fetch_by_ap_id(actor), {:contains_links, true} <- {:contains_links, contains_links?(object)}, {:old_user, true} <- {:old_user, old_user?(u)} do {:ok, message} else + {:ok, %User{local: true}} -> + {:ok, message} + {:contains_links, false} -> {:ok, message} diff --git a/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex b/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex index 1764bc789..f6b2c4415 100644 --- a/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex @@ -13,8 +13,10 @@ defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicy do defp delist_message(message, threshold) when threshold > 0 do follower_collection = User.get_cached_by_ap_id(message["actor"]).follower_address + to = message["to"] || [] + cc = message["cc"] || [] - follower_collection? = Enum.member?(message["to"] ++ message["cc"], follower_collection) + follower_collection? = Enum.member?(to ++ cc, follower_collection) message = case get_recipient_count(message) do @@ -71,7 +73,8 @@ defp get_recipient_count(message) do end @impl true - def filter(%{"type" => "Create"} = message) do + def filter(%{"type" => "Create", "object" => %{"type" => object_type}} = message) + when object_type in ~w{Note Article} do reject_threshold = Pleroma.Config.get( [:mrf_hellthread, :reject_threshold], diff --git a/lib/pleroma/web/activity_pub/mrf/simple_policy.ex b/lib/pleroma/web/activity_pub/mrf/simple_policy.ex index b7dcb1b86..9cea6bcf9 100644 --- a/lib/pleroma/web/activity_pub/mrf/simple_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/simple_policy.ex @@ -3,21 +3,23 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicy do - alias Pleroma.User - alias Pleroma.Web.ActivityPub.MRF @moduledoc "Filter activities depending on their origin instance" @behaviour Pleroma.Web.ActivityPub.MRF + alias Pleroma.Config + alias Pleroma.User + alias Pleroma.Web.ActivityPub.MRF + require Pleroma.Constants defp check_accept(%{host: actor_host} = _actor_info, object) do accepts = - Pleroma.Config.get([:mrf_simple, :accept]) + Config.get([:mrf_simple, :accept]) |> MRF.subdomains_regex() cond do accepts == [] -> {:ok, object} - actor_host == Pleroma.Config.get([Pleroma.Web.Endpoint, :url, :host]) -> {:ok, object} + actor_host == Config.get([Pleroma.Web.Endpoint, :url, :host]) -> {:ok, object} MRF.subdomain_match?(accepts, actor_host) -> {:ok, object} true -> {:reject, nil} end @@ -25,7 +27,7 @@ defp check_accept(%{host: actor_host} = _actor_info, object) do defp check_reject(%{host: actor_host} = _actor_info, object) do rejects = - Pleroma.Config.get([:mrf_simple, :reject]) + Config.get([:mrf_simple, :reject]) |> MRF.subdomains_regex() if MRF.subdomain_match?(rejects, actor_host) do @@ -41,7 +43,7 @@ defp check_media_removal( ) when length(child_attachment) > 0 do media_removal = - Pleroma.Config.get([:mrf_simple, :media_removal]) + Config.get([:mrf_simple, :media_removal]) |> MRF.subdomains_regex() object = @@ -65,7 +67,7 @@ defp check_media_nsfw( } = object ) do media_nsfw = - Pleroma.Config.get([:mrf_simple, :media_nsfw]) + Config.get([:mrf_simple, :media_nsfw]) |> MRF.subdomains_regex() object = @@ -85,7 +87,7 @@ defp check_media_nsfw(_actor_info, object), do: {:ok, object} defp check_ftl_removal(%{host: actor_host} = _actor_info, object) do timeline_removal = - Pleroma.Config.get([:mrf_simple, :federated_timeline_removal]) + Config.get([:mrf_simple, :federated_timeline_removal]) |> MRF.subdomains_regex() object = @@ -108,7 +110,7 @@ defp check_ftl_removal(%{host: actor_host} = _actor_info, object) do defp check_report_removal(%{host: actor_host} = _actor_info, %{"type" => "Flag"} = object) do report_removal = - Pleroma.Config.get([:mrf_simple, :report_removal]) + Config.get([:mrf_simple, :report_removal]) |> MRF.subdomains_regex() if MRF.subdomain_match?(report_removal, actor_host) do @@ -122,7 +124,7 @@ defp check_report_removal(_actor_info, object), do: {:ok, object} defp check_avatar_removal(%{host: actor_host} = _actor_info, %{"icon" => _icon} = object) do avatar_removal = - Pleroma.Config.get([:mrf_simple, :avatar_removal]) + Config.get([:mrf_simple, :avatar_removal]) |> MRF.subdomains_regex() if MRF.subdomain_match?(avatar_removal, actor_host) do @@ -136,7 +138,7 @@ defp check_avatar_removal(_actor_info, object), do: {:ok, object} defp check_banner_removal(%{host: actor_host} = _actor_info, %{"image" => _image} = object) do banner_removal = - Pleroma.Config.get([:mrf_simple, :banner_removal]) + Config.get([:mrf_simple, :banner_removal]) |> MRF.subdomains_regex() if MRF.subdomain_match?(banner_removal, actor_host) do @@ -197,10 +199,10 @@ def filter(object), do: {:ok, object} @impl true def describe do - exclusions = Pleroma.Config.get([:instance, :mrf_transparency_exclusions]) + exclusions = Config.get([:mrf, :transparency_exclusions]) mrf_simple = - Pleroma.Config.get(:mrf_simple) + Config.get(:mrf_simple) |> Enum.map(fn {k, v} -> {k, Enum.reject(v, fn v -> v in exclusions end)} end) |> Enum.into(%{}) diff --git a/lib/pleroma/web/activity_pub/mrf/user_allow_list_policy.ex b/lib/pleroma/web/activity_pub/mrf/user_allow_list_policy.ex index a927a4ed8..651aed70f 100644 --- a/lib/pleroma/web/activity_pub/mrf/user_allow_list_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/user_allow_list_policy.ex @@ -24,7 +24,7 @@ def filter(%{"actor" => actor} = object) do allow_list = Config.get( - [:mrf_user_allowlist, String.to_atom(actor_info.host)], + [:mrf_user_allowlist, actor_info.host], [] ) diff --git a/lib/pleroma/web/activity_pub/object_validator.ex b/lib/pleroma/web/activity_pub/object_validator.ex index 2599067a8..bb6324460 100644 --- a/lib/pleroma/web/activity_pub/object_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validator.ex @@ -9,18 +9,51 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidator do the system. """ + alias Pleroma.EctoType.ActivityPub.ObjectValidators alias Pleroma.Object alias Pleroma.User alias Pleroma.Web.ActivityPub.ObjectValidators.AnnounceValidator + alias Pleroma.Web.ActivityPub.ObjectValidators.BlockValidator + alias Pleroma.Web.ActivityPub.ObjectValidators.ChatMessageValidator + alias Pleroma.Web.ActivityPub.ObjectValidators.CreateChatMessageValidator alias Pleroma.Web.ActivityPub.ObjectValidators.DeleteValidator alias Pleroma.Web.ActivityPub.ObjectValidators.EmojiReactValidator alias Pleroma.Web.ActivityPub.ObjectValidators.LikeValidator - alias Pleroma.Web.ActivityPub.ObjectValidators.Types alias Pleroma.Web.ActivityPub.ObjectValidators.UndoValidator + alias Pleroma.Web.ActivityPub.ObjectValidators.UpdateValidator @spec validate(map(), keyword()) :: {:ok, map(), keyword()} | {:error, any()} def validate(object, meta) + def validate(%{"type" => "Block"} = block_activity, meta) do + with {:ok, block_activity} <- + block_activity + |> BlockValidator.cast_and_validate() + |> Ecto.Changeset.apply_action(:insert) do + block_activity = stringify_keys(block_activity) + outgoing_blocks = Pleroma.Config.get([:activitypub, :outgoing_blocks]) + + meta = + if !outgoing_blocks do + Keyword.put(meta, :do_not_federate, true) + else + meta + end + + {:ok, block_activity, meta} + end + end + + def validate(%{"type" => "Update"} = update_activity, meta) do + with {:ok, update_activity} <- + update_activity + |> UpdateValidator.cast_and_validate() + |> Ecto.Changeset.apply_action(:insert) do + update_activity = stringify_keys(update_activity) + {:ok, update_activity, meta} + end + end + def validate(%{"type" => "Undo"} = object, meta) do with {:ok, object} <- object @@ -43,8 +76,20 @@ def validate(%{"type" => "Delete"} = object, meta) do def validate(%{"type" => "Like"} = object, meta) do with {:ok, object} <- - object |> LikeValidator.cast_and_validate() |> Ecto.Changeset.apply_action(:insert) do - object = stringify_keys(object |> Map.from_struct()) + object + |> LikeValidator.cast_and_validate() + |> Ecto.Changeset.apply_action(:insert) do + object = stringify_keys(object) + {:ok, object, meta} + end + end + + def validate(%{"type" => "ChatMessage"} = object, meta) do + with {:ok, object} <- + object + |> ChatMessageValidator.cast_and_validate() + |> Ecto.Changeset.apply_action(:insert) do + object = stringify_keys(object) {:ok, object, meta} end end @@ -59,6 +104,18 @@ def validate(%{"type" => "EmojiReact"} = object, meta) do end end + def validate(%{"type" => "Create", "object" => object} = create_activity, meta) do + with {:ok, object_data} <- cast_and_apply(object), + meta = Keyword.put(meta, :object_data, object_data |> stringify_keys), + {:ok, create_activity} <- + create_activity + |> CreateChatMessageValidator.cast_and_validate(meta) + |> Ecto.Changeset.apply_action(:insert) do + create_activity = stringify_keys(create_activity) + {:ok, create_activity, meta} + end + end + def validate(%{"type" => "Announce"} = object, meta) do with {:ok, object} <- object @@ -69,19 +126,32 @@ def validate(%{"type" => "Announce"} = object, meta) do end end + def cast_and_apply(%{"type" => "ChatMessage"} = object) do + ChatMessageValidator.cast_and_apply(object) + end + + def cast_and_apply(o), do: {:error, {:validator_not_set, o}} + def stringify_keys(%{__struct__: _} = object) do object |> Map.from_struct() |> stringify_keys end - def stringify_keys(object) do + def stringify_keys(object) when is_map(object) do object - |> Map.new(fn {key, val} -> {to_string(key), val} end) + |> Map.new(fn {key, val} -> {to_string(key), stringify_keys(val)} end) end + def stringify_keys(object) when is_list(object) do + object + |> Enum.map(&stringify_keys/1) + end + + def stringify_keys(object), do: object + def fetch_actor(object) do - with {:ok, actor} <- Types.ObjectID.cast(object["actor"]) do + with {:ok, actor} <- ObjectValidators.ObjectID.cast(object["actor"]) do User.get_or_fetch_by_ap_id(actor) end end diff --git a/lib/pleroma/web/activity_pub/object_validators/announce_validator.ex b/lib/pleroma/web/activity_pub/object_validators/announce_validator.ex index 40f861f47..6f757f49c 100644 --- a/lib/pleroma/web/activity_pub/object_validators/announce_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validators/announce_validator.ex @@ -5,9 +5,9 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AnnounceValidator do use Ecto.Schema + alias Pleroma.EctoType.ActivityPub.ObjectValidators alias Pleroma.Object alias Pleroma.User - alias Pleroma.Web.ActivityPub.ObjectValidators.Types alias Pleroma.Web.ActivityPub.Utils alias Pleroma.Web.ActivityPub.Visibility @@ -19,14 +19,14 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AnnounceValidator do @primary_key false embedded_schema do - field(:id, Types.ObjectID, primary_key: true) + field(:id, ObjectValidators.ObjectID, primary_key: true) field(:type, :string) - field(:object, Types.ObjectID) - field(:actor, Types.ObjectID) + field(:object, ObjectValidators.ObjectID) + field(:actor, ObjectValidators.ObjectID) field(:context, :string, autogenerate: {Utils, :generate_context_id, []}) - field(:to, Types.Recipients, default: []) - field(:cc, Types.Recipients, default: []) - field(:published, Types.DateTime) + field(:to, ObjectValidators.Recipients, default: []) + field(:cc, ObjectValidators.Recipients, default: []) + field(:published, ObjectValidators.DateTime) end def cast_and_validate(data) do diff --git a/lib/pleroma/web/activity_pub/object_validators/attachment_validator.ex b/lib/pleroma/web/activity_pub/object_validators/attachment_validator.ex new file mode 100644 index 000000000..f53bb02be --- /dev/null +++ b/lib/pleroma/web/activity_pub/object_validators/attachment_validator.ex @@ -0,0 +1,80 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ActivityPub.ObjectValidators.AttachmentValidator do + use Ecto.Schema + + alias Pleroma.Web.ActivityPub.ObjectValidators.UrlObjectValidator + + import Ecto.Changeset + + @primary_key false + embedded_schema do + field(:type, :string) + field(:mediaType, :string, default: "application/octet-stream") + field(:name, :string) + + embeds_many(:url, UrlObjectValidator) + end + + def cast_and_validate(data) do + data + |> cast_data() + |> validate_data() + end + + def cast_data(data) do + %__MODULE__{} + |> changeset(data) + end + + def changeset(struct, data) do + data = + data + |> fix_media_type() + |> fix_url() + + struct + |> cast(data, [:type, :mediaType, :name]) + |> cast_embed(:url, required: true) + end + + def fix_media_type(data) do + data = + data + |> Map.put_new("mediaType", data["mimeType"]) + + if MIME.valid?(data["mediaType"]) do + data + else + data + |> Map.put("mediaType", "application/octet-stream") + end + end + + def fix_url(data) do + case data["url"] do + url when is_binary(url) -> + data + |> Map.put( + "url", + [ + %{ + "href" => url, + "type" => "Link", + "mediaType" => data["mediaType"] + } + ] + ) + + _ -> + data + end + end + + def validate_data(cng) do + cng + |> validate_required([:mediaType, :url, :type]) + end +end diff --git a/lib/pleroma/web/activity_pub/object_validators/block_validator.ex b/lib/pleroma/web/activity_pub/object_validators/block_validator.ex new file mode 100644 index 000000000..1dde77198 --- /dev/null +++ b/lib/pleroma/web/activity_pub/object_validators/block_validator.ex @@ -0,0 +1,42 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ActivityPub.ObjectValidators.BlockValidator do + use Ecto.Schema + + alias Pleroma.EctoType.ActivityPub.ObjectValidators + + import Ecto.Changeset + import Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations + + @primary_key false + + embedded_schema do + field(:id, ObjectValidators.ObjectID, primary_key: true) + field(:type, :string) + field(:actor, ObjectValidators.ObjectID) + field(:to, ObjectValidators.Recipients, default: []) + field(:cc, ObjectValidators.Recipients, default: []) + field(:object, ObjectValidators.ObjectID) + end + + def cast_data(data) do + %__MODULE__{} + |> cast(data, __schema__(:fields)) + end + + def validate_data(cng) do + cng + |> validate_required([:id, :type, :actor, :to, :cc, :object]) + |> validate_inclusion(:type, ["Block"]) + |> validate_actor_presence() + |> validate_actor_presence(field_name: :object) + end + + def cast_and_validate(data) do + data + |> cast_data + |> validate_data + end +end diff --git a/lib/pleroma/web/activity_pub/object_validators/chat_message_validator.ex b/lib/pleroma/web/activity_pub/object_validators/chat_message_validator.ex new file mode 100644 index 000000000..c481d79e0 --- /dev/null +++ b/lib/pleroma/web/activity_pub/object_validators/chat_message_validator.ex @@ -0,0 +1,123 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ActivityPub.ObjectValidators.ChatMessageValidator do + use Ecto.Schema + + alias Pleroma.EctoType.ActivityPub.ObjectValidators + alias Pleroma.User + alias Pleroma.Web.ActivityPub.ObjectValidators.AttachmentValidator + + import Ecto.Changeset + import Pleroma.Web.ActivityPub.Transmogrifier, only: [fix_emoji: 1] + + @primary_key false + @derive Jason.Encoder + + embedded_schema do + field(:id, ObjectValidators.ObjectID, primary_key: true) + field(:to, ObjectValidators.Recipients, default: []) + field(:type, :string) + field(:content, ObjectValidators.SafeText) + field(:actor, ObjectValidators.ObjectID) + field(:published, ObjectValidators.DateTime) + field(:emoji, :map, default: %{}) + + embeds_one(:attachment, AttachmentValidator) + end + + def cast_and_apply(data) do + data + |> cast_data + |> apply_action(:insert) + end + + def cast_and_validate(data) do + data + |> cast_data() + |> validate_data() + end + + def cast_data(data) do + %__MODULE__{} + |> changeset(data) + end + + def fix(data) do + data + |> fix_emoji() + |> fix_attachment() + |> Map.put_new("actor", data["attributedTo"]) + end + + # Throws everything but the first one away + def fix_attachment(%{"attachment" => [attachment | _]} = data) do + data + |> Map.put("attachment", attachment) + end + + def fix_attachment(data), do: data + + def changeset(struct, data) do + data = fix(data) + + struct + |> cast(data, List.delete(__schema__(:fields), :attachment)) + |> cast_embed(:attachment) + end + + def validate_data(data_cng) do + data_cng + |> validate_inclusion(:type, ["ChatMessage"]) + |> validate_required([:id, :actor, :to, :type, :published]) + |> validate_content_or_attachment() + |> validate_length(:to, is: 1) + |> validate_length(:content, max: Pleroma.Config.get([:instance, :remote_limit])) + |> validate_local_concern() + end + + def validate_content_or_attachment(cng) do + attachment = get_field(cng, :attachment) + + if attachment do + cng + else + cng + |> validate_required([:content]) + end + end + + @doc """ + Validates the following + - If both users are in our system + - If at least one of the users in this ChatMessage is a local user + - If the recipient is not blocking the actor + """ + def validate_local_concern(cng) do + with actor_ap <- get_field(cng, :actor), + {_, %User{} = actor} <- {:find_actor, User.get_cached_by_ap_id(actor_ap)}, + {_, %User{} = recipient} <- + {:find_recipient, User.get_cached_by_ap_id(get_field(cng, :to) |> hd())}, + {_, false} <- {:blocking_actor?, User.blocks?(recipient, actor)}, + {_, true} <- {:local?, Enum.any?([actor, recipient], & &1.local)} do + cng + else + {:blocking_actor?, true} -> + cng + |> add_error(:actor, "actor is blocked by recipient") + + {:local?, false} -> + cng + |> add_error(:actor, "actor and recipient are both remote") + + {:find_actor, _} -> + cng + |> add_error(:actor, "can't find user") + + {:find_recipient, _} -> + cng + |> add_error(:to, "can't find user") + end + end +end diff --git a/lib/pleroma/web/activity_pub/object_validators/create_chat_message_validator.ex b/lib/pleroma/web/activity_pub/object_validators/create_chat_message_validator.ex new file mode 100644 index 000000000..7269f9ff0 --- /dev/null +++ b/lib/pleroma/web/activity_pub/object_validators/create_chat_message_validator.ex @@ -0,0 +1,91 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +# NOTES +# - Can probably be a generic create validator +# - doesn't embed, will only get the object id +defmodule Pleroma.Web.ActivityPub.ObjectValidators.CreateChatMessageValidator do + use Ecto.Schema + alias Pleroma.EctoType.ActivityPub.ObjectValidators + + alias Pleroma.Object + + import Ecto.Changeset + import Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations + + @primary_key false + + embedded_schema do + field(:id, ObjectValidators.ObjectID, primary_key: true) + field(:actor, ObjectValidators.ObjectID) + field(:type, :string) + field(:to, ObjectValidators.Recipients, default: []) + field(:object, ObjectValidators.ObjectID) + end + + def cast_and_apply(data) do + data + |> cast_data + |> apply_action(:insert) + end + + def cast_data(data) do + cast(%__MODULE__{}, data, __schema__(:fields)) + end + + def cast_and_validate(data, meta \\ []) do + cast_data(data) + |> validate_data(meta) + end + + def validate_data(cng, meta \\ []) do + cng + |> validate_required([:id, :actor, :to, :type, :object]) + |> validate_inclusion(:type, ["Create"]) + |> validate_actor_presence() + |> validate_recipients_match(meta) + |> validate_actors_match(meta) + |> validate_object_nonexistence() + end + + def validate_object_nonexistence(cng) do + cng + |> validate_change(:object, fn :object, object_id -> + if Object.get_cached_by_ap_id(object_id) do + [{:object, "The object to create already exists"}] + else + [] + end + end) + end + + def validate_actors_match(cng, meta) do + object_actor = meta[:object_data]["actor"] + + cng + |> validate_change(:actor, fn :actor, actor -> + if actor == object_actor do + [] + else + [{:actor, "Actor doesn't match with object actor"}] + end + end) + end + + def validate_recipients_match(cng, meta) do + object_recipients = meta[:object_data]["to"] || [] + + cng + |> validate_change(:to, fn :to, recipients -> + activity_set = MapSet.new(recipients) + object_set = MapSet.new(object_recipients) + + if MapSet.equal?(activity_set, object_set) do + [] + else + [{:to, "Recipients don't match with object recipients"}] + end + end) + end +end diff --git a/lib/pleroma/web/activity_pub/object_validators/create_validator.ex b/lib/pleroma/web/activity_pub/object_validators/create_note_validator.ex similarity index 81% rename from lib/pleroma/web/activity_pub/object_validators/create_validator.ex rename to lib/pleroma/web/activity_pub/object_validators/create_note_validator.ex index 926804ce7..316bd0c07 100644 --- a/lib/pleroma/web/activity_pub/object_validators/create_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validators/create_note_validator.ex @@ -5,16 +5,16 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.CreateNoteValidator do use Ecto.Schema + alias Pleroma.EctoType.ActivityPub.ObjectValidators alias Pleroma.Web.ActivityPub.ObjectValidators.NoteValidator - alias Pleroma.Web.ActivityPub.ObjectValidators.Types import Ecto.Changeset @primary_key false embedded_schema do - field(:id, Types.ObjectID, primary_key: true) - field(:actor, Types.ObjectID) + field(:id, ObjectValidators.ObjectID, primary_key: true) + field(:actor, ObjectValidators.ObjectID) field(:type, :string) field(:to, {:array, :string}) field(:cc, {:array, :string}) diff --git a/lib/pleroma/web/activity_pub/object_validators/delete_validator.ex b/lib/pleroma/web/activity_pub/object_validators/delete_validator.ex index f42c03510..93a7b0e0b 100644 --- a/lib/pleroma/web/activity_pub/object_validators/delete_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validators/delete_validator.ex @@ -6,8 +6,8 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.DeleteValidator do use Ecto.Schema alias Pleroma.Activity + alias Pleroma.EctoType.ActivityPub.ObjectValidators alias Pleroma.User - alias Pleroma.Web.ActivityPub.ObjectValidators.Types import Ecto.Changeset import Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations @@ -15,13 +15,13 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.DeleteValidator do @primary_key false embedded_schema do - field(:id, Types.ObjectID, primary_key: true) + field(:id, ObjectValidators.ObjectID, primary_key: true) field(:type, :string) - field(:actor, Types.ObjectID) - field(:to, Types.Recipients, default: []) - field(:cc, Types.Recipients, default: []) - field(:deleted_activity_id, Types.ObjectID) - field(:object, Types.ObjectID) + field(:actor, ObjectValidators.ObjectID) + field(:to, ObjectValidators.Recipients, default: []) + field(:cc, ObjectValidators.Recipients, default: []) + field(:deleted_activity_id, ObjectValidators.ObjectID) + field(:object, ObjectValidators.ObjectID) end def cast_data(data) do @@ -46,12 +46,13 @@ def add_deleted_activity_id(cng) do Answer Article Audio + ChatMessage Event Note Page Question - Video Tombstone + Video } def validate_data(cng) do cng diff --git a/lib/pleroma/web/activity_pub/object_validators/emoji_react_validator.ex b/lib/pleroma/web/activity_pub/object_validators/emoji_react_validator.ex index e87519c59..a543af1f8 100644 --- a/lib/pleroma/web/activity_pub/object_validators/emoji_react_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validators/emoji_react_validator.ex @@ -5,8 +5,8 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.EmojiReactValidator do use Ecto.Schema + alias Pleroma.EctoType.ActivityPub.ObjectValidators alias Pleroma.Object - alias Pleroma.Web.ActivityPub.ObjectValidators.Types import Ecto.Changeset import Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations @@ -14,10 +14,10 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.EmojiReactValidator do @primary_key false embedded_schema do - field(:id, Types.ObjectID, primary_key: true) + field(:id, ObjectValidators.ObjectID, primary_key: true) field(:type, :string) - field(:object, Types.ObjectID) - field(:actor, Types.ObjectID) + field(:object, ObjectValidators.ObjectID) + field(:actor, ObjectValidators.ObjectID) field(:context, :string) field(:content, :string) field(:to, {:array, :string}, default: []) diff --git a/lib/pleroma/web/activity_pub/object_validators/like_validator.ex b/lib/pleroma/web/activity_pub/object_validators/like_validator.ex index 034f25492..493e4c247 100644 --- a/lib/pleroma/web/activity_pub/object_validators/like_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validators/like_validator.ex @@ -5,8 +5,8 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.LikeValidator do use Ecto.Schema + alias Pleroma.EctoType.ActivityPub.ObjectValidators alias Pleroma.Object - alias Pleroma.Web.ActivityPub.ObjectValidators.Types alias Pleroma.Web.ActivityPub.Utils import Ecto.Changeset @@ -15,13 +15,13 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.LikeValidator do @primary_key false embedded_schema do - field(:id, Types.ObjectID, primary_key: true) + field(:id, ObjectValidators.ObjectID, primary_key: true) field(:type, :string) - field(:object, Types.ObjectID) - field(:actor, Types.ObjectID) + field(:object, ObjectValidators.ObjectID) + field(:actor, ObjectValidators.ObjectID) field(:context, :string) - field(:to, Types.Recipients, default: []) - field(:cc, Types.Recipients, default: []) + field(:to, ObjectValidators.Recipients, default: []) + field(:cc, ObjectValidators.Recipients, default: []) end def cast_and_validate(data) do @@ -67,7 +67,7 @@ def fix_recipients(cng) do with {[], []} <- {to, cc}, %Object{data: %{"actor" => actor}} <- Object.get_cached_by_ap_id(object), - {:ok, actor} <- Types.ObjectID.cast(actor) do + {:ok, actor} <- ObjectValidators.ObjectID.cast(actor) do cng |> put_change(:to, [actor]) else diff --git a/lib/pleroma/web/activity_pub/object_validators/note_validator.ex b/lib/pleroma/web/activity_pub/object_validators/note_validator.ex index 462a5620a..56b93dde8 100644 --- a/lib/pleroma/web/activity_pub/object_validators/note_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validators/note_validator.ex @@ -5,14 +5,14 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.NoteValidator do use Ecto.Schema - alias Pleroma.Web.ActivityPub.ObjectValidators.Types + alias Pleroma.EctoType.ActivityPub.ObjectValidators import Ecto.Changeset @primary_key false embedded_schema do - field(:id, Types.ObjectID, primary_key: true) + field(:id, ObjectValidators.ObjectID, primary_key: true) field(:to, {:array, :string}, default: []) field(:cc, {:array, :string}, default: []) field(:bto, {:array, :string}, default: []) @@ -22,10 +22,10 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.NoteValidator do field(:type, :string) field(:content, :string) field(:context, :string) - field(:actor, Types.ObjectID) - field(:attributedTo, Types.ObjectID) + field(:actor, ObjectValidators.ObjectID) + field(:attributedTo, ObjectValidators.ObjectID) field(:summary, :string) - field(:published, Types.DateTime) + field(:published, ObjectValidators.DateTime) # TODO: Write type field(:emoji, :map, default: %{}) field(:sensitive, :boolean, default: false) @@ -35,13 +35,12 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.NoteValidator do field(:like_count, :integer, default: 0) field(:announcement_count, :integer, default: 0) field(:inRepyTo, :string) - field(:uri, Types.Uri) + field(:uri, ObjectValidators.Uri) field(:likes, {:array, :string}, default: []) field(:announcements, {:array, :string}, default: []) # see if needed - field(:conversation, :string) field(:context_id, :string) end diff --git a/lib/pleroma/web/activity_pub/object_validators/types/recipients.ex b/lib/pleroma/web/activity_pub/object_validators/types/recipients.ex deleted file mode 100644 index 48fe61e1a..000000000 --- a/lib/pleroma/web/activity_pub/object_validators/types/recipients.ex +++ /dev/null @@ -1,34 +0,0 @@ -defmodule Pleroma.Web.ActivityPub.ObjectValidators.Types.Recipients do - use Ecto.Type - - alias Pleroma.Web.ActivityPub.ObjectValidators.Types.ObjectID - - def type, do: {:array, ObjectID} - - def cast(object) when is_binary(object) do - cast([object]) - end - - def cast(data) when is_list(data) do - data - |> Enum.reduce({:ok, []}, fn element, acc -> - case {acc, ObjectID.cast(element)} do - {:error, _} -> :error - {_, :error} -> :error - {{:ok, list}, {:ok, id}} -> {:ok, [id | list]} - end - end) - end - - def cast(_) do - :error - end - - def dump(data) do - {:ok, data} - end - - def load(data) do - {:ok, data} - end -end diff --git a/lib/pleroma/web/activity_pub/object_validators/undo_validator.ex b/lib/pleroma/web/activity_pub/object_validators/undo_validator.ex index d0ba418e8..e8d2d39c1 100644 --- a/lib/pleroma/web/activity_pub/object_validators/undo_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validators/undo_validator.ex @@ -6,7 +6,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.UndoValidator do use Ecto.Schema alias Pleroma.Activity - alias Pleroma.Web.ActivityPub.ObjectValidators.Types + alias Pleroma.EctoType.ActivityPub.ObjectValidators import Ecto.Changeset import Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations @@ -14,10 +14,10 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.UndoValidator do @primary_key false embedded_schema do - field(:id, Types.ObjectID, primary_key: true) + field(:id, ObjectValidators.ObjectID, primary_key: true) field(:type, :string) - field(:object, Types.ObjectID) - field(:actor, Types.ObjectID) + field(:object, ObjectValidators.ObjectID) + field(:actor, ObjectValidators.ObjectID) field(:to, {:array, :string}, default: []) field(:cc, {:array, :string}, default: []) end diff --git a/lib/pleroma/web/activity_pub/object_validators/update_validator.ex b/lib/pleroma/web/activity_pub/object_validators/update_validator.ex new file mode 100644 index 000000000..b4ba5ede0 --- /dev/null +++ b/lib/pleroma/web/activity_pub/object_validators/update_validator.ex @@ -0,0 +1,59 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ActivityPub.ObjectValidators.UpdateValidator do + use Ecto.Schema + + alias Pleroma.EctoType.ActivityPub.ObjectValidators + + import Ecto.Changeset + import Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations + + @primary_key false + + embedded_schema do + field(:id, ObjectValidators.ObjectID, primary_key: true) + field(:type, :string) + field(:actor, ObjectValidators.ObjectID) + field(:to, ObjectValidators.Recipients, default: []) + field(:cc, ObjectValidators.Recipients, default: []) + # In this case, we save the full object in this activity instead of just a + # reference, so we can always see what was actually changed by this. + field(:object, :map) + end + + def cast_data(data) do + %__MODULE__{} + |> cast(data, __schema__(:fields)) + end + + def validate_data(cng) do + cng + |> validate_required([:id, :type, :actor, :to, :cc, :object]) + |> validate_inclusion(:type, ["Update"]) + |> validate_actor_presence() + |> validate_updating_rights() + end + + def cast_and_validate(data) do + data + |> cast_data + |> validate_data + end + + # For now we only support updating users, and here the rule is easy: + # object id == actor id + def validate_updating_rights(cng) do + with actor = get_field(cng, :actor), + object = get_field(cng, :object), + {:ok, object_id} <- ObjectValidators.ObjectID.cast(object), + true <- actor == object_id do + cng + else + _e -> + cng + |> add_error(:object, "Can't be updated by this actor") + end + end +end diff --git a/lib/pleroma/web/activity_pub/object_validators/url_object_validator.ex b/lib/pleroma/web/activity_pub/object_validators/url_object_validator.ex new file mode 100644 index 000000000..f64fac46d --- /dev/null +++ b/lib/pleroma/web/activity_pub/object_validators/url_object_validator.ex @@ -0,0 +1,24 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ActivityPub.ObjectValidators.UrlObjectValidator do + use Ecto.Schema + + alias Pleroma.EctoType.ActivityPub.ObjectValidators + + import Ecto.Changeset + @primary_key false + + embedded_schema do + field(:type, :string) + field(:href, ObjectValidators.Uri) + field(:mediaType, :string) + end + + def changeset(struct, data) do + struct + |> cast(data, __schema__(:fields)) + |> validate_required([:type, :href, :mediaType]) + end +end diff --git a/lib/pleroma/web/activity_pub/pipeline.ex b/lib/pleroma/web/activity_pub/pipeline.ex index 0c54c4b23..6875c47f6 100644 --- a/lib/pleroma/web/activity_pub/pipeline.ex +++ b/lib/pleroma/web/activity_pub/pipeline.ex @@ -17,6 +17,10 @@ defmodule Pleroma.Web.ActivityPub.Pipeline do {:ok, Activity.t() | Object.t(), keyword()} | {:error, any()} def common_pipeline(object, meta) do case Repo.transaction(fn -> do_common_pipeline(object, meta) end) do + {:ok, {:ok, activity, meta}} -> + SideEffects.handle_after_transaction(meta) + {:ok, activity, meta} + {:ok, value} -> value diff --git a/lib/pleroma/web/activity_pub/side_effects.ex b/lib/pleroma/web/activity_pub/side_effects.ex index fb6275450..5cc2eb378 100644 --- a/lib/pleroma/web/activity_pub/side_effects.ex +++ b/lib/pleroma/web/activity_pub/side_effects.ex @@ -6,15 +6,55 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do collection, and so on. """ alias Pleroma.Activity + alias Pleroma.Chat + alias Pleroma.Chat.MessageReference alias Pleroma.Notification alias Pleroma.Object alias Pleroma.Repo alias Pleroma.User alias Pleroma.Web.ActivityPub.ActivityPub + alias Pleroma.Web.ActivityPub.Pipeline alias Pleroma.Web.ActivityPub.Utils + alias Pleroma.Web.Push + alias Pleroma.Web.Streamer def handle(object, meta \\ []) + # Tasks this handles: + # - Unfollow and block + def handle( + %{data: %{"type" => "Block", "object" => blocked_user, "actor" => blocking_user}} = + object, + meta + ) do + with %User{} = blocker <- User.get_cached_by_ap_id(blocking_user), + %User{} = blocked <- User.get_cached_by_ap_id(blocked_user) do + User.block(blocker, blocked) + end + + {:ok, object, meta} + end + + # Tasks this handles: + # - Update the user + # + # For a local user, we also get a changeset with the full information, so we + # can update non-federating, non-activitypub settings as well. + def handle(%{data: %{"type" => "Update", "object" => updated_object}} = object, meta) do + if changeset = Keyword.get(meta, :user_update_changeset) do + changeset + |> User.update_and_set_cache() + else + {:ok, new_user_data} = ActivityPub.user_data_from_user_object(updated_object) + + User.get_by_ap_id(updated_object["id"]) + |> User.remote_user_changeset(new_user_data) + |> User.update_and_set_cache() + end + + {:ok, object, meta} + end + # Tasks this handles: # - Add like to object # - Set up notification @@ -27,6 +67,24 @@ def handle(%{data: %{"type" => "Like"}} = object, meta) do {:ok, object, meta} end + # Tasks this handles + # - Actually create object + # - Rollback if we couldn't create it + # - Set up notifications + def handle(%{data: %{"type" => "Create"}} = activity, meta) do + with {:ok, _object, meta} <- handle_object_creation(meta[:object_data], meta) do + {:ok, notifications} = Notification.create_notifications(activity, do_send: false) + + meta = + meta + |> add_notifications(notifications) + + {:ok, activity, meta} + else + e -> Repo.rollback(e) + end + end + # Tasks this handles: # - Add announce to object # - Set up notification @@ -88,6 +146,8 @@ def handle(%{data: %{"type" => "Delete", "object" => deleted_object}} = object, Object.decrease_replies_count(in_reply_to) end + MessageReference.delete_for_object(deleted_object) + ActivityPub.stream_out(object) ActivityPub.stream_out_participations(deleted_object, user) :ok @@ -112,6 +172,39 @@ def handle(object, meta) do {:ok, object, meta} end + def handle_object_creation(%{"type" => "ChatMessage"} = object, meta) do + with {:ok, object, meta} <- Pipeline.common_pipeline(object, meta) do + actor = User.get_cached_by_ap_id(object.data["actor"]) + recipient = User.get_cached_by_ap_id(hd(object.data["to"])) + + streamables = + [[actor, recipient], [recipient, actor]] + |> Enum.map(fn [user, other_user] -> + if user.local do + {:ok, chat} = Chat.bump_or_create(user.id, other_user.ap_id) + {:ok, cm_ref} = MessageReference.create(chat, object, user.ap_id != actor.ap_id) + + { + ["user", "user:pleroma_chat"], + {user, %{cm_ref | chat: chat, object: object}} + } + end + end) + |> Enum.filter(& &1) + + meta = + meta + |> add_streamables(streamables) + + {:ok, object, meta} + end + end + + # Nothing to do + def handle_object_creation(object) do + {:ok, object} + end + def handle_undoing(%{data: %{"type" => "Like"}} = object) do with %Object{} = liked_object <- Object.get_by_ap_id(object.data["object"]), {:ok, _} <- Utils.remove_like_from_object(object, liked_object), @@ -148,4 +241,43 @@ def handle_undoing( end def handle_undoing(object), do: {:error, ["don't know how to handle", object]} + + defp send_notifications(meta) do + Keyword.get(meta, :notifications, []) + |> Enum.each(fn notification -> + Streamer.stream(["user", "user:notification"], notification) + Push.send(notification) + end) + + meta + end + + defp send_streamables(meta) do + Keyword.get(meta, :streamables, []) + |> Enum.each(fn {topics, items} -> + Streamer.stream(topics, items) + end) + + meta + end + + defp add_streamables(meta, streamables) do + existing = Keyword.get(meta, :streamables, []) + + meta + |> Keyword.put(:streamables, streamables ++ existing) + end + + defp add_notifications(meta, notifications) do + existing = Keyword.get(meta, :notifications, []) + + meta + |> Keyword.put(:notifications, notifications ++ existing) + end + + def handle_after_transaction(meta) do + meta + |> send_notifications() + |> send_streamables() + end end diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index 8443c284c..278fbbeab 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -8,7 +8,10 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do """ alias Pleroma.Activity alias Pleroma.EarmarkRenderer + alias Pleroma.EctoType.ActivityPub.ObjectValidators alias Pleroma.FollowingRelationship + alias Pleroma.Maps + alias Pleroma.Notification alias Pleroma.Object alias Pleroma.Object.Containment alias Pleroma.Repo @@ -16,7 +19,6 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.ActivityPub.Builder alias Pleroma.Web.ActivityPub.ObjectValidator - alias Pleroma.Web.ActivityPub.ObjectValidators.Types alias Pleroma.Web.ActivityPub.Pipeline alias Pleroma.Web.ActivityPub.Utils alias Pleroma.Web.ActivityPub.Visibility @@ -170,8 +172,8 @@ def fix_in_reply_to(%{"inReplyTo" => in_reply_to} = object, options) object |> Map.put("inReplyTo", replied_object.data["id"]) |> Map.put("inReplyToAtomUri", object["inReplyToAtomUri"] || in_reply_to_id) - |> Map.put("conversation", replied_object.data["context"] || object["conversation"]) |> Map.put("context", replied_object.data["context"] || object["conversation"]) + |> Map.drop(["conversation"]) else e -> Logger.error("Couldn't fetch #{inspect(in_reply_to_id)}, error: #{inspect(e)}") @@ -205,13 +207,7 @@ def fix_context(object) do object |> Map.put("context", context) - |> Map.put("conversation", context) - end - - defp add_if_present(map, _key, nil), do: map - - defp add_if_present(map, key, value) do - Map.put(map, key, value) + |> Map.drop(["conversation"]) end def fix_attachments(%{"attachment" => attachment} = object) when is_list(attachment) do @@ -226,9 +222,9 @@ def fix_attachments(%{"attachment" => attachment} = object) when is_list(attachm media_type = cond do - is_map(url) && is_binary(url["mediaType"]) -> url["mediaType"] - is_binary(data["mediaType"]) -> data["mediaType"] - is_binary(data["mimeType"]) -> data["mimeType"] + is_map(url) && MIME.valid?(url["mediaType"]) -> url["mediaType"] + MIME.valid?(data["mediaType"]) -> data["mediaType"] + MIME.valid?(data["mimeType"]) -> data["mimeType"] true -> nil end @@ -241,13 +237,13 @@ def fix_attachments(%{"attachment" => attachment} = object) when is_list(attachm attachment_url = %{"href" => href} - |> add_if_present("mediaType", media_type) - |> add_if_present("type", Map.get(url || %{}, "type")) + |> Maps.put_if_present("mediaType", media_type) + |> Maps.put_if_present("type", Map.get(url || %{}, "type")) %{"url" => [attachment_url]} - |> add_if_present("mediaType", media_type) - |> add_if_present("type", data["type"]) - |> add_if_present("name", data["name"]) + |> Maps.put_if_present("mediaType", media_type) + |> Maps.put_if_present("type", data["type"]) + |> Maps.put_if_present("name", data["name"]) end) Map.put(object, "attachment", attachments) @@ -462,7 +458,7 @@ def handle_incoming( to: data["to"], object: object, actor: user, - context: object["conversation"], + context: object["context"], local: false, published: data["published"], additional: @@ -532,7 +528,8 @@ def handle_incoming( User.get_cached_by_ap_id(Containment.get_actor(%{"actor" => followed})), {:ok, %User{} = follower} <- User.get_or_fetch_by_ap_id(Containment.get_actor(%{"actor" => follower})), - {:ok, activity} <- ActivityPub.follow(follower, followed, id, false) do + {:ok, activity} <- + ActivityPub.follow(follower, followed, id, false, skip_notify_and_stream: true) do with deny_follow_blocked <- Pleroma.Config.get([:user, :deny_follow_blocked]), {_, false} <- {:user_blocked, User.blocks?(followed, follower) && deny_follow_blocked}, {_, false} <- {:user_locked, User.locked?(followed)}, @@ -575,6 +572,7 @@ def handle_incoming( :noop end + ActivityPub.notify_and_stream(activity) {:ok, activity} else _e -> @@ -595,6 +593,8 @@ def handle_incoming( User.update_follower_count(followed) User.update_following_count(follower) + Notification.update_notification_type(followed, follow_activity) + ActivityPub.accept(%{ to: follow_activity.data["to"], type: "Accept", @@ -662,8 +662,18 @@ def handle_incoming( |> handle_incoming(options) end + def handle_incoming( + %{"type" => "Create", "object" => %{"type" => "ChatMessage"}} = data, + _options + ) do + with {:ok, %User{}} <- ObjectValidator.fetch_actor(data), + {:ok, activity, _} <- Pipeline.common_pipeline(data, local: false) do + {:ok, activity} + end + end + def handle_incoming(%{"type" => type} = data, _options) - when type in ["Like", "EmojiReact", "Announce"] do + when type in ~w{Like EmojiReact Announce} do with :ok <- ObjectValidator.fetch_actor_and_object(data), {:ok, activity, _meta} <- Pipeline.common_pipeline(data, local: false) do @@ -674,35 +684,13 @@ def handle_incoming(%{"type" => type} = data, _options) end def handle_incoming( - %{"type" => "Update", "object" => %{"type" => object_type} = object, "actor" => actor_id} = - data, + %{"type" => type} = data, _options ) - when object_type in [ - "Person", - "Application", - "Service", - "Organization" - ] do - with %User{ap_id: ^actor_id} = actor <- User.get_cached_by_ap_id(object["id"]) do - {:ok, new_user_data} = ActivityPub.user_data_from_user_object(object) - - actor - |> User.remote_user_changeset(new_user_data) - |> User.update_and_set_cache() - - ActivityPub.update(%{ - local: false, - to: data["to"] || [], - cc: data["cc"] || [], - object: object, - actor: actor_id, - activity_id: data["id"] - }) - else - e -> - Logger.error(e) - :error + when type in ~w{Update Block} do + with {:ok, %User{}} <- ObjectValidator.fetch_actor(data), + {:ok, activity, _} <- Pipeline.common_pipeline(data, local: false) do + {:ok, activity} end end @@ -715,7 +703,7 @@ def handle_incoming( else {:error, {:validate_object, _}} = e -> # Check if we have a create activity for this - with {:ok, object_id} <- Types.ObjectID.cast(data["object"]), + with {:ok, object_id} <- ObjectValidators.ObjectID.cast(data["object"]), %Activity{data: %{"actor" => actor}} <- Activity.create_by_object_ap_id(object_id) |> Repo.one(), # We have one, insert a tombstone and retry @@ -778,21 +766,6 @@ def handle_incoming( end end - def handle_incoming( - %{"type" => "Block", "object" => blocked, "actor" => blocker, "id" => id} = _data, - _options - ) do - with %User{local: true} = blocked = User.get_cached_by_ap_id(blocked), - {:ok, %User{} = blocker} = User.get_or_fetch_by_ap_id(blocker), - {:ok, activity} <- ActivityPub.block(blocker, blocked, id, false) do - User.unfollow(blocker, blocked) - User.block(blocker, blocked) - {:ok, activity} - else - _e -> :error - end - end - def handle_incoming( %{ "type" => "Move", @@ -1113,6 +1086,9 @@ def add_attributed_to(object) do Map.put(object, "attributedTo", attributed_to) end + # TODO: Revisit this + def prepare_attachments(%{"type" => "ChatMessage"} = object), do: object + def prepare_attachments(object) do attachments = object diff --git a/lib/pleroma/web/activity_pub/utils.ex b/lib/pleroma/web/activity_pub/utils.ex index f2375bcc4..dfae602df 100644 --- a/lib/pleroma/web/activity_pub/utils.ex +++ b/lib/pleroma/web/activity_pub/utils.ex @@ -7,6 +7,7 @@ defmodule Pleroma.Web.ActivityPub.Utils do alias Ecto.UUID alias Pleroma.Activity alias Pleroma.Config + alias Pleroma.Maps alias Pleroma.Notification alias Pleroma.Object alias Pleroma.Repo @@ -244,7 +245,7 @@ defp lazy_put_object_defaults(activity, _), do: activity Inserts a full object if it is contained in an activity. """ def insert_full_object(%{"object" => %{"type" => type} = object_data} = map) - when is_map(object_data) and type in @supported_object_types do + when type in @supported_object_types do with {:ok, object} <- Object.create(object_data) do map = Map.put(map, "object", object.data["id"]) @@ -307,7 +308,7 @@ def make_like_data( "cc" => cc, "context" => object.data["context"] } - |> maybe_put("id", activity_id) + |> Maps.put_if_present("id", activity_id) end def make_emoji_reaction_data(user, object, emoji, activity_id) do @@ -477,7 +478,7 @@ def make_follow_data( "object" => followed_id, "state" => "pending" } - |> maybe_put("id", activity_id) + |> Maps.put_if_present("id", activity_id) end def fetch_latest_follow(%User{ap_id: follower_id}, %User{ap_id: followed_id}) do @@ -546,7 +547,7 @@ def make_announce_data( "cc" => [], "context" => object.data["context"] } - |> maybe_put("id", activity_id) + |> Maps.put_if_present("id", activity_id) end def make_announce_data( @@ -563,7 +564,7 @@ def make_announce_data( "cc" => [Pleroma.Constants.as_public()], "context" => object.data["context"] } - |> maybe_put("id", activity_id) + |> Maps.put_if_present("id", activity_id) end def make_undo_data( @@ -582,7 +583,7 @@ def make_undo_data( "cc" => [Pleroma.Constants.as_public()], "context" => context } - |> maybe_put("id", activity_id) + |> Maps.put_if_present("id", activity_id) end @spec add_announce_to_object(Activity.t(), Object.t()) :: @@ -627,7 +628,7 @@ def make_unfollow_data(follower, followed, follow_activity, activity_id) do "to" => [followed.ap_id], "object" => follow_activity.data } - |> maybe_put("id", activity_id) + |> Maps.put_if_present("id", activity_id) end #### Block-related helpers @@ -650,7 +651,7 @@ def make_block_data(blocker, blocked, activity_id) do "to" => [blocked.ap_id], "object" => blocked.ap_id } - |> maybe_put("id", activity_id) + |> Maps.put_if_present("id", activity_id) end #### Create-related helpers @@ -740,12 +741,12 @@ defp build_flag_object(_), do: [] def get_reports(params, page, page_size) do params = params - |> Map.put("type", "Flag") - |> Map.put("skip_preload", true) - |> Map.put("preload_report_notes", true) - |> Map.put("total", true) - |> Map.put("limit", page_size) - |> Map.put("offset", (page - 1) * page_size) + |> Map.put(:type, "Flag") + |> Map.put(:skip_preload, true) + |> Map.put(:preload_report_notes, true) + |> Map.put(:total, true) + |> Map.put(:limit, page_size) + |> Map.put(:offset, (page - 1) * page_size) ActivityPub.fetch_activities([], params, :offset) end @@ -870,7 +871,4 @@ def get_existing_votes(actor, %{data: %{"id" => id}}) do |> where([a, object: o], fragment("(?)->>'type' = 'Answer'", o.data)) |> Repo.all() end - - def maybe_put(map, _key, nil), do: map - def maybe_put(map, key, value), do: Map.put(map, key, value) end diff --git a/lib/pleroma/web/activity_pub/views/user_view.ex b/lib/pleroma/web/activity_pub/views/user_view.ex index 34590b16d..4a02b09a1 100644 --- a/lib/pleroma/web/activity_pub/views/user_view.ex +++ b/lib/pleroma/web/activity_pub/views/user_view.ex @@ -213,34 +213,24 @@ def render("activity_collection.json", %{iri: iri}) do |> Map.merge(Utils.make_json_ld_header()) end - def render("activity_collection_page.json", %{activities: activities, iri: iri}) do - # this is sorted chronologically, so first activity is the newest (max) - {max_id, min_id, collection} = - if length(activities) > 0 do - { - Enum.at(activities, 0).id, - Enum.at(Enum.reverse(activities), 0).id, - Enum.map(activities, fn act -> - {:ok, data} = Transmogrifier.prepare_outgoing(act.data) - data - end) - } - else - { - 0, - 0, - [] - } - end + def render("activity_collection_page.json", %{ + activities: activities, + iri: iri, + pagination: pagination + }) do + collection = + Enum.map(activities, fn activity -> + {:ok, data} = Transmogrifier.prepare_outgoing(activity.data) + data + end) %{ - "id" => "#{iri}?max_id=#{max_id}&page=true", "type" => "OrderedCollectionPage", "partOf" => iri, - "orderedItems" => collection, - "next" => "#{iri}?max_id=#{min_id}&page=true" + "orderedItems" => collection } |> Map.merge(Utils.make_json_ld_header()) + |> Map.merge(pagination) end defp maybe_put_total_items(map, false, _total), do: map diff --git a/lib/pleroma/web/activity_pub/visibility.ex b/lib/pleroma/web/activity_pub/visibility.ex index 453a6842e..343f41caa 100644 --- a/lib/pleroma/web/activity_pub/visibility.ex +++ b/lib/pleroma/web/activity_pub/visibility.ex @@ -47,6 +47,10 @@ def is_list?(_), do: false @spec visible_for_user?(Activity.t(), User.t() | nil) :: boolean() def visible_for_user?(%{actor: ap_id}, %User{ap_id: ap_id}), do: true + def visible_for_user?(nil, _), do: false + + def visible_for_user?(%{data: %{"listMessage" => _}}, nil), do: false + def visible_for_user?(%{data: %{"listMessage" => list_ap_id}} = activity, %User{} = user) do user.ap_id in activity.data["to"] || list_ap_id @@ -54,8 +58,6 @@ def visible_for_user?(%{data: %{"listMessage" => list_ap_id}} = activity, %User{ |> Pleroma.List.member?(user) end - def visible_for_user?(%{data: %{"listMessage" => _}}, nil), do: false - def visible_for_user?(%{local: local} = activity, nil) do cfg_key = if local, diff --git a/lib/pleroma/web/admin_api/controllers/admin_api_controller.ex b/lib/pleroma/web/admin_api/controllers/admin_api_controller.ex index 783203c07..f9545d895 100644 --- a/lib/pleroma/web/admin_api/controllers/admin_api_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/admin_api_controller.ex @@ -7,38 +7,24 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do import Pleroma.Web.ControllerHelper, only: [json_response: 3] - alias Pleroma.Activity alias Pleroma.Config - alias Pleroma.ConfigDB alias Pleroma.MFA alias Pleroma.ModerationLog alias Pleroma.Plugs.OAuthScopesPlug - alias Pleroma.ReportNote alias Pleroma.Stats alias Pleroma.User - alias Pleroma.UserInviteToken alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.ActivityPub.Builder alias Pleroma.Web.ActivityPub.Pipeline - alias Pleroma.Web.ActivityPub.Relay - alias Pleroma.Web.ActivityPub.Utils alias Pleroma.Web.AdminAPI alias Pleroma.Web.AdminAPI.AccountView - alias Pleroma.Web.AdminAPI.ConfigView alias Pleroma.Web.AdminAPI.ModerationLogView - alias Pleroma.Web.AdminAPI.Report - alias Pleroma.Web.AdminAPI.ReportView alias Pleroma.Web.AdminAPI.Search - alias Pleroma.Web.CommonAPI alias Pleroma.Web.Endpoint - alias Pleroma.Web.MastodonAPI - alias Pleroma.Web.MastodonAPI.AppView - alias Pleroma.Web.OAuth.App alias Pleroma.Web.Router require Logger - @descriptions Pleroma.Docs.JSON.compile() @users_page_size 50 plug( @@ -69,30 +55,10 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do ] ) - plug(OAuthScopesPlug, %{scopes: ["read:invites"], admin: true} when action == :invites) - - plug( - OAuthScopesPlug, - %{scopes: ["write:invites"], admin: true} - when action in [:create_invite_token, :revoke_invite, :email_invite] - ) - plug( OAuthScopesPlug, %{scopes: ["write:follows"], admin: true} - when action in [:user_follow, :user_unfollow, :relay_follow, :relay_unfollow] - ) - - plug( - OAuthScopesPlug, - %{scopes: ["read:reports"], admin: true} - when action in [:list_reports, :report_show] - ) - - plug( - OAuthScopesPlug, - %{scopes: ["write:reports"], admin: true} - when action in [:reports_update, :report_notes_create, :report_notes_delete] + when action in [:user_follow, :user_unfollow] ) plug( @@ -105,11 +71,8 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do OAuthScopesPlug, %{scopes: ["read"], admin: true} when action in [ - :config_show, :list_log, :stats, - :relay_list, - :config_descriptions, :need_reboot ] ) @@ -119,13 +82,8 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do %{scopes: ["write"], admin: true} when action in [ :restart, - :config_update, :resend_confirmation_email, :confirm_email, - :oauth_app_create, - :oauth_app_list, - :oauth_app_update, - :oauth_app_delete, :reload_emoji ] ) @@ -153,8 +111,7 @@ def user_delete(%{assigns: %{user: admin}} = conn, %{"nicknames" => nicknames}) action: "delete" }) - conn - |> json(nicknames) + json(conn, nicknames) end def user_follow(%{assigns: %{user: admin}} = conn, %{ @@ -173,8 +130,7 @@ def user_follow(%{assigns: %{user: admin}} = conn, %{ }) end - conn - |> json("ok") + json(conn, "ok") end def user_unfollow(%{assigns: %{user: admin}} = conn, %{ @@ -193,8 +149,7 @@ def user_unfollow(%{assigns: %{user: admin}} = conn, %{ }) end - conn - |> json("ok") + json(conn, "ok") end def users_create(%{assigns: %{user: admin}} = conn, %{"users" => users}) do @@ -233,8 +188,7 @@ def users_create(%{assigns: %{user: admin}} = conn, %{"users" => users}) do action: "create" }) - conn - |> json(res) + json(conn, res) {:error, id, changeset, _} -> res = @@ -268,10 +222,10 @@ def list_instance_statuses(conn, %{"instance" => instance} = params) do activities = ActivityPub.fetch_statuses(nil, %{ - "instance" => instance, - "limit" => page_size, - "offset" => (page - 1) * page_size, - "exclude_reblogs" => !with_reblogs && "true" + instance: instance, + limit: page_size, + offset: (page - 1) * page_size, + exclude_reblogs: not with_reblogs }) conn @@ -288,13 +242,13 @@ def list_user_statuses(conn, %{"nickname" => nickname} = params) do activities = ActivityPub.fetch_user_activities(user, nil, %{ - "limit" => page_size, - "godmode" => godmode, - "exclude_reblogs" => !with_reblogs && "true" + limit: page_size, + godmode: godmode, + exclude_reblogs: not with_reblogs }) conn - |> put_view(MastodonAPI.StatusView) + |> put_view(AdminAPI.StatusView) |> render("index.json", %{activities: activities, as: :activity}) else _ -> {:error, :not_found} @@ -405,8 +359,8 @@ defp maybe_parse_filters(filters) do filters |> String.split(",") |> Enum.filter(&Enum.member?(@filters, &1)) - |> Enum.map(&String.to_atom(&1)) - |> Enum.into(%{}, &{&1, true}) + |> Enum.map(&String.to_atom/1) + |> Map.new(&{&1, true}) end def right_add_multiple(%{assigns: %{user: admin}} = conn, %{ @@ -531,113 +485,6 @@ def right_delete(%{assigns: %{user: %{nickname: nickname}}} = conn, %{"nickname" render_error(conn, :forbidden, "You can't revoke your own admin status.") end - def relay_list(conn, _params) do - with {:ok, list} <- Relay.list() do - json(conn, %{relays: list}) - else - _ -> - conn - |> put_status(500) - end - end - - def relay_follow(%{assigns: %{user: admin}} = conn, %{"relay_url" => target}) do - with {:ok, _message} <- Relay.follow(target) do - ModerationLog.insert_log(%{ - action: "relay_follow", - actor: admin, - target: target - }) - - json(conn, target) - else - _ -> - conn - |> put_status(500) - |> json(target) - end - end - - def relay_unfollow(%{assigns: %{user: admin}} = conn, %{"relay_url" => target}) do - with {:ok, _message} <- Relay.unfollow(target) do - ModerationLog.insert_log(%{ - action: "relay_unfollow", - actor: admin, - target: target - }) - - json(conn, target) - else - _ -> - conn - |> put_status(500) - |> json(target) - end - end - - @doc "Sends registration invite via email" - def email_invite(%{assigns: %{user: user}} = conn, %{"email" => email} = params) do - with {_, false} <- {:registrations_open, Config.get([:instance, :registrations_open])}, - {_, true} <- {:invites_enabled, Config.get([:instance, :invites_enabled])}, - {:ok, invite_token} <- UserInviteToken.create_invite(), - email <- - Pleroma.Emails.UserEmail.user_invitation_email( - user, - invite_token, - email, - params["name"] - ), - {:ok, _} <- Pleroma.Emails.Mailer.deliver(email) do - json_response(conn, :no_content, "") - else - {:registrations_open, _} -> - {:error, "To send invites you need to set the `registrations_open` option to false."} - - {:invites_enabled, _} -> - {:error, "To send invites you need to set the `invites_enabled` option to true."} - end - end - - @doc "Create an account registration invite token" - def create_invite_token(conn, params) do - opts = %{} - - opts = - if params["max_use"], - do: Map.put(opts, :max_use, params["max_use"]), - else: opts - - opts = - if params["expires_at"], - do: Map.put(opts, :expires_at, params["expires_at"]), - else: opts - - {:ok, invite} = UserInviteToken.create_invite(opts) - - json(conn, AccountView.render("invite.json", %{invite: invite})) - end - - @doc "Get list of created invites" - def invites(conn, _params) do - invites = UserInviteToken.list_invites() - - conn - |> put_view(AccountView) - |> render("invites.json", %{invites: invites}) - end - - @doc "Revokes invite by token" - def revoke_invite(conn, %{"token" => token}) do - with {:ok, invite} <- UserInviteToken.find_by_token(token), - {:ok, updated_invite} = UserInviteToken.update_invite(invite, %{used: true}) do - conn - |> put_view(AccountView) - |> render("invite.json", %{invite: updated_invite}) - else - nil -> {:error, :not_found} - end - end - @doc "Get a password reset token (base64 string) for given nickname" def get_password_reset(conn, %{"nickname" => nickname}) do (%User{local: true} = user) = User.get_cached_by_nickname(nickname) @@ -717,89 +564,10 @@ def update_user_credentials( {:error, changeset} -> errors = Map.new(changeset.errors, fn {key, {error, _}} -> {key, error} end) - json(conn, %{errors: errors}) + {:errors, errors} _ -> - json(conn, %{error: "Unable to update user."}) - end - end - - def list_reports(conn, params) do - {page, page_size} = page_params(params) - - reports = Utils.get_reports(params, page, page_size) - - conn - |> put_view(ReportView) - |> render("index.json", %{reports: reports}) - end - - def report_show(conn, %{"id" => id}) do - with %Activity{} = report <- Activity.get_by_id(id) do - conn - |> put_view(ReportView) - |> render("show.json", Report.extract_report_info(report)) - else - _ -> {:error, :not_found} - end - end - - def reports_update(%{assigns: %{user: admin}} = conn, %{"reports" => reports}) do - result = - reports - |> Enum.map(fn report -> - with {:ok, activity} <- CommonAPI.update_report_state(report["id"], report["state"]) do - ModerationLog.insert_log(%{ - action: "report_update", - actor: admin, - subject: activity - }) - - activity - else - {:error, message} -> %{id: report["id"], error: message} - end - end) - - case Enum.any?(result, &Map.has_key?(&1, :error)) do - true -> json_response(conn, :bad_request, result) - false -> json_response(conn, :no_content, "") - end - end - - def report_notes_create(%{assigns: %{user: user}} = conn, %{ - "id" => report_id, - "content" => content - }) do - with {:ok, _} <- ReportNote.create(user.id, report_id, content) do - ModerationLog.insert_log(%{ - action: "report_note", - actor: user, - subject: Activity.get_by_id(report_id), - text: content - }) - - json_response(conn, :no_content, "") - else - _ -> json_response(conn, :bad_request, "") - end - end - - def report_notes_delete(%{assigns: %{user: user}} = conn, %{ - "id" => note_id, - "report_id" => report_id - }) do - with {:ok, note} <- ReportNote.destroy(note_id) do - ModerationLog.insert_log(%{ - action: "report_note_delete", - actor: user, - subject: Activity.get_by_id(report_id), - text: note.content - }) - - json_response(conn, :no_content, "") - else - _ -> json_response(conn, :bad_request, "") + {:error, :not_found} end end @@ -821,105 +589,6 @@ def list_log(conn, params) do |> render("index.json", %{log: log}) end - def config_descriptions(conn, _params) do - descriptions = Enum.filter(@descriptions, &whitelisted_config?/1) - - json(conn, descriptions) - end - - def config_show(conn, %{"only_db" => true}) do - with :ok <- configurable_from_database() do - configs = Pleroma.Repo.all(ConfigDB) - - conn - |> put_view(ConfigView) - |> render("index.json", %{configs: configs}) - end - end - - def config_show(conn, _params) do - with :ok <- configurable_from_database() do - configs = ConfigDB.get_all_as_keyword() - - merged = - Config.Holder.default_config() - |> ConfigDB.merge(configs) - |> Enum.map(fn {group, values} -> - Enum.map(values, fn {key, value} -> - db = - if configs[group][key] do - ConfigDB.get_db_keys(configs[group][key], key) - end - - db_value = configs[group][key] - - merged_value = - if !is_nil(db_value) and Keyword.keyword?(db_value) and - ConfigDB.sub_key_full_update?(group, key, Keyword.keys(db_value)) do - ConfigDB.merge_group(group, key, value, db_value) - else - value - end - - setting = %{ - group: ConfigDB.convert(group), - key: ConfigDB.convert(key), - value: ConfigDB.convert(merged_value) - } - - if db, do: Map.put(setting, :db, db), else: setting - end) - end) - |> List.flatten() - - json(conn, %{configs: merged, need_reboot: Restarter.Pleroma.need_reboot?()}) - end - end - - def config_update(conn, %{"configs" => configs}) do - with :ok <- configurable_from_database() do - {_errors, results} = - configs - |> Enum.filter(&whitelisted_config?/1) - |> Enum.map(fn - %{"group" => group, "key" => key, "delete" => true} = params -> - ConfigDB.delete(%{group: group, key: key, subkeys: params["subkeys"]}) - - %{"group" => group, "key" => key, "value" => value} -> - ConfigDB.update_or_create(%{group: group, key: key, value: value}) - end) - |> Enum.split_with(fn result -> elem(result, 0) == :error end) - - {deleted, updated} = - results - |> Enum.map(fn {:ok, config} -> - Map.put(config, :db, ConfigDB.get_db_keys(config)) - end) - |> Enum.split_with(fn config -> - Ecto.get_meta(config, :state) == :deleted - end) - - Config.TransferTask.load_and_update_env(deleted, false) - - if !Restarter.Pleroma.need_reboot?() do - changed_reboot_settings? = - (updated ++ deleted) - |> Enum.any?(fn config -> - group = ConfigDB.from_string(config.group) - key = ConfigDB.from_string(config.key) - value = ConfigDB.from_binary(config.value) - Config.TransferTask.pleroma_need_restart?(group, key, value) - end) - - if changed_reboot_settings?, do: Restarter.Pleroma.need_reboot() - end - - conn - |> put_view(ConfigView) - |> render("index.json", %{configs: updated, need_reboot: Restarter.Pleroma.need_reboot?()}) - end - end - def restart(conn, _params) do with :ok <- configurable_from_database() do Restarter.Pleroma.restart(Config.get(:env), 50) @@ -940,32 +609,10 @@ defp configurable_from_database do end end - defp whitelisted_config?(group, key) do - if whitelisted_configs = Config.get(:database_config_whitelist) do - Enum.any?(whitelisted_configs, fn - {whitelisted_group} -> - group == inspect(whitelisted_group) - - {whitelisted_group, whitelisted_key} -> - group == inspect(whitelisted_group) && key == inspect(whitelisted_key) - end) - else - true - end - end - - defp whitelisted_config?(%{"group" => group, "key" => key}) do - whitelisted_config?(group, key) - end - - defp whitelisted_config?(%{:group => group} = config) do - whitelisted_config?(group, config[:key]) - end - def reload_emoji(conn, _params) do Pleroma.Emoji.reload() - conn |> json("ok") + json(conn, "ok") end def confirm_email(%{assigns: %{user: admin}} = conn, %{"nicknames" => nicknames}) do @@ -979,7 +626,7 @@ def confirm_email(%{assigns: %{user: admin}} = conn, %{"nicknames" => nicknames} action: "confirm_email" }) - conn |> json("") + json(conn, "") end def resend_confirmation_email(%{assigns: %{user: admin}} = conn, %{"nicknames" => nicknames}) do @@ -993,91 +640,13 @@ def resend_confirmation_email(%{assigns: %{user: admin}} = conn, %{"nicknames" = action: "resend_confirmation_email" }) - conn |> json("") + json(conn, "") end - def oauth_app_create(conn, params) do - params = - if params["name"] do - Map.put(params, "client_name", params["name"]) - else - params - end + def stats(conn, params) do + counters = Stats.get_status_visibility_count(params["instance"]) - result = - case App.create(params) do - {:ok, app} -> - AppView.render("show.json", %{app: app, admin: true}) - - {:error, changeset} -> - App.errors(changeset) - end - - json(conn, result) - end - - def oauth_app_update(conn, params) do - params = - if params["name"] do - Map.put(params, "client_name", params["name"]) - else - params - end - - with {:ok, app} <- App.update(params) do - json(conn, AppView.render("show.json", %{app: app, admin: true})) - else - {:error, changeset} -> - json(conn, App.errors(changeset)) - - nil -> - json_response(conn, :bad_request, "") - end - end - - def oauth_app_list(conn, params) do - {page, page_size} = page_params(params) - - search_params = %{ - client_name: params["name"], - client_id: params["client_id"], - page: page, - page_size: page_size - } - - search_params = - if Map.has_key?(params, "trusted") do - Map.put(search_params, :trusted, params["trusted"]) - else - search_params - end - - with {:ok, apps, count} <- App.search(search_params) do - json( - conn, - AppView.render("index.json", - apps: apps, - count: count, - page_size: page_size, - admin: true - ) - ) - end - end - - def oauth_app_delete(conn, params) do - with {:ok, _app} <- App.destroy(params["id"]) do - json_response(conn, :no_content, "") - else - _ -> json_response(conn, :bad_request, "") - end - end - - def stats(conn, _) do - count = Stats.get_status_visibility_count() - - conn - |> json(%{"status_visibility" => count}) + json(conn, %{"status_visibility" => counters}) end defp page_params(params) do diff --git a/lib/pleroma/web/admin_api/controllers/config_controller.ex b/lib/pleroma/web/admin_api/controllers/config_controller.ex new file mode 100644 index 000000000..7f60470cb --- /dev/null +++ b/lib/pleroma/web/admin_api/controllers/config_controller.ex @@ -0,0 +1,152 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.AdminAPI.ConfigController do + use Pleroma.Web, :controller + + alias Pleroma.Config + alias Pleroma.ConfigDB + alias Pleroma.Plugs.OAuthScopesPlug + + @descriptions Pleroma.Docs.JSON.compile() + + plug(Pleroma.Web.ApiSpec.CastAndValidate) + plug(OAuthScopesPlug, %{scopes: ["write"], admin: true} when action == :update) + + plug( + OAuthScopesPlug, + %{scopes: ["read"], admin: true} + when action in [:show, :descriptions] + ) + + action_fallback(Pleroma.Web.AdminAPI.FallbackController) + + defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.Admin.ConfigOperation + + def descriptions(conn, _params) do + descriptions = Enum.filter(@descriptions, &whitelisted_config?/1) + + json(conn, descriptions) + end + + def show(conn, %{only_db: true}) do + with :ok <- configurable_from_database() do + configs = Pleroma.Repo.all(ConfigDB) + + render(conn, "index.json", %{ + configs: configs, + need_reboot: Restarter.Pleroma.need_reboot?() + }) + end + end + + def show(conn, _params) do + with :ok <- configurable_from_database() do + configs = ConfigDB.get_all_as_keyword() + + merged = + Config.Holder.default_config() + |> ConfigDB.merge(configs) + |> Enum.map(fn {group, values} -> + Enum.map(values, fn {key, value} -> + db = + if configs[group][key] do + ConfigDB.get_db_keys(configs[group][key], key) + end + + db_value = configs[group][key] + + merged_value = + if not is_nil(db_value) and Keyword.keyword?(db_value) and + ConfigDB.sub_key_full_update?(group, key, Keyword.keys(db_value)) do + ConfigDB.merge_group(group, key, value, db_value) + else + value + end + + %ConfigDB{ + group: group, + key: key, + value: merged_value + } + |> Pleroma.Maps.put_if_present(:db, db) + end) + end) + |> List.flatten() + + render(conn, "index.json", %{ + configs: merged, + need_reboot: Restarter.Pleroma.need_reboot?() + }) + end + end + + def update(%{body_params: %{configs: configs}} = conn, _) do + with :ok <- configurable_from_database() do + results = + configs + |> Enum.filter(&whitelisted_config?/1) + |> Enum.map(fn + %{group: group, key: key, delete: true} = params -> + ConfigDB.delete(%{group: group, key: key, subkeys: params[:subkeys]}) + + %{group: group, key: key, value: value} -> + ConfigDB.update_or_create(%{group: group, key: key, value: value}) + end) + |> Enum.reject(fn {result, _} -> result == :error end) + + {deleted, updated} = + results + |> Enum.map(fn {:ok, %{key: key, value: value} = config} -> + Map.put(config, :db, ConfigDB.get_db_keys(value, key)) + end) + |> Enum.split_with(&(Ecto.get_meta(&1, :state) == :deleted)) + + Config.TransferTask.load_and_update_env(deleted, false) + + if not Restarter.Pleroma.need_reboot?() do + changed_reboot_settings? = + (updated ++ deleted) + |> Enum.any?(&Config.TransferTask.pleroma_need_restart?(&1.group, &1.key, &1.value)) + + if changed_reboot_settings?, do: Restarter.Pleroma.need_reboot() + end + + render(conn, "index.json", %{ + configs: updated, + need_reboot: Restarter.Pleroma.need_reboot?() + }) + end + end + + defp configurable_from_database do + if Config.get(:configurable_from_database) do + :ok + else + {:error, "To use this endpoint you need to enable configuration from database."} + end + end + + defp whitelisted_config?(group, key) do + if whitelisted_configs = Config.get(:database_config_whitelist) do + Enum.any?(whitelisted_configs, fn + {whitelisted_group} -> + group == inspect(whitelisted_group) + + {whitelisted_group, whitelisted_key} -> + group == inspect(whitelisted_group) && key == inspect(whitelisted_key) + end) + else + true + end + end + + defp whitelisted_config?(%{group: group, key: key}) do + whitelisted_config?(group, key) + end + + defp whitelisted_config?(%{group: group} = config) do + whitelisted_config?(group, config[:key]) + end +end diff --git a/lib/pleroma/web/admin_api/controllers/fallback_controller.ex b/lib/pleroma/web/admin_api/controllers/fallback_controller.ex index 82965936d..34d90db07 100644 --- a/lib/pleroma/web/admin_api/controllers/fallback_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/fallback_controller.ex @@ -17,6 +17,12 @@ def call(conn, {:error, reason}) do |> json(%{error: reason}) end + def call(conn, {:errors, errors}) do + conn + |> put_status(:bad_request) + |> json(%{errors: errors}) + end + def call(conn, {:param_cast, _}) do conn |> put_status(:bad_request) diff --git a/lib/pleroma/web/admin_api/controllers/invite_controller.ex b/lib/pleroma/web/admin_api/controllers/invite_controller.ex new file mode 100644 index 000000000..7d169b8d2 --- /dev/null +++ b/lib/pleroma/web/admin_api/controllers/invite_controller.ex @@ -0,0 +1,78 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.AdminAPI.InviteController do + use Pleroma.Web, :controller + + import Pleroma.Web.ControllerHelper, only: [json_response: 3] + + alias Pleroma.Config + alias Pleroma.Plugs.OAuthScopesPlug + alias Pleroma.UserInviteToken + + require Logger + + plug(Pleroma.Web.ApiSpec.CastAndValidate) + plug(OAuthScopesPlug, %{scopes: ["read:invites"], admin: true} when action == :index) + + plug( + OAuthScopesPlug, + %{scopes: ["write:invites"], admin: true} when action in [:create, :revoke, :email] + ) + + action_fallback(Pleroma.Web.AdminAPI.FallbackController) + + defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.Admin.InviteOperation + + @doc "Get list of created invites" + def index(conn, _params) do + invites = UserInviteToken.list_invites() + + render(conn, "index.json", invites: invites) + end + + @doc "Create an account registration invite token" + def create(%{body_params: params} = conn, _) do + {:ok, invite} = UserInviteToken.create_invite(params) + + render(conn, "show.json", invite: invite) + end + + @doc "Revokes invite by token" + def revoke(%{body_params: %{token: token}} = conn, _) do + with {:ok, invite} <- UserInviteToken.find_by_token(token), + {:ok, updated_invite} = UserInviteToken.update_invite(invite, %{used: true}) do + render(conn, "show.json", invite: updated_invite) + else + nil -> {:error, :not_found} + error -> error + end + end + + @doc "Sends registration invite via email" + def email(%{assigns: %{user: user}, body_params: %{email: email} = params} = conn, _) do + with {_, false} <- {:registrations_open, Config.get([:instance, :registrations_open])}, + {_, true} <- {:invites_enabled, Config.get([:instance, :invites_enabled])}, + {:ok, invite_token} <- UserInviteToken.create_invite(), + {:ok, _} <- + user + |> Pleroma.Emails.UserEmail.user_invitation_email( + invite_token, + email, + params[:name] + ) + |> Pleroma.Emails.Mailer.deliver() do + json_response(conn, :no_content, "") + else + {:registrations_open, _} -> + {:error, "To send invites you need to set the `registrations_open` option to false."} + + {:invites_enabled, _} -> + {:error, "To send invites you need to set the `invites_enabled` option to true."} + + {:error, error} -> + {:error, error} + end + end +end diff --git a/lib/pleroma/web/admin_api/controllers/media_proxy_cache_controller.ex b/lib/pleroma/web/admin_api/controllers/media_proxy_cache_controller.ex new file mode 100644 index 000000000..e2759d59f --- /dev/null +++ b/lib/pleroma/web/admin_api/controllers/media_proxy_cache_controller.ex @@ -0,0 +1,63 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.AdminAPI.MediaProxyCacheController do + use Pleroma.Web, :controller + + alias Pleroma.Plugs.OAuthScopesPlug + alias Pleroma.Web.ApiSpec.Admin, as: Spec + alias Pleroma.Web.MediaProxy + + plug(Pleroma.Web.ApiSpec.CastAndValidate) + + plug( + OAuthScopesPlug, + %{scopes: ["read:media_proxy_caches"], admin: true} when action in [:index] + ) + + plug( + OAuthScopesPlug, + %{scopes: ["write:media_proxy_caches"], admin: true} when action in [:purge, :delete] + ) + + action_fallback(Pleroma.Web.AdminAPI.FallbackController) + + defdelegate open_api_operation(action), to: Spec.MediaProxyCacheOperation + + def index(%{assigns: %{user: _}} = conn, params) do + cursor = + :banned_urls_cache + |> :ets.table([{:traverse, {:select, Cachex.Query.create(true, :key)}}]) + |> :qlc.cursor() + + urls = + case params.page do + 1 -> + :qlc.next_answers(cursor, params.page_size) + + _ -> + :qlc.next_answers(cursor, (params.page - 1) * params.page_size) + :qlc.next_answers(cursor, params.page_size) + end + + :qlc.delete_cursor(cursor) + + render(conn, "index.json", urls: urls) + end + + def delete(%{assigns: %{user: _}, body_params: %{urls: urls}} = conn, _) do + MediaProxy.remove_from_banned_urls(urls) + render(conn, "index.json", urls: urls) + end + + def purge(%{assigns: %{user: _}, body_params: %{urls: urls, ban: ban}} = conn, _) do + MediaProxy.Invalidation.purge(urls) + + if ban do + MediaProxy.put_in_banned_urls(urls) + end + + render(conn, "index.json", urls: urls) + end +end diff --git a/lib/pleroma/web/admin_api/controllers/oauth_app_controller.ex b/lib/pleroma/web/admin_api/controllers/oauth_app_controller.ex new file mode 100644 index 000000000..dca23ea73 --- /dev/null +++ b/lib/pleroma/web/admin_api/controllers/oauth_app_controller.ex @@ -0,0 +1,77 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.AdminAPI.OAuthAppController do + use Pleroma.Web, :controller + + import Pleroma.Web.ControllerHelper, only: [json_response: 3] + + alias Pleroma.Plugs.OAuthScopesPlug + alias Pleroma.Web.OAuth.App + + require Logger + + plug(Pleroma.Web.ApiSpec.CastAndValidate) + plug(:put_view, Pleroma.Web.MastodonAPI.AppView) + + plug( + OAuthScopesPlug, + %{scopes: ["write"], admin: true} + when action in [:create, :index, :update, :delete] + ) + + action_fallback(Pleroma.Web.AdminAPI.FallbackController) + + defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.Admin.OAuthAppOperation + + def index(conn, params) do + search_params = + params + |> Map.take([:client_id, :page, :page_size, :trusted]) + |> Map.put(:client_name, params[:name]) + + with {:ok, apps, count} <- App.search(search_params) do + render(conn, "index.json", + apps: apps, + count: count, + page_size: params.page_size, + admin: true + ) + end + end + + def create(%{body_params: params} = conn, _) do + params = Pleroma.Maps.put_if_present(params, :client_name, params[:name]) + + case App.create(params) do + {:ok, app} -> + render(conn, "show.json", app: app, admin: true) + + {:error, changeset} -> + json(conn, App.errors(changeset)) + end + end + + def update(%{body_params: params} = conn, %{id: id}) do + params = Pleroma.Maps.put_if_present(params, :client_name, params[:name]) + + with {:ok, app} <- App.update(id, params) do + render(conn, "show.json", app: app, admin: true) + else + {:error, changeset} -> + json(conn, App.errors(changeset)) + + nil -> + json_response(conn, :bad_request, "") + end + end + + def delete(conn, params) do + with {:ok, _app} <- App.destroy(params.id) do + json_response(conn, :no_content, "") + else + _ -> json_response(conn, :bad_request, "") + end + end +end diff --git a/lib/pleroma/web/admin_api/controllers/relay_controller.ex b/lib/pleroma/web/admin_api/controllers/relay_controller.ex new file mode 100644 index 000000000..cf9f3a14b --- /dev/null +++ b/lib/pleroma/web/admin_api/controllers/relay_controller.ex @@ -0,0 +1,67 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.AdminAPI.RelayController do + use Pleroma.Web, :controller + + alias Pleroma.ModerationLog + alias Pleroma.Plugs.OAuthScopesPlug + alias Pleroma.Web.ActivityPub.Relay + + require Logger + + plug(Pleroma.Web.ApiSpec.CastAndValidate) + + plug( + OAuthScopesPlug, + %{scopes: ["write:follows"], admin: true} + when action in [:follow, :unfollow] + ) + + plug(OAuthScopesPlug, %{scopes: ["read"], admin: true} when action == :index) + + action_fallback(Pleroma.Web.AdminAPI.FallbackController) + + defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.Admin.RelayOperation + + def index(conn, _params) do + with {:ok, list} <- Relay.list() do + json(conn, %{relays: list}) + end + end + + def follow(%{assigns: %{user: admin}, body_params: %{relay_url: target}} = conn, _) do + with {:ok, _message} <- Relay.follow(target) do + ModerationLog.insert_log(%{ + action: "relay_follow", + actor: admin, + target: target + }) + + json(conn, target) + else + _ -> + conn + |> put_status(500) + |> json(target) + end + end + + def unfollow(%{assigns: %{user: admin}, body_params: %{relay_url: target}} = conn, _) do + with {:ok, _message} <- Relay.unfollow(target) do + ModerationLog.insert_log(%{ + action: "relay_unfollow", + actor: admin, + target: target + }) + + json(conn, target) + else + _ -> + conn + |> put_status(500) + |> json(target) + end + end +end diff --git a/lib/pleroma/web/admin_api/controllers/report_controller.ex b/lib/pleroma/web/admin_api/controllers/report_controller.ex new file mode 100644 index 000000000..4c011e174 --- /dev/null +++ b/lib/pleroma/web/admin_api/controllers/report_controller.ex @@ -0,0 +1,107 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.AdminAPI.ReportController do + use Pleroma.Web, :controller + + import Pleroma.Web.ControllerHelper, only: [json_response: 3] + + alias Pleroma.Activity + alias Pleroma.ModerationLog + alias Pleroma.Plugs.OAuthScopesPlug + alias Pleroma.ReportNote + alias Pleroma.Web.ActivityPub.Utils + alias Pleroma.Web.AdminAPI + alias Pleroma.Web.AdminAPI.Report + alias Pleroma.Web.CommonAPI + + require Logger + + plug(Pleroma.Web.ApiSpec.CastAndValidate) + plug(OAuthScopesPlug, %{scopes: ["read:reports"], admin: true} when action in [:index, :show]) + + plug( + OAuthScopesPlug, + %{scopes: ["write:reports"], admin: true} + when action in [:update, :notes_create, :notes_delete] + ) + + action_fallback(AdminAPI.FallbackController) + + defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.Admin.ReportOperation + + def index(conn, params) do + reports = Utils.get_reports(params, params.page, params.page_size) + + render(conn, "index.json", reports: reports) + end + + def show(conn, %{id: id}) do + with %Activity{} = report <- Activity.get_by_id(id) do + render(conn, "show.json", Report.extract_report_info(report)) + else + _ -> {:error, :not_found} + end + end + + def update(%{assigns: %{user: admin}, body_params: %{reports: reports}} = conn, _) do + result = + Enum.map(reports, fn report -> + case CommonAPI.update_report_state(report.id, report.state) do + {:ok, activity} -> + ModerationLog.insert_log(%{ + action: "report_update", + actor: admin, + subject: activity + }) + + activity + + {:error, message} -> + %{id: report.id, error: message} + end + end) + + if Enum.any?(result, &Map.has_key?(&1, :error)) do + json_response(conn, :bad_request, result) + else + json_response(conn, :no_content, "") + end + end + + def notes_create(%{assigns: %{user: user}, body_params: %{content: content}} = conn, %{ + id: report_id + }) do + with {:ok, _} <- ReportNote.create(user.id, report_id, content) do + ModerationLog.insert_log(%{ + action: "report_note", + actor: user, + subject: Activity.get_by_id(report_id), + text: content + }) + + json_response(conn, :no_content, "") + else + _ -> json_response(conn, :bad_request, "") + end + end + + def notes_delete(%{assigns: %{user: user}} = conn, %{ + id: note_id, + report_id: report_id + }) do + with {:ok, note} <- ReportNote.destroy(note_id) do + ModerationLog.insert_log(%{ + action: "report_note_delete", + actor: user, + subject: Activity.get_by_id(report_id), + text: note.content + }) + + json_response(conn, :no_content, "") + else + _ -> json_response(conn, :bad_request, "") + end + end +end diff --git a/lib/pleroma/web/admin_api/controllers/status_controller.ex b/lib/pleroma/web/admin_api/controllers/status_controller.ex index 08cb9c10b..bc48cc527 100644 --- a/lib/pleroma/web/admin_api/controllers/status_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/status_controller.ex @@ -29,11 +29,11 @@ defmodule Pleroma.Web.AdminAPI.StatusController do def index(%{assigns: %{user: _admin}} = conn, params) do activities = ActivityPub.fetch_statuses(nil, %{ - "godmode" => params.godmode, - "local_only" => params.local_only, - "limit" => params.page_size, - "offset" => (params.page - 1) * params.page_size, - "exclude_reblogs" => not params.with_reblogs + godmode: params.godmode, + local_only: params.local_only, + limit: params.page_size, + offset: (params.page - 1) * params.page_size, + exclude_reblogs: not params.with_reblogs }) render(conn, "index.json", activities: activities, as: :activity) @@ -41,9 +41,7 @@ def index(%{assigns: %{user: _admin}} = conn, params) do def show(conn, %{id: id}) do with %Activity{} = activity <- Activity.get_by_id(id) do - conn - |> put_view(MastodonAPI.StatusView) - |> render("show.json", %{activity: activity}) + render(conn, "show.json", %{activity: activity}) else nil -> {:error, :not_found} end diff --git a/lib/pleroma/web/admin_api/search.ex b/lib/pleroma/web/admin_api/search.ex index c28efadd5..0bfb8f022 100644 --- a/lib/pleroma/web/admin_api/search.ex +++ b/lib/pleroma/web/admin_api/search.ex @@ -21,7 +21,7 @@ def user(params \\ %{}) do query = params |> Map.drop([:page, :page_size]) - |> Map.put(:exclude_service_users, true) + |> Map.put(:invisible, false) |> User.Query.build() |> order_by([u], u.nickname) @@ -31,7 +31,6 @@ def user(params \\ %{}) do count = Repo.aggregate(query, :count, :id) results = Repo.all(paginated_query) - {:ok, results, count} end end diff --git a/lib/pleroma/web/admin_api/views/account_view.ex b/lib/pleroma/web/admin_api/views/account_view.ex index 46dadb5ee..e1e929632 100644 --- a/lib/pleroma/web/admin_api/views/account_view.ex +++ b/lib/pleroma/web/admin_api/views/account_view.ex @@ -76,25 +76,8 @@ def render("show.json", %{user: user}) do "local" => user.local, "roles" => User.roles(user), "tags" => user.tags || [], - "confirmation_pending" => user.confirmation_pending - } - end - - def render("invite.json", %{invite: invite}) do - %{ - "id" => invite.id, - "token" => invite.token, - "used" => invite.used, - "expires_at" => invite.expires_at, - "uses" => invite.uses, - "max_use" => invite.max_use, - "invite_type" => invite.invite_type - } - end - - def render("invites.json", %{invites: invites}) do - %{ - invites: render_many(invites, AccountView, "invite.json", as: :invite) + "confirmation_pending" => user.confirmation_pending, + "url" => user.uri || user.ap_id } end diff --git a/lib/pleroma/web/admin_api/views/config_view.ex b/lib/pleroma/web/admin_api/views/config_view.ex index 587ef760e..d2d8b5907 100644 --- a/lib/pleroma/web/admin_api/views/config_view.ex +++ b/lib/pleroma/web/admin_api/views/config_view.ex @@ -5,23 +5,20 @@ defmodule Pleroma.Web.AdminAPI.ConfigView do use Pleroma.Web, :view - def render("index.json", %{configs: configs} = params) do - map = %{ - configs: render_many(configs, __MODULE__, "show.json", as: :config) - } + alias Pleroma.ConfigDB - if params[:need_reboot] do - Map.put(map, :need_reboot, true) - else - map - end + def render("index.json", %{configs: configs} = params) do + %{ + configs: render_many(configs, __MODULE__, "show.json", as: :config), + need_reboot: params[:need_reboot] + } end def render("show.json", %{config: config}) do map = %{ - key: config.key, - group: config.group, - value: Pleroma.ConfigDB.from_binary_with_convert(config.value) + key: ConfigDB.to_json_types(config.key), + group: ConfigDB.to_json_types(config.group), + value: ConfigDB.to_json_types(config.value) } if config.db != [] do diff --git a/lib/pleroma/web/admin_api/views/invite_view.ex b/lib/pleroma/web/admin_api/views/invite_view.ex new file mode 100644 index 000000000..f93cb6916 --- /dev/null +++ b/lib/pleroma/web/admin_api/views/invite_view.ex @@ -0,0 +1,25 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.AdminAPI.InviteView do + use Pleroma.Web, :view + + def render("index.json", %{invites: invites}) do + %{ + invites: render_many(invites, __MODULE__, "show.json", as: :invite) + } + end + + def render("show.json", %{invite: invite}) do + %{ + "id" => invite.id, + "token" => invite.token, + "used" => invite.used, + "expires_at" => invite.expires_at, + "uses" => invite.uses, + "max_use" => invite.max_use, + "invite_type" => invite.invite_type + } + end +end diff --git a/lib/pleroma/web/admin_api/views/media_proxy_cache_view.ex b/lib/pleroma/web/admin_api/views/media_proxy_cache_view.ex new file mode 100644 index 000000000..c97400beb --- /dev/null +++ b/lib/pleroma/web/admin_api/views/media_proxy_cache_view.ex @@ -0,0 +1,11 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.AdminAPI.MediaProxyCacheView do + use Pleroma.Web, :view + + def render("index.json", %{urls: urls}) do + %{urls: urls} + end +end diff --git a/lib/pleroma/web/admin_api/views/report_view.ex b/lib/pleroma/web/admin_api/views/report_view.ex index f432b8c2c..773f798fe 100644 --- a/lib/pleroma/web/admin_api/views/report_view.ex +++ b/lib/pleroma/web/admin_api/views/report_view.ex @@ -18,7 +18,7 @@ def render("index.json", %{reports: reports}) do %{ reports: reports[:items] - |> Enum.map(&Report.extract_report_info(&1)) + |> Enum.map(&Report.extract_report_info/1) |> Enum.map(&render(__MODULE__, "show.json", &1)) |> Enum.reverse(), total: reports[:total] diff --git a/lib/pleroma/web/api_spec/cast_and_validate.ex b/lib/pleroma/web/api_spec/cast_and_validate.ex index bd9026237..fbfc27d6f 100644 --- a/lib/pleroma/web/api_spec/cast_and_validate.ex +++ b/lib/pleroma/web/api_spec/cast_and_validate.ex @@ -40,7 +40,7 @@ def call(%{private: %{open_api_spex: private_data}} = conn, %{ |> List.first() _ -> - nil + "application/json" end private_data = Map.put(private_data, :operation_id, operation_id) diff --git a/lib/pleroma/web/api_spec/helpers.ex b/lib/pleroma/web/api_spec/helpers.ex index a9cfe0fed..a258e8421 100644 --- a/lib/pleroma/web/api_spec/helpers.ex +++ b/lib/pleroma/web/api_spec/helpers.ex @@ -39,6 +39,12 @@ def pagination_params do :string, "Return the newest items newer than this ID" ), + Operation.parameter( + :offset, + :query, + %Schema{type: :integer, default: 0}, + "Return items past this number of items" + ), Operation.parameter( :limit, :query, diff --git a/lib/pleroma/web/api_spec/operations/account_operation.ex b/lib/pleroma/web/api_spec/operations/account_operation.ex index 20572f8ea..9bde8fc0d 100644 --- a/lib/pleroma/web/api_spec/operations/account_operation.ex +++ b/lib/pleroma/web/api_spec/operations/account_operation.ex @@ -102,6 +102,7 @@ def show_operation do parameters: [%Reference{"$ref": "#/components/parameters/accountIdOrNickname"}], responses: %{ 200 => Operation.response("Account", "application/json", Account), + 401 => Operation.response("Error", "application/json", ApiError), 404 => Operation.response("Error", "application/json", ApiError) } } @@ -142,6 +143,7 @@ def statuses_operation do ] ++ pagination_params(), responses: %{ 200 => Operation.response("Statuses", "application/json", array_of_statuses()), + 401 => Operation.response("Error", "application/json", ApiError), 404 => Operation.response("Error", "application/json", ApiError) } } diff --git a/lib/pleroma/web/api_spec/operations/admin/config_operation.ex b/lib/pleroma/web/api_spec/operations/admin/config_operation.ex new file mode 100644 index 000000000..7b38a2ef4 --- /dev/null +++ b/lib/pleroma/web/api_spec/operations/admin/config_operation.ex @@ -0,0 +1,142 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Admin.ConfigOperation do + alias OpenApiSpex.Operation + alias OpenApiSpex.Schema + alias Pleroma.Web.ApiSpec.Schemas.ApiError + + import Pleroma.Web.ApiSpec.Helpers + + def open_api_operation(action) do + operation = String.to_existing_atom("#{action}_operation") + apply(__MODULE__, operation, []) + end + + def show_operation do + %Operation{ + tags: ["Admin", "Config"], + summary: "Get list of merged default settings with saved in database", + operationId: "AdminAPI.ConfigController.show", + parameters: [ + Operation.parameter( + :only_db, + :query, + %Schema{type: :boolean, default: false}, + "Get only saved in database settings" + ) + ], + security: [%{"oAuth" => ["read"]}], + responses: %{ + 200 => Operation.response("Config", "application/json", config_response()), + 400 => Operation.response("Bad Request", "application/json", ApiError) + } + } + end + + def update_operation do + %Operation{ + tags: ["Admin", "Config"], + summary: "Update config settings", + operationId: "AdminAPI.ConfigController.update", + security: [%{"oAuth" => ["write"]}], + requestBody: + request_body("Parameters", %Schema{ + type: :object, + properties: %{ + configs: %Schema{ + type: :array, + items: %Schema{ + type: :object, + properties: %{ + group: %Schema{type: :string}, + key: %Schema{type: :string}, + value: any(), + delete: %Schema{type: :boolean}, + subkeys: %Schema{type: :array, items: %Schema{type: :string}} + } + } + } + } + }), + responses: %{ + 200 => Operation.response("Config", "application/json", config_response()), + 400 => Operation.response("Bad Request", "application/json", ApiError) + } + } + end + + def descriptions_operation do + %Operation{ + tags: ["Admin", "Config"], + summary: "Get JSON with config descriptions.", + operationId: "AdminAPI.ConfigController.descriptions", + security: [%{"oAuth" => ["read"]}], + responses: %{ + 200 => + Operation.response("Config Descriptions", "application/json", %Schema{ + type: :array, + items: %Schema{ + type: :object, + properties: %{ + group: %Schema{type: :string}, + key: %Schema{type: :string}, + type: %Schema{oneOf: [%Schema{type: :string}, %Schema{type: :array}]}, + description: %Schema{type: :string}, + children: %Schema{ + type: :array, + items: %Schema{ + type: :object, + properties: %{ + key: %Schema{type: :string}, + type: %Schema{oneOf: [%Schema{type: :string}, %Schema{type: :array}]}, + description: %Schema{type: :string}, + suggestions: %Schema{type: :array} + } + } + } + } + } + }), + 400 => Operation.response("Bad Request", "application/json", ApiError) + } + } + end + + defp any do + %Schema{ + oneOf: [ + %Schema{type: :array}, + %Schema{type: :object}, + %Schema{type: :string}, + %Schema{type: :integer}, + %Schema{type: :boolean} + ] + } + end + + defp config_response do + %Schema{ + type: :object, + properties: %{ + configs: %Schema{ + type: :array, + items: %Schema{ + type: :object, + properties: %{ + group: %Schema{type: :string}, + key: %Schema{type: :string}, + value: any() + } + } + }, + need_reboot: %Schema{ + type: :boolean, + description: + "If `need_reboot` is `true`, instance must be restarted, so reboot time settings can take effect" + } + } + } + end +end diff --git a/lib/pleroma/web/api_spec/operations/admin/invite_operation.ex b/lib/pleroma/web/api_spec/operations/admin/invite_operation.ex new file mode 100644 index 000000000..d3af9db49 --- /dev/null +++ b/lib/pleroma/web/api_spec/operations/admin/invite_operation.ex @@ -0,0 +1,148 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Admin.InviteOperation do + alias OpenApiSpex.Operation + alias OpenApiSpex.Schema + alias Pleroma.Web.ApiSpec.Schemas.ApiError + + import Pleroma.Web.ApiSpec.Helpers + + def open_api_operation(action) do + operation = String.to_existing_atom("#{action}_operation") + apply(__MODULE__, operation, []) + end + + def index_operation do + %Operation{ + tags: ["Admin", "Invites"], + summary: "Get a list of generated invites", + operationId: "AdminAPI.InviteController.index", + security: [%{"oAuth" => ["read:invites"]}], + responses: %{ + 200 => + Operation.response("Invites", "application/json", %Schema{ + type: :object, + properties: %{ + invites: %Schema{type: :array, items: invite()} + }, + example: %{ + "invites" => [ + %{ + "id" => 123, + "token" => "kSQtDj_GNy2NZsL9AQDFIsHN5qdbguB6qRg3WHw6K1U=", + "used" => true, + "expires_at" => nil, + "uses" => 0, + "max_use" => nil, + "invite_type" => "one_time" + } + ] + } + }) + } + } + end + + def create_operation do + %Operation{ + tags: ["Admin", "Invites"], + summary: "Create an account registration invite token", + operationId: "AdminAPI.InviteController.create", + security: [%{"oAuth" => ["write:invites"]}], + requestBody: + request_body("Parameters", %Schema{ + type: :object, + properties: %{ + max_use: %Schema{type: :integer}, + expires_at: %Schema{type: :string, format: :date, example: "2020-04-20"} + } + }), + responses: %{ + 200 => Operation.response("Invite", "application/json", invite()) + } + } + end + + def revoke_operation do + %Operation{ + tags: ["Admin", "Invites"], + summary: "Revoke invite by token", + operationId: "AdminAPI.InviteController.revoke", + security: [%{"oAuth" => ["write:invites"]}], + requestBody: + request_body( + "Parameters", + %Schema{ + type: :object, + required: [:token], + properties: %{ + token: %Schema{type: :string} + } + }, + required: true + ), + responses: %{ + 200 => Operation.response("Invite", "application/json", invite()), + 400 => Operation.response("Bad Request", "application/json", ApiError), + 404 => Operation.response("Not Found", "application/json", ApiError) + } + } + end + + def email_operation do + %Operation{ + tags: ["Admin", "Invites"], + summary: "Sends registration invite via email", + operationId: "AdminAPI.InviteController.email", + security: [%{"oAuth" => ["write:invites"]}], + requestBody: + request_body( + "Parameters", + %Schema{ + type: :object, + required: [:email], + properties: %{ + email: %Schema{type: :string, format: :email}, + name: %Schema{type: :string} + } + }, + required: true + ), + responses: %{ + 204 => no_content_response(), + 400 => Operation.response("Bad Request", "application/json", ApiError), + 403 => Operation.response("Forbidden", "application/json", ApiError) + } + } + end + + defp invite do + %Schema{ + title: "Invite", + type: :object, + properties: %{ + id: %Schema{type: :integer}, + token: %Schema{type: :string}, + used: %Schema{type: :boolean}, + expires_at: %Schema{type: :string, format: :date, nullable: true}, + uses: %Schema{type: :integer}, + max_use: %Schema{type: :integer, nullable: true}, + invite_type: %Schema{ + type: :string, + enum: ["one_time", "reusable", "date_limited", "reusable_date_limited"] + } + }, + example: %{ + "id" => 123, + "token" => "kSQtDj_GNy2NZsL9AQDFIsHN5qdbguB6qRg3WHw6K1U=", + "used" => true, + "expires_at" => nil, + "uses" => 0, + "max_use" => nil, + "invite_type" => "one_time" + } + } + end +end diff --git a/lib/pleroma/web/api_spec/operations/admin/media_proxy_cache_operation.ex b/lib/pleroma/web/api_spec/operations/admin/media_proxy_cache_operation.ex new file mode 100644 index 000000000..0358cfbad --- /dev/null +++ b/lib/pleroma/web/api_spec/operations/admin/media_proxy_cache_operation.ex @@ -0,0 +1,109 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Admin.MediaProxyCacheOperation do + alias OpenApiSpex.Operation + alias OpenApiSpex.Schema + alias Pleroma.Web.ApiSpec.Schemas.ApiError + + import Pleroma.Web.ApiSpec.Helpers + + def open_api_operation(action) do + operation = String.to_existing_atom("#{action}_operation") + apply(__MODULE__, operation, []) + end + + def index_operation do + %Operation{ + tags: ["Admin", "MediaProxyCache"], + summary: "Fetch a paginated list of all banned MediaProxy URLs in Cachex", + operationId: "AdminAPI.MediaProxyCacheController.index", + security: [%{"oAuth" => ["read:media_proxy_caches"]}], + parameters: [ + Operation.parameter( + :page, + :query, + %Schema{type: :integer, default: 1}, + "Page" + ), + Operation.parameter( + :page_size, + :query, + %Schema{type: :integer, default: 50}, + "Number of statuses to return" + ) + ], + responses: %{ + 200 => success_response() + } + } + end + + def delete_operation do + %Operation{ + tags: ["Admin", "MediaProxyCache"], + summary: "Remove a banned MediaProxy URL from Cachex", + operationId: "AdminAPI.MediaProxyCacheController.delete", + security: [%{"oAuth" => ["write:media_proxy_caches"]}], + requestBody: + request_body( + "Parameters", + %Schema{ + type: :object, + required: [:urls], + properties: %{ + urls: %Schema{type: :array, items: %Schema{type: :string, format: :uri}} + } + }, + required: true + ), + responses: %{ + 200 => success_response(), + 400 => Operation.response("Error", "application/json", ApiError) + } + } + end + + def purge_operation do + %Operation{ + tags: ["Admin", "MediaProxyCache"], + summary: "Purge and optionally ban a MediaProxy URL", + operationId: "AdminAPI.MediaProxyCacheController.purge", + security: [%{"oAuth" => ["write:media_proxy_caches"]}], + requestBody: + request_body( + "Parameters", + %Schema{ + type: :object, + required: [:urls], + properties: %{ + urls: %Schema{type: :array, items: %Schema{type: :string, format: :uri}}, + ban: %Schema{type: :boolean, default: true} + } + }, + required: true + ), + responses: %{ + 200 => success_response(), + 400 => Operation.response("Error", "application/json", ApiError) + } + } + end + + defp success_response do + Operation.response("Array of banned MediaProxy URLs in Cachex", "application/json", %Schema{ + type: :object, + properties: %{ + urls: %Schema{ + type: :array, + items: %Schema{ + type: :string, + format: :uri, + description: "MediaProxy URLs" + } + } + } + }) + end +end diff --git a/lib/pleroma/web/api_spec/operations/admin/oauth_app_operation.ex b/lib/pleroma/web/api_spec/operations/admin/oauth_app_operation.ex new file mode 100644 index 000000000..fbc9f80d7 --- /dev/null +++ b/lib/pleroma/web/api_spec/operations/admin/oauth_app_operation.ex @@ -0,0 +1,215 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Admin.OAuthAppOperation do + alias OpenApiSpex.Operation + alias OpenApiSpex.Schema + alias Pleroma.Web.ApiSpec.Schemas.ApiError + + import Pleroma.Web.ApiSpec.Helpers + + def open_api_operation(action) do + operation = String.to_existing_atom("#{action}_operation") + apply(__MODULE__, operation, []) + end + + def index_operation do + %Operation{ + summary: "List OAuth apps", + tags: ["Admin", "oAuth Apps"], + operationId: "AdminAPI.OAuthAppController.index", + security: [%{"oAuth" => ["write"]}], + parameters: [ + Operation.parameter(:name, :query, %Schema{type: :string}, "App name"), + Operation.parameter(:client_id, :query, %Schema{type: :string}, "Client ID"), + Operation.parameter(:page, :query, %Schema{type: :integer, default: 1}, "Page"), + Operation.parameter( + :trusted, + :query, + %Schema{type: :boolean, default: false}, + "Trusted apps" + ), + Operation.parameter( + :page_size, + :query, + %Schema{type: :integer, default: 50}, + "Number of apps to return" + ) + ], + responses: %{ + 200 => + Operation.response("List of apps", "application/json", %Schema{ + type: :object, + properties: %{ + apps: %Schema{type: :array, items: oauth_app()}, + count: %Schema{type: :integer}, + page_size: %Schema{type: :integer} + }, + example: %{ + "apps" => [ + %{ + "id" => 1, + "name" => "App name", + "client_id" => "yHoDSiWYp5mPV6AfsaVOWjdOyt5PhWRiafi6MRd1lSk", + "client_secret" => "nLmis486Vqrv2o65eM9mLQx_m_4gH-Q6PcDpGIMl6FY", + "redirect_uri" => "https://example.com/oauth-callback", + "website" => "https://example.com", + "trusted" => true + } + ], + "count" => 1, + "page_size" => 50 + } + }) + } + } + end + + def create_operation do + %Operation{ + tags: ["Admin", "oAuth Apps"], + summary: "Create OAuth App", + operationId: "AdminAPI.OAuthAppController.create", + requestBody: request_body("Parameters", create_request()), + security: [%{"oAuth" => ["write"]}], + responses: %{ + 200 => Operation.response("App", "application/json", oauth_app()), + 400 => Operation.response("Bad Request", "application/json", ApiError) + } + } + end + + def update_operation do + %Operation{ + tags: ["Admin", "oAuth Apps"], + summary: "Update OAuth App", + operationId: "AdminAPI.OAuthAppController.update", + parameters: [id_param()], + security: [%{"oAuth" => ["write"]}], + requestBody: request_body("Parameters", update_request()), + responses: %{ + 200 => Operation.response("App", "application/json", oauth_app()), + 400 => + Operation.response("Bad Request", "application/json", %Schema{ + oneOf: [ApiError, %Schema{type: :string}] + }) + } + } + end + + def delete_operation do + %Operation{ + tags: ["Admin", "oAuth Apps"], + summary: "Delete OAuth App", + operationId: "AdminAPI.OAuthAppController.delete", + parameters: [id_param()], + security: [%{"oAuth" => ["write"]}], + responses: %{ + 204 => no_content_response(), + 400 => no_content_response() + } + } + end + + defp create_request do + %Schema{ + title: "oAuthAppCreateRequest", + type: :object, + required: [:name, :redirect_uris], + properties: %{ + name: %Schema{type: :string, description: "Application Name"}, + scopes: %Schema{type: :array, items: %Schema{type: :string}, description: "oAuth scopes"}, + redirect_uris: %Schema{ + type: :string, + description: + "Where the user should be redirected after authorization. To display the authorization code to the user instead of redirecting to a web page, use `urn:ietf:wg:oauth:2.0:oob` in this parameter." + }, + website: %Schema{ + type: :string, + nullable: true, + description: "A URL to the homepage of the app" + }, + trusted: %Schema{ + type: :boolean, + nullable: true, + default: false, + description: "Is the app trusted?" + } + }, + example: %{ + "name" => "My App", + "redirect_uris" => "https://myapp.com/auth/callback", + "website" => "https://myapp.com/", + "scopes" => ["read", "write"], + "trusted" => true + } + } + end + + defp update_request do + %Schema{ + title: "oAuthAppUpdateRequest", + type: :object, + properties: %{ + name: %Schema{type: :string, description: "Application Name"}, + scopes: %Schema{type: :array, items: %Schema{type: :string}, description: "oAuth scopes"}, + redirect_uris: %Schema{ + type: :string, + description: + "Where the user should be redirected after authorization. To display the authorization code to the user instead of redirecting to a web page, use `urn:ietf:wg:oauth:2.0:oob` in this parameter." + }, + website: %Schema{ + type: :string, + nullable: true, + description: "A URL to the homepage of the app" + }, + trusted: %Schema{ + type: :boolean, + nullable: true, + default: false, + description: "Is the app trusted?" + } + }, + example: %{ + "name" => "My App", + "redirect_uris" => "https://myapp.com/auth/callback", + "website" => "https://myapp.com/", + "scopes" => ["read", "write"], + "trusted" => true + } + } + end + + defp oauth_app do + %Schema{ + title: "oAuthApp", + type: :object, + properties: %{ + id: %Schema{type: :integer}, + name: %Schema{type: :string}, + client_id: %Schema{type: :string}, + client_secret: %Schema{type: :string}, + redirect_uri: %Schema{type: :string}, + website: %Schema{type: :string, nullable: true}, + trusted: %Schema{type: :boolean} + }, + example: %{ + "id" => 123, + "name" => "My App", + "client_id" => "TWhM-tNSuncnqN7DBJmoyeLnk6K3iJJ71KKXxgL1hPM", + "client_secret" => "ZEaFUFmF0umgBX1qKJDjaU99Q31lDkOU8NutzTOoliw", + "redirect_uri" => "https://myapp.com/oauth-callback", + "website" => "https://myapp.com/", + "trusted" => false + } + } + end + + def id_param do + Operation.parameter(:id, :path, :integer, "App ID", + example: 1337, + required: true + ) + end +end diff --git a/lib/pleroma/web/api_spec/operations/admin/relay_operation.ex b/lib/pleroma/web/api_spec/operations/admin/relay_operation.ex new file mode 100644 index 000000000..7672cb467 --- /dev/null +++ b/lib/pleroma/web/api_spec/operations/admin/relay_operation.ex @@ -0,0 +1,83 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Admin.RelayOperation do + alias OpenApiSpex.Operation + alias OpenApiSpex.Schema + + import Pleroma.Web.ApiSpec.Helpers + + def open_api_operation(action) do + operation = String.to_existing_atom("#{action}_operation") + apply(__MODULE__, operation, []) + end + + def index_operation do + %Operation{ + tags: ["Admin", "Relays"], + summary: "List Relays", + operationId: "AdminAPI.RelayController.index", + security: [%{"oAuth" => ["read"]}], + responses: %{ + 200 => + Operation.response("Response", "application/json", %Schema{ + type: :object, + properties: %{ + relays: %Schema{ + type: :array, + items: %Schema{type: :string}, + example: ["lain.com", "mstdn.io"] + } + } + }) + } + } + end + + def follow_operation do + %Operation{ + tags: ["Admin", "Relays"], + summary: "Follow a Relay", + operationId: "AdminAPI.RelayController.follow", + security: [%{"oAuth" => ["write:follows"]}], + requestBody: + request_body("Parameters", %Schema{ + type: :object, + properties: %{ + relay_url: %Schema{type: :string, format: :uri} + } + }), + responses: %{ + 200 => + Operation.response("Status", "application/json", %Schema{ + type: :string, + example: "http://mastodon.example.org/users/admin" + }) + } + } + end + + def unfollow_operation do + %Operation{ + tags: ["Admin", "Relays"], + summary: "Unfollow a Relay", + operationId: "AdminAPI.RelayController.unfollow", + security: [%{"oAuth" => ["write:follows"]}], + requestBody: + request_body("Parameters", %Schema{ + type: :object, + properties: %{ + relay_url: %Schema{type: :string, format: :uri} + } + }), + responses: %{ + 200 => + Operation.response("Status", "application/json", %Schema{ + type: :string, + example: "http://mastodon.example.org/users/admin" + }) + } + } + end +end diff --git a/lib/pleroma/web/api_spec/operations/admin/report_operation.ex b/lib/pleroma/web/api_spec/operations/admin/report_operation.ex new file mode 100644 index 000000000..15e78bfaf --- /dev/null +++ b/lib/pleroma/web/api_spec/operations/admin/report_operation.ex @@ -0,0 +1,237 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Admin.ReportOperation do + alias OpenApiSpex.Operation + alias OpenApiSpex.Schema + alias Pleroma.Web.ApiSpec.Schemas.Account + alias Pleroma.Web.ApiSpec.Schemas.ApiError + alias Pleroma.Web.ApiSpec.Schemas.FlakeID + alias Pleroma.Web.ApiSpec.Schemas.Status + + import Pleroma.Web.ApiSpec.Helpers + + def open_api_operation(action) do + operation = String.to_existing_atom("#{action}_operation") + apply(__MODULE__, operation, []) + end + + def index_operation do + %Operation{ + tags: ["Admin", "Reports"], + summary: "Get a list of reports", + operationId: "AdminAPI.ReportController.index", + security: [%{"oAuth" => ["read:reports"]}], + parameters: [ + Operation.parameter( + :state, + :query, + report_state(), + "Filter by report state" + ), + Operation.parameter( + :limit, + :query, + %Schema{type: :integer}, + "The number of records to retrieve" + ), + Operation.parameter( + :page, + :query, + %Schema{type: :integer, default: 1}, + "Page number" + ), + Operation.parameter( + :page_size, + :query, + %Schema{type: :integer, default: 50}, + "Number number of log entries per page" + ) + ], + responses: %{ + 200 => + Operation.response("Response", "application/json", %Schema{ + type: :object, + properties: %{ + total: %Schema{type: :integer}, + reports: %Schema{ + type: :array, + items: report() + } + } + }), + 403 => Operation.response("Forbidden", "application/json", ApiError) + } + } + end + + def show_operation do + %Operation{ + tags: ["Admin", "Reports"], + summary: "Get an individual report", + operationId: "AdminAPI.ReportController.show", + parameters: [id_param()], + security: [%{"oAuth" => ["read:reports"]}], + responses: %{ + 200 => Operation.response("Report", "application/json", report()), + 404 => Operation.response("Not Found", "application/json", ApiError) + } + } + end + + def update_operation do + %Operation{ + tags: ["Admin", "Reports"], + summary: "Change the state of one or multiple reports", + operationId: "AdminAPI.ReportController.update", + security: [%{"oAuth" => ["write:reports"]}], + requestBody: request_body("Parameters", update_request(), required: true), + responses: %{ + 204 => no_content_response(), + 400 => Operation.response("Bad Request", "application/json", update_400_response()), + 403 => Operation.response("Forbidden", "application/json", ApiError) + } + } + end + + def notes_create_operation do + %Operation{ + tags: ["Admin", "Reports"], + summary: "Create report note", + operationId: "AdminAPI.ReportController.notes_create", + parameters: [id_param()], + requestBody: + request_body("Parameters", %Schema{ + type: :object, + properties: %{ + content: %Schema{type: :string, description: "The message"} + } + }), + security: [%{"oAuth" => ["write:reports"]}], + responses: %{ + 204 => no_content_response(), + 404 => Operation.response("Not Found", "application/json", ApiError) + } + } + end + + def notes_delete_operation do + %Operation{ + tags: ["Admin", "Reports"], + summary: "Delete report note", + operationId: "AdminAPI.ReportController.notes_delete", + parameters: [ + Operation.parameter(:report_id, :path, :string, "Report ID"), + Operation.parameter(:id, :path, :string, "Note ID") + ], + security: [%{"oAuth" => ["write:reports"]}], + responses: %{ + 204 => no_content_response(), + 404 => Operation.response("Not Found", "application/json", ApiError) + } + } + end + + defp report_state do + %Schema{type: :string, enum: ["open", "closed", "resolved"]} + end + + defp id_param do + Operation.parameter(:id, :path, FlakeID, "Report ID", + example: "9umDrYheeY451cQnEe", + required: true + ) + end + + defp report do + %Schema{ + type: :object, + properties: %{ + id: FlakeID, + state: report_state(), + account: account_admin(), + actor: account_admin(), + content: %Schema{type: :string}, + created_at: %Schema{type: :string, format: :"date-time"}, + statuses: %Schema{type: :array, items: Status}, + notes: %Schema{ + type: :array, + items: %Schema{ + type: :object, + properties: %{ + id: %Schema{type: :integer}, + user_id: FlakeID, + content: %Schema{type: :string}, + inserted_at: %Schema{type: :string, format: :"date-time"} + } + } + } + } + } + end + + defp account_admin do + %Schema{ + title: "Account", + description: "Account view for admins", + type: :object, + properties: + Map.merge(Account.schema().properties, %{ + nickname: %Schema{type: :string}, + deactivated: %Schema{type: :boolean}, + local: %Schema{type: :boolean}, + roles: %Schema{ + type: :object, + properties: %{ + admin: %Schema{type: :boolean}, + moderator: %Schema{type: :boolean} + } + }, + confirmation_pending: %Schema{type: :boolean} + }) + } + end + + defp update_request do + %Schema{ + type: :object, + required: [:reports], + properties: %{ + reports: %Schema{ + type: :array, + items: %Schema{ + type: :object, + properties: %{ + id: %Schema{allOf: [FlakeID], description: "Required, report ID"}, + state: %Schema{ + type: :string, + description: + "Required, the new state. Valid values are `open`, `closed` and `resolved`" + } + } + }, + example: %{ + "reports" => [ + %{"id" => "123", "state" => "closed"}, + %{"id" => "1337", "state" => "resolved"} + ] + } + } + } + } + end + + defp update_400_response do + %Schema{ + type: :array, + items: %Schema{ + type: :object, + properties: %{ + id: %Schema{allOf: [FlakeID], description: "Report ID"}, + error: %Schema{type: :string, description: "Error message"} + } + } + } + end +end diff --git a/lib/pleroma/web/api_spec/operations/admin/status_operation.ex b/lib/pleroma/web/api_spec/operations/admin/status_operation.ex index 0b138dc79..745399b4b 100644 --- a/lib/pleroma/web/api_spec/operations/admin/status_operation.ex +++ b/lib/pleroma/web/api_spec/operations/admin/status_operation.ex @@ -74,7 +74,7 @@ def show_operation do parameters: [id_param()], security: [%{"oAuth" => ["read:statuses"]}], responses: %{ - 200 => Operation.response("Status", "application/json", Status), + 200 => Operation.response("Status", "application/json", status()), 404 => Operation.response("Not Found", "application/json", ApiError) } } @@ -123,7 +123,7 @@ defp status do } end - defp admin_account do + def admin_account do %Schema{ type: :object, properties: %{ diff --git a/lib/pleroma/web/api_spec/operations/chat_operation.ex b/lib/pleroma/web/api_spec/operations/chat_operation.ex new file mode 100644 index 000000000..cf299bfc2 --- /dev/null +++ b/lib/pleroma/web/api_spec/operations/chat_operation.ex @@ -0,0 +1,355 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.ChatOperation do + alias OpenApiSpex.Operation + alias OpenApiSpex.Schema + alias Pleroma.Web.ApiSpec.Schemas.ApiError + alias Pleroma.Web.ApiSpec.Schemas.Chat + alias Pleroma.Web.ApiSpec.Schemas.ChatMessage + + import Pleroma.Web.ApiSpec.Helpers + + @spec open_api_operation(atom) :: Operation.t() + def open_api_operation(action) do + operation = String.to_existing_atom("#{action}_operation") + apply(__MODULE__, operation, []) + end + + def mark_as_read_operation do + %Operation{ + tags: ["chat"], + summary: "Mark all messages in the chat as read", + operationId: "ChatController.mark_as_read", + parameters: [Operation.parameter(:id, :path, :string, "The ID of the Chat")], + requestBody: request_body("Parameters", mark_as_read()), + responses: %{ + 200 => + Operation.response( + "The updated chat", + "application/json", + Chat + ) + }, + security: [ + %{ + "oAuth" => ["write:chats"] + } + ] + } + end + + def mark_message_as_read_operation do + %Operation{ + tags: ["chat"], + summary: "Mark one message in the chat as read", + operationId: "ChatController.mark_message_as_read", + parameters: [ + Operation.parameter(:id, :path, :string, "The ID of the Chat"), + Operation.parameter(:message_id, :path, :string, "The ID of the message") + ], + responses: %{ + 200 => + Operation.response( + "The read ChatMessage", + "application/json", + ChatMessage + ) + }, + security: [ + %{ + "oAuth" => ["write:chats"] + } + ] + } + end + + def show_operation do + %Operation{ + tags: ["chat"], + summary: "Create a chat", + operationId: "ChatController.show", + parameters: [ + Operation.parameter( + :id, + :path, + :string, + "The id of the chat", + required: true, + example: "1234" + ) + ], + responses: %{ + 200 => + Operation.response( + "The existing chat", + "application/json", + Chat + ) + }, + security: [ + %{ + "oAuth" => ["read"] + } + ] + } + end + + def create_operation do + %Operation{ + tags: ["chat"], + summary: "Create a chat", + operationId: "ChatController.create", + parameters: [ + Operation.parameter( + :id, + :path, + :string, + "The account id of the recipient of this chat", + required: true, + example: "someflakeid" + ) + ], + responses: %{ + 200 => + Operation.response( + "The created or existing chat", + "application/json", + Chat + ) + }, + security: [ + %{ + "oAuth" => ["write:chats"] + } + ] + } + end + + def index_operation do + %Operation{ + tags: ["chat"], + summary: "Get a list of chats that you participated in", + operationId: "ChatController.index", + parameters: pagination_params(), + responses: %{ + 200 => Operation.response("The chats of the user", "application/json", chats_response()) + }, + security: [ + %{ + "oAuth" => ["read:chats"] + } + ] + } + end + + def messages_operation do + %Operation{ + tags: ["chat"], + summary: "Get the most recent messages of the chat", + operationId: "ChatController.messages", + parameters: + [Operation.parameter(:id, :path, :string, "The ID of the Chat")] ++ + pagination_params(), + responses: %{ + 200 => + Operation.response( + "The messages in the chat", + "application/json", + chat_messages_response() + ) + }, + security: [ + %{ + "oAuth" => ["read:chats"] + } + ] + } + end + + def post_chat_message_operation do + %Operation{ + tags: ["chat"], + summary: "Post a message to the chat", + operationId: "ChatController.post_chat_message", + parameters: [ + Operation.parameter(:id, :path, :string, "The ID of the Chat") + ], + requestBody: request_body("Parameters", chat_message_create()), + responses: %{ + 200 => + Operation.response( + "The newly created ChatMessage", + "application/json", + ChatMessage + ), + 400 => Operation.response("Bad Request", "application/json", ApiError) + }, + security: [ + %{ + "oAuth" => ["write:chats"] + } + ] + } + end + + def delete_message_operation do + %Operation{ + tags: ["chat"], + summary: "delete_message", + operationId: "ChatController.delete_message", + parameters: [ + Operation.parameter(:id, :path, :string, "The ID of the Chat"), + Operation.parameter(:message_id, :path, :string, "The ID of the message") + ], + responses: %{ + 200 => + Operation.response( + "The deleted ChatMessage", + "application/json", + ChatMessage + ) + }, + security: [ + %{ + "oAuth" => ["write:chats"] + } + ] + } + end + + def chats_response do + %Schema{ + title: "ChatsResponse", + description: "Response schema for multiple Chats", + type: :array, + items: Chat, + example: [ + %{ + "account" => %{ + "pleroma" => %{ + "is_admin" => false, + "confirmation_pending" => false, + "hide_followers_count" => false, + "is_moderator" => false, + "hide_favorites" => true, + "ap_id" => "https://dontbulling.me/users/lain", + "hide_follows_count" => false, + "hide_follows" => false, + "background_image" => nil, + "skip_thread_containment" => false, + "hide_followers" => false, + "relationship" => %{}, + "tags" => [] + }, + "avatar" => + "https://dontbulling.me/media/065a4dd3c6740dab13ff9c71ec7d240bb9f8be9205c9e7467fb2202117da1e32.jpg", + "following_count" => 0, + "header_static" => "https://originalpatchou.li/images/banner.png", + "source" => %{ + "sensitive" => false, + "note" => "lain", + "pleroma" => %{ + "discoverable" => false, + "actor_type" => "Person" + }, + "fields" => [] + }, + "statuses_count" => 1, + "locked" => false, + "created_at" => "2020-04-16T13:40:15.000Z", + "display_name" => "lain", + "fields" => [], + "acct" => "lain@dontbulling.me", + "id" => "9u6Qw6TAZANpqokMkK", + "emojis" => [], + "avatar_static" => + "https://dontbulling.me/media/065a4dd3c6740dab13ff9c71ec7d240bb9f8be9205c9e7467fb2202117da1e32.jpg", + "username" => "lain", + "followers_count" => 0, + "header" => "https://originalpatchou.li/images/banner.png", + "bot" => false, + "note" => "lain", + "url" => "https://dontbulling.me/users/lain" + }, + "id" => "1", + "unread" => 2 + } + ] + } + end + + def chat_messages_response do + %Schema{ + title: "ChatMessagesResponse", + description: "Response schema for multiple ChatMessages", + type: :array, + items: ChatMessage, + example: [ + %{ + "emojis" => [ + %{ + "static_url" => "https://dontbulling.me/emoji/Firefox.gif", + "visible_in_picker" => false, + "shortcode" => "firefox", + "url" => "https://dontbulling.me/emoji/Firefox.gif" + } + ], + "created_at" => "2020-04-21T15:11:46.000Z", + "content" => "Check this out :firefox:", + "id" => "13", + "chat_id" => "1", + "actor_id" => "someflakeid", + "unread" => false + }, + %{ + "actor_id" => "someflakeid", + "content" => "Whats' up?", + "id" => "12", + "chat_id" => "1", + "emojis" => [], + "created_at" => "2020-04-21T15:06:45.000Z", + "unread" => false + } + ] + } + end + + def chat_message_create do + %Schema{ + title: "ChatMessageCreateRequest", + description: "POST body for creating an chat message", + type: :object, + properties: %{ + content: %Schema{ + type: :string, + description: "The content of your message. Optional if media_id is present" + }, + media_id: %Schema{type: :string, description: "The id of an upload"} + }, + example: %{ + "content" => "Hey wanna buy feet pics?", + "media_id" => "134234" + } + } + end + + def mark_as_read do + %Schema{ + title: "MarkAsReadRequest", + description: "POST body for marking a number of chat messages as read", + type: :object, + required: [:last_read_id], + properties: %{ + last_read_id: %Schema{ + type: :string, + description: "The content of your message." + } + }, + example: %{ + "last_read_id" => "abcdef12456" + } + } + end +end diff --git a/lib/pleroma/web/api_spec/operations/instance_operation.ex b/lib/pleroma/web/api_spec/operations/instance_operation.ex index d5c335d0c..bf39ae643 100644 --- a/lib/pleroma/web/api_spec/operations/instance_operation.ex +++ b/lib/pleroma/web/api_spec/operations/instance_operation.ex @@ -137,7 +137,7 @@ defp instance do "background_upload_limit" => 4_000_000, "background_image" => "/static/image.png", "banner_upload_limit" => 4_000_000, - "description" => "A Pleroma instance, an alternative fediverse server", + "description" => "Pleroma: An efficient and flexible fediverse server", "email" => "lain@lain.com", "languages" => ["en"], "max_toot_chars" => 5000, diff --git a/lib/pleroma/web/api_spec/operations/notification_operation.ex b/lib/pleroma/web/api_spec/operations/notification_operation.ex index 46e72f8bf..f09be64cb 100644 --- a/lib/pleroma/web/api_spec/operations/notification_operation.ex +++ b/lib/pleroma/web/api_spec/operations/notification_operation.ex @@ -163,6 +163,13 @@ def notification do description: "Status that was the object of the notification, e.g. in mentions, reblogs, favourites, or polls.", nullable: true + }, + pleroma: %Schema{ + type: :object, + properties: %{ + is_seen: %Schema{type: :boolean}, + is_muted: %Schema{type: :boolean} + } } }, example: %{ @@ -170,7 +177,8 @@ def notification do "type" => "mention", "created_at" => "2019-11-23T07:49:02.064Z", "account" => Account.schema().example, - "status" => Status.schema().example + "status" => Status.schema().example, + "pleroma" => %{"is_seen" => false, "is_muted" => false} } } end @@ -183,8 +191,8 @@ defp notification_type do "favourite", "reblog", "mention", - "poll", "pleroma:emoji_reaction", + "pleroma:chat_mention", "move", "follow_request" ], diff --git a/lib/pleroma/web/api_spec/operations/pleroma_emoji_pack_operation.ex b/lib/pleroma/web/api_spec/operations/pleroma_emoji_pack_operation.ex index 567688ff5..b2b4f8713 100644 --- a/lib/pleroma/web/api_spec/operations/pleroma_emoji_pack_operation.ex +++ b/lib/pleroma/web/api_spec/operations/pleroma_emoji_pack_operation.ex @@ -33,6 +33,20 @@ def index_operation do tags: ["Emoji Packs"], summary: "Lists local custom emoji packs", operationId: "PleromaAPI.EmojiPackController.index", + parameters: [ + Operation.parameter( + :page, + :query, + %Schema{type: :integer, default: 1}, + "Page" + ), + Operation.parameter( + :page_size, + :query, + %Schema{type: :integer, default: 50}, + "Number of emoji packs to return" + ) + ], responses: %{ 200 => emoji_packs_response() } @@ -44,7 +58,21 @@ def show_operation do tags: ["Emoji Packs"], summary: "Show emoji pack", operationId: "PleromaAPI.EmojiPackController.show", - parameters: [name_param()], + parameters: [ + name_param(), + Operation.parameter( + :page, + :query, + %Schema{type: :integer, default: 1}, + "Page" + ), + Operation.parameter( + :page_size, + :query, + %Schema{type: :integer, default: 30}, + "Number of emoji to return" + ) + ], responses: %{ 200 => Operation.response("Emoji Pack", "application/json", emoji_pack()), 400 => Operation.response("Bad Request", "application/json", ApiError), diff --git a/lib/pleroma/web/api_spec/operations/status_operation.ex b/lib/pleroma/web/api_spec/operations/status_operation.ex index ca9db01e5..0b7fad793 100644 --- a/lib/pleroma/web/api_spec/operations/status_operation.ex +++ b/lib/pleroma/web/api_spec/operations/status_operation.ex @@ -333,7 +333,8 @@ def favourites_operation do %Operation{ tags: ["Statuses"], summary: "Favourited statuses", - description: "Statuses the user has favourited", + description: + "Statuses the user has favourited. Please note that you have to use the link headers to paginate this. You can not build the query parameters yourself.", operationId: "StatusController.favourites", parameters: pagination_params(), security: [%{"oAuth" => ["read:favourites"]}], diff --git a/lib/pleroma/web/api_spec/operations/subscription_operation.ex b/lib/pleroma/web/api_spec/operations/subscription_operation.ex index c575a87e6..775dd795d 100644 --- a/lib/pleroma/web/api_spec/operations/subscription_operation.ex +++ b/lib/pleroma/web/api_spec/operations/subscription_operation.ex @@ -141,6 +141,11 @@ defp create_request do allOf: [BooleanLike], nullable: true, description: "Receive poll notifications?" + }, + "pleroma:chat_mention": %Schema{ + allOf: [BooleanLike], + nullable: true, + description: "Receive chat notifications?" } } } diff --git a/lib/pleroma/web/api_spec/schemas/account.ex b/lib/pleroma/web/api_spec/schemas/account.ex index d54e2158d..84f18f1b6 100644 --- a/lib/pleroma/web/api_spec/schemas/account.ex +++ b/lib/pleroma/web/api_spec/schemas/account.ex @@ -40,20 +40,53 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Account do pleroma: %Schema{ type: :object, properties: %{ - allow_following_move: %Schema{type: :boolean}, - background_image: %Schema{type: :string, nullable: true}, + allow_following_move: %Schema{ + type: :boolean, + description: "whether the user allows automatically follow moved following accounts" + }, + background_image: %Schema{type: :string, nullable: true, format: :uri}, chat_token: %Schema{type: :string}, - confirmation_pending: %Schema{type: :boolean}, + confirmation_pending: %Schema{ + type: :boolean, + description: + "whether the user account is waiting on email confirmation to be activated" + }, hide_favorites: %Schema{type: :boolean}, - hide_followers_count: %Schema{type: :boolean}, - hide_followers: %Schema{type: :boolean}, - hide_follows_count: %Schema{type: :boolean}, - hide_follows: %Schema{type: :boolean}, - is_admin: %Schema{type: :boolean}, - is_moderator: %Schema{type: :boolean}, + hide_followers_count: %Schema{ + type: :boolean, + description: "whether the user has follower stat hiding enabled" + }, + hide_followers: %Schema{ + type: :boolean, + description: "whether the user has follower hiding enabled" + }, + hide_follows_count: %Schema{ + type: :boolean, + description: "whether the user has follow stat hiding enabled" + }, + hide_follows: %Schema{ + type: :boolean, + description: "whether the user has follow hiding enabled" + }, + is_admin: %Schema{ + type: :boolean, + description: "whether the user is an admin of the local instance" + }, + is_moderator: %Schema{ + type: :boolean, + description: "whether the user is a moderator of the local instance" + }, skip_thread_containment: %Schema{type: :boolean}, - tags: %Schema{type: :array, items: %Schema{type: :string}}, - unread_conversation_count: %Schema{type: :integer}, + tags: %Schema{ + type: :array, + items: %Schema{type: :string}, + description: + "List of tags being used for things like extra roles or moderation(ie. marking all media as nsfw all)." + }, + unread_conversation_count: %Schema{ + type: :integer, + description: "The count of unread conversations. Only returned to the account owner." + }, notification_settings: %Schema{ type: :object, properties: %{ @@ -66,7 +99,9 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Account do }, relationship: AccountRelationship, settings_store: %Schema{ - type: :object + type: :object, + description: + "A generic map of settings for frontends. Opaque to the backend. Only returned in `verify_credentials` and `update_credentials`" } } }, @@ -74,16 +109,32 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Account do type: :object, properties: %{ fields: %Schema{type: :array, items: AccountField}, - note: %Schema{type: :string}, + note: %Schema{ + type: :string, + description: + "Plaintext version of the bio without formatting applied by the backend, used for editing the bio." + }, privacy: VisibilityScope, sensitive: %Schema{type: :boolean}, pleroma: %Schema{ type: :object, properties: %{ actor_type: ActorType, - discoverable: %Schema{type: :boolean}, - no_rich_text: %Schema{type: :boolean}, - show_role: %Schema{type: :boolean} + discoverable: %Schema{ + type: :boolean, + description: + "whether the user allows discovery of the account in search results and other services." + }, + no_rich_text: %Schema{ + type: :boolean, + description: + "whether the HTML tags for rich-text formatting are stripped from all statuses requested from the API." + }, + show_role: %Schema{ + type: :boolean, + description: + "whether the user wants their role (e.g admin, moderator) to be shown" + } } } } diff --git a/lib/pleroma/web/api_spec/schemas/chat.ex b/lib/pleroma/web/api_spec/schemas/chat.ex new file mode 100644 index 000000000..b4986b734 --- /dev/null +++ b/lib/pleroma/web/api_spec/schemas/chat.ex @@ -0,0 +1,75 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Schemas.Chat do + alias OpenApiSpex.Schema + alias Pleroma.Web.ApiSpec.Schemas.ChatMessage + + require OpenApiSpex + + OpenApiSpex.schema(%{ + title: "Chat", + description: "Response schema for a Chat", + type: :object, + properties: %{ + id: %Schema{type: :string}, + account: %Schema{type: :object}, + unread: %Schema{type: :integer}, + last_message: ChatMessage, + updated_at: %Schema{type: :string, format: :"date-time"} + }, + example: %{ + "account" => %{ + "pleroma" => %{ + "is_admin" => false, + "confirmation_pending" => false, + "hide_followers_count" => false, + "is_moderator" => false, + "hide_favorites" => true, + "ap_id" => "https://dontbulling.me/users/lain", + "hide_follows_count" => false, + "hide_follows" => false, + "background_image" => nil, + "skip_thread_containment" => false, + "hide_followers" => false, + "relationship" => %{}, + "tags" => [] + }, + "avatar" => + "https://dontbulling.me/media/065a4dd3c6740dab13ff9c71ec7d240bb9f8be9205c9e7467fb2202117da1e32.jpg", + "following_count" => 0, + "header_static" => "https://originalpatchou.li/images/banner.png", + "source" => %{ + "sensitive" => false, + "note" => "lain", + "pleroma" => %{ + "discoverable" => false, + "actor_type" => "Person" + }, + "fields" => [] + }, + "statuses_count" => 1, + "locked" => false, + "created_at" => "2020-04-16T13:40:15.000Z", + "display_name" => "lain", + "fields" => [], + "acct" => "lain@dontbulling.me", + "id" => "9u6Qw6TAZANpqokMkK", + "emojis" => [], + "avatar_static" => + "https://dontbulling.me/media/065a4dd3c6740dab13ff9c71ec7d240bb9f8be9205c9e7467fb2202117da1e32.jpg", + "username" => "lain", + "followers_count" => 0, + "header" => "https://originalpatchou.li/images/banner.png", + "bot" => false, + "note" => "lain", + "url" => "https://dontbulling.me/users/lain" + }, + "id" => "1", + "unread" => 2, + "last_message" => ChatMessage.schema().example(), + "updated_at" => "2020-04-21T15:06:45.000Z" + } + }) +end diff --git a/lib/pleroma/web/api_spec/schemas/chat_message.ex b/lib/pleroma/web/api_spec/schemas/chat_message.ex new file mode 100644 index 000000000..3ee85aa76 --- /dev/null +++ b/lib/pleroma/web/api_spec/schemas/chat_message.ex @@ -0,0 +1,41 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Schemas.ChatMessage do + alias OpenApiSpex.Schema + + require OpenApiSpex + + OpenApiSpex.schema(%{ + title: "ChatMessage", + description: "Response schema for a ChatMessage", + nullable: true, + type: :object, + properties: %{ + id: %Schema{type: :string}, + account_id: %Schema{type: :string, description: "The Mastodon API id of the actor"}, + chat_id: %Schema{type: :string}, + content: %Schema{type: :string, nullable: true}, + created_at: %Schema{type: :string, format: :"date-time"}, + emojis: %Schema{type: :array}, + attachment: %Schema{type: :object, nullable: true} + }, + example: %{ + "account_id" => "someflakeid", + "chat_id" => "1", + "content" => "hey you again", + "created_at" => "2020-04-21T15:06:45.000Z", + "emojis" => [ + %{ + "static_url" => "https://dontbulling.me/emoji/Firefox.gif", + "visible_in_picker" => false, + "shortcode" => "firefox", + "url" => "https://dontbulling.me/emoji/Firefox.gif" + } + ], + "id" => "14", + "attachment" => nil + } + }) +end diff --git a/lib/pleroma/web/api_spec/schemas/status.ex b/lib/pleroma/web/api_spec/schemas/status.ex index 8b87cb25b..28cde963e 100644 --- a/lib/pleroma/web/api_spec/schemas/status.ex +++ b/lib/pleroma/web/api_spec/schemas/status.ex @@ -184,6 +184,10 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Status do thread_muted: %Schema{ type: :boolean, description: "`true` if the thread the post belongs to is muted" + }, + parent_visible: %Schema{ + type: :boolean, + description: "`true` if the parent post is visible to the user" } } }, diff --git a/lib/pleroma/web/common_api/activity_draft.ex b/lib/pleroma/web/common_api/activity_draft.ex index 3f1a50b96..9bcb9f587 100644 --- a/lib/pleroma/web/common_api/activity_draft.ex +++ b/lib/pleroma/web/common_api/activity_draft.ex @@ -197,6 +197,13 @@ defp preview?(draft) do defp changes(draft) do direct? = draft.visibility == "direct" + additional = %{"cc" => draft.cc, "directMessage" => direct?} + + additional = + case draft.expires_at do + %NaiveDateTime{} = expires_at -> Map.put(additional, "expires_at", expires_at) + _ -> additional + end changes = %{ @@ -204,7 +211,7 @@ defp changes(draft) do actor: draft.user, context: draft.context, object: draft.object, - additional: %{"cc" => draft.cc, "directMessage" => direct?} + additional: additional } |> Utils.maybe_add_list_data(draft.user, draft.visibility) diff --git a/lib/pleroma/web/common_api/common_api.ex b/lib/pleroma/web/common_api/common_api.ex index dbb3d7ade..fd7149079 100644 --- a/lib/pleroma/web/common_api/common_api.ex +++ b/lib/pleroma/web/common_api/common_api.ex @@ -7,6 +7,7 @@ defmodule Pleroma.Web.CommonAPI do alias Pleroma.ActivityExpiration alias Pleroma.Conversation.Participation alias Pleroma.FollowingRelationship + alias Pleroma.Formatter alias Pleroma.Notification alias Pleroma.Object alias Pleroma.ThreadMute @@ -24,6 +25,60 @@ defmodule Pleroma.Web.CommonAPI do require Pleroma.Constants require Logger + def block(blocker, blocked) do + with {:ok, block_data, _} <- Builder.block(blocker, blocked), + {:ok, block, _} <- Pipeline.common_pipeline(block_data, local: true) do + {:ok, block} + end + end + + def post_chat_message(%User{} = user, %User{} = recipient, content, opts \\ []) do + with maybe_attachment <- opts[:media_id] && Object.get_by_id(opts[:media_id]), + :ok <- validate_chat_content_length(content, !!maybe_attachment), + {_, {:ok, chat_message_data, _meta}} <- + {:build_object, + Builder.chat_message( + user, + recipient.ap_id, + content |> format_chat_content, + attachment: maybe_attachment + )}, + {_, {:ok, create_activity_data, _meta}} <- + {:build_create_activity, Builder.create(user, chat_message_data, [recipient.ap_id])}, + {_, {:ok, %Activity{} = activity, _meta}} <- + {:common_pipeline, + Pipeline.common_pipeline(create_activity_data, + local: true + )} do + {:ok, activity} + end + end + + defp format_chat_content(nil), do: nil + + defp format_chat_content(content) do + {text, _, _} = + content + |> Formatter.html_escape("text/plain") + |> Formatter.linkify() + |> (fn {text, mentions, tags} -> + {String.replace(text, ~r/\r?\n/, "
"), mentions, tags} + end).() + + text + end + + defp validate_chat_content_length(_, true), do: :ok + defp validate_chat_content_length(nil, false), do: {:error, :no_content} + + defp validate_chat_content_length(content, _) do + if String.length(content) <= Pleroma.Config.get([:instance, :chat_limit]) do + :ok + else + {:error, :content_too_long} + end + end + def unblock(blocker, blocked) do with {_, %Activity{} = block} <- {:fetch_block, Utils.fetch_latest_block(blocker, blocked)}, {:ok, unblock_data, _} <- Builder.undo(blocker, block), @@ -73,6 +128,7 @@ def accept_follow_request(follower, followed) do object: follow_activity.data["id"], type: "Accept" }) do + Notification.update_notification_type(followed, follow_activity) {:ok, follower} end end @@ -374,20 +430,10 @@ def listen(user, data) do def post(user, %{status: _} = data) do with {:ok, draft} <- Pleroma.Web.CommonAPI.ActivityDraft.create(user, data) do - draft.changes - |> ActivityPub.create(draft.preview?) - |> maybe_create_activity_expiration(draft.expires_at) + ActivityPub.create(draft.changes, draft.preview?) end end - defp maybe_create_activity_expiration({:ok, activity}, %NaiveDateTime{} = expires_at) do - with {:ok, _} <- ActivityExpiration.create(activity, expires_at) do - {:ok, activity} - end - end - - defp maybe_create_activity_expiration(result, _), do: result - def pin(id, %{ap_id: user_ap_id} = user) do with %Activity{ actor: ^user_ap_id, @@ -427,12 +473,13 @@ def remove_mute(user, activity) do {:ok, activity} end - def thread_muted?(%{id: nil} = _user, _activity), do: false - - def thread_muted?(user, activity) do - ThreadMute.exists?(user.id, activity.data["context"]) + def thread_muted?(%User{id: user_id}, %{data: %{"context" => context}}) + when is_binary("context") do + ThreadMute.exists?(user_id, context) end + def thread_muted?(_, _), do: false + def report(user, data) do with {:ok, account} <- get_reported_account(data.account_id), {:ok, {content_html, _, _}} <- make_report_content_html(data[:comment]), diff --git a/lib/pleroma/web/common_api/utils.ex b/lib/pleroma/web/common_api/utils.ex index 6ec489f9a..15594125f 100644 --- a/lib/pleroma/web/common_api/utils.ex +++ b/lib/pleroma/web/common_api/utils.ex @@ -429,7 +429,7 @@ def maybe_notify_mentioned_recipients( %Activity{data: %{"to" => _to, "type" => type} = data} = activity ) when type == "Create" do - object = Object.normalize(activity) + object = Object.normalize(activity, false) object_data = cond do diff --git a/lib/pleroma/web/controller_helper.ex b/lib/pleroma/web/controller_helper.ex index 5a1316a5f..69946fb81 100644 --- a/lib/pleroma/web/controller_helper.ex +++ b/lib/pleroma/web/controller_helper.ex @@ -5,6 +5,8 @@ defmodule Pleroma.Web.ControllerHelper do use Pleroma.Web, :controller + alias Pleroma.Pagination + # As in Mastodon API, per https://api.rubyonrails.org/classes/ActiveModel/Type/Boolean.html @falsy_param_values [false, 0, "0", "f", "F", "false", "False", "FALSE", "off", "OFF"] @@ -46,33 +48,8 @@ def add_link_headers(%{assigns: %{skip_link_headers: true}} = conn, _activities, do: conn def add_link_headers(conn, activities, extra_params) do - case List.last(activities) do - %{id: max_id} -> - params = - conn.params - |> Map.drop(Map.keys(conn.path_params)) - |> Map.drop(["since_id", "max_id", "min_id"]) - |> Map.merge(extra_params) - - limit = - params - |> Map.get("limit", "20") - |> String.to_integer() - - min_id = - if length(activities) <= limit do - activities - |> List.first() - |> Map.get(:id) - else - activities - |> Enum.at(limit * -1) - |> Map.get(:id) - end - - next_url = current_url(conn, Map.merge(params, %{max_id: max_id})) - prev_url = current_url(conn, Map.merge(params, %{min_id: min_id})) - + case get_pagination_fields(conn, activities, extra_params) do + %{"next" => next_url, "prev" => prev_url} -> put_resp_header(conn, "link", "<#{next_url}>; rel=\"next\", <#{prev_url}>; rel=\"prev\"") _ -> @@ -80,9 +57,44 @@ def add_link_headers(conn, activities, extra_params) do end end + @id_keys Pagination.page_keys() -- ["limit", "order"] + defp build_pagination_fields(conn, min_id, max_id, extra_params) do + params = + conn.params + |> Map.drop(Map.keys(conn.path_params)) + |> Map.merge(extra_params) + |> Map.drop(@id_keys) + + %{ + "next" => current_url(conn, Map.put(params, :max_id, max_id)), + "prev" => current_url(conn, Map.put(params, :min_id, min_id)), + "id" => current_url(conn) + } + end + + def get_pagination_fields(conn, activities, extra_params \\ %{}) do + case List.last(activities) do + %{pagination_id: max_id} when not is_nil(max_id) -> + %{pagination_id: min_id} = + activities + |> List.first() + + build_pagination_fields(conn, min_id, max_id, extra_params) + + %{id: max_id} -> + %{id: min_id} = + activities + |> List.first() + + build_pagination_fields(conn, min_id, max_id, extra_params) + + _ -> + %{} + end + end + def assign_account_by_id(conn, _) do - # TODO: use `conn.params[:id]` only after moving to OpenAPI - case Pleroma.User.get_cached_by_id(conn.params[:id] || conn.params["id"]) do + case Pleroma.User.get_cached_by_id(conn.params.id) do %Pleroma.User{} = account -> assign(conn, :account, account) nil -> Pleroma.Web.MastodonAPI.FallbackController.call(conn, {:error, :not_found}) |> halt() end @@ -99,11 +111,6 @@ def try_render(conn, _, _) do render_error(conn, :not_implemented, "Can't display this activity") end - @spec put_if_exist(map(), atom() | String.t(), any) :: map() - def put_if_exist(map, _key, nil), do: map - - def put_if_exist(map, key, value), do: Map.put(map, key, value) - @doc """ Returns true if request specifies to include embedded relationships in account objects. May only be used in selected account-related endpoints; has no effect for status- or diff --git a/lib/pleroma/web/embed_controller.ex b/lib/pleroma/web/embed_controller.ex new file mode 100644 index 000000000..f6b8a5ee1 --- /dev/null +++ b/lib/pleroma/web/embed_controller.ex @@ -0,0 +1,42 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.EmbedController do + use Pleroma.Web, :controller + + alias Pleroma.Activity + alias Pleroma.Object + alias Pleroma.User + + alias Pleroma.Web.ActivityPub.Visibility + + plug(:put_layout, :embed) + + def show(conn, %{"id" => id}) do + with %Activity{local: true} = activity <- + Activity.get_by_id_with_object(id), + true <- Visibility.is_public?(activity.object) do + {:ok, author} = User.get_or_fetch(activity.object.data["actor"]) + + conn + |> delete_resp_header("x-frame-options") + |> delete_resp_header("content-security-policy") + |> render("show.html", + activity: activity, + author: User.sanitize_html(author), + counts: get_counts(activity) + ) + end + end + + defp get_counts(%Activity{} = activity) do + %Object{data: data} = Object.normalize(activity) + + %{ + likes: Map.get(data, "like_count", 0), + replies: Map.get(data, "repliesCount", 0), + announces: Map.get(data, "announcement_count", 0) + } + end +end diff --git a/lib/pleroma/web/fallback_redirect_controller.ex b/lib/pleroma/web/fallback_redirect_controller.ex index 0d9d578fc..431ad5485 100644 --- a/lib/pleroma/web/fallback_redirect_controller.ex +++ b/lib/pleroma/web/fallback_redirect_controller.ex @@ -9,6 +9,7 @@ defmodule Fallback.RedirectController do alias Pleroma.User alias Pleroma.Web.Metadata + alias Pleroma.Web.Preload def api_not_implemented(conn, _params) do conn @@ -16,16 +17,7 @@ def api_not_implemented(conn, _params) do |> json(%{error: "Not implemented"}) end - def redirector(conn, _params, code \\ 200) - - # redirect to admin section - # /pleroma/admin -> /pleroma/admin/ - # - def redirector(conn, %{"path" => ["pleroma", "admin"]} = _, _code) do - redirect(conn, to: "/pleroma/admin/") - end - - def redirector(conn, _params, code) do + def redirector(conn, _params, code \\ 200) do conn |> put_resp_content_type("text/html") |> send_file(code, index_file_path()) @@ -43,28 +35,33 @@ def redirector_with_meta(conn, %{"maybe_nickname_or_id" => maybe_nickname_or_id} def redirector_with_meta(conn, params) do {:ok, index_content} = File.read(index_file_path()) - tags = - try do - Metadata.build_tags(params) - rescue - e -> - Logger.error( - "Metadata rendering for #{conn.request_path} failed.\n" <> - Exception.format(:error, e, __STACKTRACE__) - ) + tags = build_tags(conn, params) + preloads = preload_data(conn, params) - "" - end - - response = String.replace(index_content, "", tags) + response = + index_content + |> String.replace("", tags <> preloads) conn |> put_resp_content_type("text/html") |> send_resp(200, response) end - def index_file_path do - Pleroma.Plugs.InstanceStatic.file_path("index.html") + def redirector_with_preload(conn, %{"path" => ["pleroma", "admin"]}) do + redirect(conn, to: "/pleroma/admin/") + end + + def redirector_with_preload(conn, params) do + {:ok, index_content} = File.read(index_file_path()) + preloads = preload_data(conn, params) + + response = + index_content + |> String.replace("", preloads) + + conn + |> put_resp_content_type("text/html") + |> send_resp(200, response) end def registration_page(conn, params) do @@ -76,4 +73,36 @@ def empty(conn, _params) do |> put_status(204) |> text("") end + + defp index_file_path do + Pleroma.Plugs.InstanceStatic.file_path("index.html") + end + + defp build_tags(conn, params) do + try do + Metadata.build_tags(params) + rescue + e -> + Logger.error( + "Metadata rendering for #{conn.request_path} failed.\n" <> + Exception.format(:error, e, __STACKTRACE__) + ) + + "" + end + end + + defp preload_data(conn, params) do + try do + Preload.build_tags(conn, params) + rescue + e -> + Logger.error( + "Preloading for #{conn.request_path} failed.\n" <> + Exception.format(:error, e, __STACKTRACE__) + ) + + "" + end + end end diff --git a/lib/pleroma/web/feed/tag_controller.ex b/lib/pleroma/web/feed/tag_controller.ex index 8133f8480..39b2a766a 100644 --- a/lib/pleroma/web/feed/tag_controller.ex +++ b/lib/pleroma/web/feed/tag_controller.ex @@ -9,14 +9,12 @@ defmodule Pleroma.Web.Feed.TagController do alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.Feed.FeedView - import Pleroma.Web.ControllerHelper, only: [put_if_exist: 3] - def feed(conn, %{"tag" => raw_tag} = params) do {format, tag} = parse_tag(raw_tag) activities = - %{"type" => ["Create"], "tag" => tag} - |> put_if_exist("max_id", params["max_id"]) + %{type: ["Create"], tag: tag} + |> Pleroma.Maps.put_if_present(:max_id, params["max_id"]) |> ActivityPub.fetch_public_activities() conn diff --git a/lib/pleroma/web/feed/user_controller.ex b/lib/pleroma/web/feed/user_controller.ex index 5a6fc9de0..d56f43818 100644 --- a/lib/pleroma/web/feed/user_controller.ex +++ b/lib/pleroma/web/feed/user_controller.ex @@ -11,8 +11,6 @@ defmodule Pleroma.Web.Feed.UserController do alias Pleroma.Web.ActivityPub.ActivityPubController alias Pleroma.Web.Feed.FeedView - import Pleroma.Web.ControllerHelper, only: [put_if_exist: 3] - plug(Pleroma.Plugs.SetFormatPlug when action in [:feed_redirect]) action_fallback(:errors) @@ -52,10 +50,10 @@ def feed(conn, %{"nickname" => nickname} = params) do with {_, %User{} = user} <- {:fetch_user, User.get_cached_by_nickname(nickname)} do activities = %{ - "type" => ["Create"], - "actor_id" => user.ap_id + type: ["Create"], + actor_id: user.ap_id } - |> put_if_exist("max_id", params["max_id"]) + |> Pleroma.Maps.put_if_present(:max_id, params["max_id"]) |> ActivityPub.fetch_public_or_unlisted_activities() conn diff --git a/lib/pleroma/web/masto_fe_controller.ex b/lib/pleroma/web/masto_fe_controller.ex index d0d8bc8eb..43ec70021 100644 --- a/lib/pleroma/web/masto_fe_controller.ex +++ b/lib/pleroma/web/masto_fe_controller.ex @@ -49,7 +49,7 @@ def manifest(conn, _params) do |> render("manifest.json") end - @doc "PUT /api/web/settings" + @doc "PUT /api/web/settings: Backend-obscure settings blob for MastoFE, don't parse/reuse elsewhere" def put_settings(%{assigns: %{user: user}} = conn, %{"data" => settings} = _params) do with {:ok, _} <- User.mastodon_settings_update(user, settings) do json(conn, %{}) diff --git a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex index 47649d41d..b5008d69b 100644 --- a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex @@ -14,11 +14,14 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do json_response: 3 ] + alias Pleroma.Maps alias Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug alias Pleroma.Plugs.OAuthScopesPlug alias Pleroma.Plugs.RateLimiter alias Pleroma.User alias Pleroma.Web.ActivityPub.ActivityPub + alias Pleroma.Web.ActivityPub.Builder + alias Pleroma.Web.ActivityPub.Pipeline alias Pleroma.Web.CommonAPI alias Pleroma.Web.MastodonAPI.ListView alias Pleroma.Web.MastodonAPI.MastodonAPI @@ -139,9 +142,7 @@ def verify_credentials(%{assigns: %{user: user}} = conn, _) do end @doc "PATCH /api/v1/accounts/update_credentials" - def update_credentials(%{assigns: %{user: original_user}, body_params: params} = conn, _params) do - user = original_user - + def update_credentials(%{assigns: %{user: user}, body_params: params} = conn, _params) do params = params |> Enum.filter(fn {_, value} -> not is_nil(value) end) @@ -162,43 +163,60 @@ def update_credentials(%{assigns: %{user: original_user}, body_params: params} = :discoverable ] |> Enum.reduce(%{}, fn key, acc -> - add_if_present(acc, params, key, key, &{:ok, truthy_param?(&1)}) + Maps.put_if_present(acc, key, params[key], &{:ok, truthy_param?(&1)}) end) - |> add_if_present(params, :display_name, :name) - |> add_if_present(params, :note, :bio) - |> add_if_present(params, :avatar, :avatar) - |> add_if_present(params, :header, :banner) - |> add_if_present(params, :pleroma_background_image, :background) - |> add_if_present( - params, - :fields_attributes, + |> Maps.put_if_present(:name, params[:display_name]) + |> Maps.put_if_present(:bio, params[:note]) + |> Maps.put_if_present(:raw_bio, params[:note]) + |> Maps.put_if_present(:avatar, params[:avatar]) + |> Maps.put_if_present(:banner, params[:header]) + |> Maps.put_if_present(:background, params[:pleroma_background_image]) + |> Maps.put_if_present( :raw_fields, + params[:fields_attributes], &{:ok, normalize_fields_attributes(&1)} ) - |> add_if_present(params, :pleroma_settings_store, :pleroma_settings_store) - |> add_if_present(params, :default_scope, :default_scope) - |> add_if_present(params["source"], "privacy", :default_scope) - |> add_if_present(params, :actor_type, :actor_type) + |> Maps.put_if_present(:pleroma_settings_store, params[:pleroma_settings_store]) + |> Maps.put_if_present(:default_scope, params[:default_scope]) + |> Maps.put_if_present(:default_scope, params["source"]["privacy"]) + |> Maps.put_if_present(:actor_type, params[:bot], fn bot -> + if bot, do: {:ok, "Service"}, else: {:ok, "Person"} + end) + |> Maps.put_if_present(:actor_type, params[:actor_type]) - changeset = User.update_changeset(user, user_params) - - with {:ok, user} <- User.update_and_set_cache(changeset) do - render(conn, "show.json", user: user, for: user, with_pleroma_settings: true) + # What happens here: + # + # We want to update the user through the pipeline, but the ActivityPub + # update information is not quite enough for this, because this also + # contains local settings that don't federate and don't even appear + # in the Update activity. + # + # So we first build the normal local changeset, then apply it to the + # user data, but don't persist it. With this, we generate the object + # data for our update activity. We feed this and the changeset as meta + # inforation into the pipeline, where they will be properly updated and + # federated. + with changeset <- User.update_changeset(user, user_params), + {:ok, unpersisted_user} <- Ecto.Changeset.apply_action(changeset, :update), + updated_object <- + Pleroma.Web.ActivityPub.UserView.render("user.json", user: user) + |> Map.delete("@context"), + {:ok, update_data, []} <- Builder.update(user, updated_object), + {:ok, _update, _} <- + Pipeline.common_pipeline(update_data, + local: true, + user_update_changeset: changeset + ) do + render(conn, "show.json", + user: unpersisted_user, + for: unpersisted_user, + with_pleroma_settings: true + ) else _e -> render_error(conn, :forbidden, "Invalid request") end end - defp add_if_present(map, params, params_field, map_field, value_function \\ &{:ok, &1}) do - with true <- is_map(params), - true <- Map.has_key?(params, params_field), - {:ok, new_value} <- value_function.(Map.get(params, params_field)) do - Map.put(map, map_field, new_value) - else - _ -> map - end - end - defp normalize_fields_attributes(fields) do if Enum.all?(fields, &is_tuple/1) do Enum.map(fields, fn {_, v} -> v end) @@ -223,23 +241,21 @@ def relationships(%{assigns: %{user: _user}} = conn, _), do: json(conn, []) @doc "GET /api/v1/accounts/:id" def show(%{assigns: %{user: for_user}} = conn, %{id: nickname_or_id}) do with %User{} = user <- User.get_cached_by_nickname_or_id(nickname_or_id, for: for_user), - true <- User.visible_for?(user, for_user) do + :visible <- User.visible_for(user, for_user) do render(conn, "show.json", user: user, for: for_user) else - _e -> render_error(conn, :not_found, "Can't find user") + error -> user_visibility_error(conn, error) end end @doc "GET /api/v1/accounts/:id/statuses" def statuses(%{assigns: %{user: reading_user}} = conn, params) do with %User{} = user <- User.get_cached_by_nickname_or_id(params.id, for: reading_user), - true <- User.visible_for?(user, reading_user) do + :visible <- User.visible_for(user, reading_user) do params = params |> Map.delete(:tagged) - |> Enum.filter(&(not is_nil(&1))) - |> Map.new(fn {key, value} -> {to_string(key), value} end) - |> Map.put("tag", params[:tagged]) + |> Map.put(:tag, params[:tagged]) activities = ActivityPub.fetch_user_activities(user, reading_user, params) @@ -252,7 +268,17 @@ def statuses(%{assigns: %{user: reading_user}} = conn, params) do as: :activity ) else - _e -> render_error(conn, :not_found, "Can't find user") + error -> user_visibility_error(conn, error) + end + end + + defp user_visibility_error(conn, error) do + case error do + :restrict_unauthenticated -> + render_error(conn, :unauthorized, "This API requires an authenticated user") + + _ -> + render_error(conn, :not_found, "Can't find user") end end @@ -359,8 +385,7 @@ def unmute(%{assigns: %{user: muter, account: muted}} = conn, _params) do @doc "POST /api/v1/accounts/:id/block" def block(%{assigns: %{user: blocker, account: blocked}} = conn, _params) do - with {:ok, _user_block} <- User.block(blocker, blocked), - {:ok, _activity} <- ActivityPub.block(blocker, blocked) do + with {:ok, _activity} <- CommonAPI.block(blocker, blocked) do render(conn, "relationship.json", user: blocker, target: blocked) else {:error, message} -> json_response(conn, :forbidden, %{error: message}) diff --git a/lib/pleroma/web/mastodon_api/controllers/notification_controller.ex b/lib/pleroma/web/mastodon_api/controllers/notification_controller.ex index bcd12c73f..e25cef30b 100644 --- a/lib/pleroma/web/mastodon_api/controllers/notification_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/notification_controller.ex @@ -42,8 +42,20 @@ def index(conn, %{account_id: account_id} = params) do end end + @default_notification_types ~w{ + mention + follow + follow_request + reblog + favourite + move + pleroma:emoji_reaction + } def index(%{assigns: %{user: user}} = conn, params) do - params = Map.new(params, fn {k, v} -> {to_string(k), v} end) + params = + Map.new(params, fn {k, v} -> {to_string(k), v} end) + |> Map.put_new("include_types", @default_notification_types) + notifications = MastodonAPI.get_notifications(user, params) conn diff --git a/lib/pleroma/web/mastodon_api/controllers/search_controller.ex b/lib/pleroma/web/mastodon_api/controllers/search_controller.ex index 77e2224e4..e50980122 100644 --- a/lib/pleroma/web/mastodon_api/controllers/search_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/search_controller.ex @@ -107,28 +107,72 @@ defp resource_search(_, "statuses", query, options) do ) end - defp resource_search(:v2, "hashtags", query, _options) do + defp resource_search(:v2, "hashtags", query, options) do tags_path = Web.base_url() <> "/tag/" query - |> prepare_tags() + |> prepare_tags(options) |> Enum.map(fn tag -> - tag = String.trim_leading(tag, "#") %{name: tag, url: tags_path <> tag} end) end - defp resource_search(:v1, "hashtags", query, _options) do - query - |> prepare_tags() - |> Enum.map(fn tag -> String.trim_leading(tag, "#") end) + defp resource_search(:v1, "hashtags", query, options) do + prepare_tags(query, options) end - defp prepare_tags(query) do - query - |> String.split() - |> Enum.uniq() - |> Enum.filter(fn tag -> String.starts_with?(tag, "#") end) + defp prepare_tags(query, options) do + tags = + query + |> preprocess_uri_query() + |> String.split(~r/[^#\w]+/u, trim: true) + |> Enum.uniq_by(&String.downcase/1) + + explicit_tags = Enum.filter(tags, fn tag -> String.starts_with?(tag, "#") end) + + tags = + if Enum.any?(explicit_tags) do + explicit_tags + else + tags + end + + tags = Enum.map(tags, fn tag -> String.trim_leading(tag, "#") end) + + tags = + if Enum.empty?(explicit_tags) && !options[:skip_joined_tag] do + add_joined_tag(tags) + else + tags + end + + Pleroma.Pagination.paginate(tags, options) + end + + defp add_joined_tag(tags) do + tags + |> Kernel.++([joined_tag(tags)]) + |> Enum.uniq_by(&String.downcase/1) + end + + # If `query` is a URI, returns last component of its path, otherwise returns `query` + defp preprocess_uri_query(query) do + if query =~ ~r/https?:\/\// do + query + |> String.trim_trailing("/") + |> URI.parse() + |> Map.get(:path) + |> String.split("/") + |> Enum.at(-1) + else + query + end + end + + defp joined_tag(tags) do + tags + |> Enum.map(fn tag -> String.capitalize(tag) end) + |> Enum.join() end defp with_fallback(f, fallback \\ []) do diff --git a/lib/pleroma/web/mastodon_api/controllers/status_controller.ex b/lib/pleroma/web/mastodon_api/controllers/status_controller.ex index f20157a5f..468b44b67 100644 --- a/lib/pleroma/web/mastodon_api/controllers/status_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/status_controller.ex @@ -359,9 +359,9 @@ def context(%{assigns: %{user: user}} = conn, %{id: id}) do with %Activity{} = activity <- Activity.get_by_id(id) do activities = ActivityPub.fetch_activities_for_context(activity.data["context"], %{ - "blocking_user" => user, - "user" => user, - "exclude_id" => activity.id + blocking_user: user, + user: user, + exclude_id: activity.id }) render(conn, "context.json", activity: activity, activities: activities, user: user) @@ -370,11 +370,6 @@ def context(%{assigns: %{user: user}} = conn, %{id: id}) do @doc "GET /api/v1/favourites" def favourites(%{assigns: %{user: %User{} = user}} = conn, params) do - params = - params - |> Map.new(fn {key, value} -> {to_string(key), value} end) - |> Map.take(Pleroma.Pagination.page_keys()) - activities = ActivityPub.fetch_favourites(user, params) conn diff --git a/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex b/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex index 958567510..4bdd46d7e 100644 --- a/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex @@ -44,17 +44,15 @@ defmodule Pleroma.Web.MastodonAPI.TimelineController do def home(%{assigns: %{user: user}} = conn, params) do params = params - |> Map.new(fn {key, value} -> {to_string(key), value} end) - |> Map.put("type", ["Create", "Announce"]) - |> Map.put("blocking_user", user) - |> Map.put("muting_user", user) - |> Map.put("reply_filtering_user", user) - |> Map.put("user", user) - - recipients = [user.ap_id | User.following(user)] + |> Map.put(:type, ["Create", "Announce"]) + |> Map.put(:blocking_user, user) + |> Map.put(:muting_user, user) + |> Map.put(:reply_filtering_user, user) + |> Map.put(:announce_filtering_user, user) + |> Map.put(:user, user) activities = - recipients + [user.ap_id | User.following(user)] |> ActivityPub.fetch_activities(params) |> Enum.reverse() @@ -71,10 +69,9 @@ def home(%{assigns: %{user: user}} = conn, params) do def direct(%{assigns: %{user: user}} = conn, params) do params = params - |> Map.new(fn {key, value} -> {to_string(key), value} end) - |> Map.put("type", "Create") - |> Map.put("blocking_user", user) - |> Map.put("user", user) + |> Map.put(:type, "Create") + |> Map.put(:blocking_user, user) + |> Map.put(:user, user) |> Map.put(:visibility, "direct") activities = @@ -93,9 +90,7 @@ def direct(%{assigns: %{user: user}} = conn, params) do # GET /api/v1/timelines/public def public(%{assigns: %{user: user}} = conn, params) do - params = Map.new(params, fn {key, value} -> {to_string(key), value} end) - - local_only = params["local"] + local_only = params[:local] cfg_key = if local_only do @@ -111,11 +106,11 @@ def public(%{assigns: %{user: user}} = conn, params) do else activities = params - |> Map.put("type", ["Create", "Announce"]) - |> Map.put("local_only", local_only) - |> Map.put("blocking_user", user) - |> Map.put("muting_user", user) - |> Map.put("reply_filtering_user", user) + |> Map.put(:type, ["Create"]) + |> Map.put(:local_only, local_only) + |> Map.put(:blocking_user, user) + |> Map.put(:muting_user, user) + |> Map.put(:reply_filtering_user, user) |> ActivityPub.fetch_public_activities() conn @@ -130,39 +125,38 @@ def public(%{assigns: %{user: user}} = conn, params) do defp hashtag_fetching(params, user, local_only) do tags = - [params["tag"], params["any"]] + [params[:tag], params[:any]] |> List.flatten() |> Enum.uniq() - |> Enum.filter(& &1) - |> Enum.map(&String.downcase(&1)) + |> Enum.reject(&is_nil/1) + |> Enum.map(&String.downcase/1) tag_all = params - |> Map.get("all", []) - |> Enum.map(&String.downcase(&1)) + |> Map.get(:all, []) + |> Enum.map(&String.downcase/1) tag_reject = params - |> Map.get("none", []) - |> Enum.map(&String.downcase(&1)) + |> Map.get(:none, []) + |> Enum.map(&String.downcase/1) _activities = params - |> Map.put("type", "Create") - |> Map.put("local_only", local_only) - |> Map.put("blocking_user", user) - |> Map.put("muting_user", user) - |> Map.put("user", user) - |> Map.put("tag", tags) - |> Map.put("tag_all", tag_all) - |> Map.put("tag_reject", tag_reject) + |> Map.put(:type, "Create") + |> Map.put(:local_only, local_only) + |> Map.put(:blocking_user, user) + |> Map.put(:muting_user, user) + |> Map.put(:user, user) + |> Map.put(:tag, tags) + |> Map.put(:tag_all, tag_all) + |> Map.put(:tag_reject, tag_reject) |> ActivityPub.fetch_public_activities() end # GET /api/v1/timelines/tag/:tag def hashtag(%{assigns: %{user: user}} = conn, params) do - params = Map.new(params, fn {key, value} -> {to_string(key), value} end) - local_only = params["local"] + local_only = params[:local] activities = hashtag_fetching(params, user, local_only) conn diff --git a/lib/pleroma/web/mastodon_api/mastodon_api.ex b/lib/pleroma/web/mastodon_api/mastodon_api.ex index 70da64a7a..694bf5ca8 100644 --- a/lib/pleroma/web/mastodon_api/mastodon_api.ex +++ b/lib/pleroma/web/mastodon_api/mastodon_api.ex @@ -6,7 +6,6 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPI do import Ecto.Query import Ecto.Changeset - alias Pleroma.Activity alias Pleroma.Notification alias Pleroma.Pagination alias Pleroma.ScheduledActivity @@ -82,15 +81,11 @@ defp cast_params(params) do end defp restrict(query, :include_types, %{include_types: mastodon_types = [_ | _]}) do - ap_types = convert_and_filter_mastodon_types(mastodon_types) - - where(query, [q, a], fragment("? @> ARRAY[?->>'type']::varchar[]", ^ap_types, a.data)) + where(query, [n], n.type in ^mastodon_types) end defp restrict(query, :exclude_types, %{exclude_types: mastodon_types = [_ | _]}) do - ap_types = convert_and_filter_mastodon_types(mastodon_types) - - where(query, [q, a], not fragment("? @> ARRAY[?->>'type']::varchar[]", ^ap_types, a.data)) + where(query, [n], n.type not in ^mastodon_types) end defp restrict(query, :account_ap_id, %{account_ap_id: account_ap_id}) do @@ -98,10 +93,4 @@ defp restrict(query, :account_ap_id, %{account_ap_id: account_ap_id}) do end defp restrict(query, _, _), do: query - - defp convert_and_filter_mastodon_types(types) do - types - |> Enum.map(&Activity.from_mastodon_notification_type/1) - |> Enum.filter(& &1) - end end diff --git a/lib/pleroma/web/mastodon_api/views/account_view.ex b/lib/pleroma/web/mastodon_api/views/account_view.ex index 04c419d2f..a6e64b4ab 100644 --- a/lib/pleroma/web/mastodon_api/views/account_view.ex +++ b/lib/pleroma/web/mastodon_api/views/account_view.ex @@ -35,7 +35,7 @@ def render("index.json", %{users: users} = opts) do end def render("show.json", %{user: user} = opts) do - if User.visible_for?(user, opts[:for]) do + if User.visible_for(user, opts[:for]) == :visible do do_render("show.json", opts) else %{} @@ -179,7 +179,7 @@ defp do_render("show.json", %{user: user} = opts) do 0 end - bot = user.actor_type in ["Application", "Service"] + bot = user.actor_type == "Service" emojis = Enum.map(user.emoji, fn {shortcode, raw_url} -> @@ -224,7 +224,7 @@ defp do_render("show.json", %{user: user} = opts) do fields: user.fields, bot: bot, source: %{ - note: prepare_user_bio(user), + note: user.raw_bio || "", sensitive: false, fields: user.raw_fields, pleroma: %{ @@ -235,6 +235,7 @@ defp do_render("show.json", %{user: user} = opts) do # Pleroma extension pleroma: %{ + ap_id: user.ap_id, confirmation_pending: user.confirmation_pending, tags: user.tags, hide_followers_count: user.hide_followers_count, @@ -259,17 +260,6 @@ defp do_render("show.json", %{user: user} = opts) do |> maybe_put_unread_notification_count(user, opts[:for]) end - defp prepare_user_bio(%User{bio: ""}), do: "" - - defp prepare_user_bio(%User{bio: bio}) when is_binary(bio) do - bio - |> String.replace(~r(
), "\n") - |> Pleroma.HTML.strip_tags() - |> HtmlEntities.decode() - end - - defp prepare_user_bio(_), do: "" - defp username_from_nickname(string) when is_binary(string) do hd(String.split(string, "@")) end diff --git a/lib/pleroma/web/mastodon_api/views/app_view.ex b/lib/pleroma/web/mastodon_api/views/app_view.ex index 36071cd25..e44272c6f 100644 --- a/lib/pleroma/web/mastodon_api/views/app_view.ex +++ b/lib/pleroma/web/mastodon_api/views/app_view.ex @@ -45,10 +45,6 @@ def render("short.json", %{app: %App{website: webiste, client_name: name}}) do defp with_vapid_key(data) do vapid_key = Application.get_env(:web_push_encryption, :vapid_details, [])[:public_key] - if vapid_key do - Map.put(data, "vapid_key", vapid_key) - else - data - end + Pleroma.Maps.put_if_present(data, "vapid_key", vapid_key) end end diff --git a/lib/pleroma/web/mastodon_api/views/conversation_view.ex b/lib/pleroma/web/mastodon_api/views/conversation_view.ex index 2b6f84c72..06f0c1728 100644 --- a/lib/pleroma/web/mastodon_api/views/conversation_view.ex +++ b/lib/pleroma/web/mastodon_api/views/conversation_view.ex @@ -23,10 +23,13 @@ def render("participation.json", %{participation: participation, for: user}) do last_activity_id = with nil <- participation.last_activity_id do - ActivityPub.fetch_latest_activity_id_for_context(participation.conversation.ap_id, %{ - "user" => user, - "blocking_user" => user - }) + ActivityPub.fetch_latest_direct_activity_id_for_context( + participation.conversation.ap_id, + %{ + user: user, + blocking_user: user + } + ) end activity = Activity.get_by_id_with_object(last_activity_id) diff --git a/lib/pleroma/web/mastodon_api/views/instance_view.ex b/lib/pleroma/web/mastodon_api/views/instance_view.ex index bb7bd2a9f..118678962 100644 --- a/lib/pleroma/web/mastodon_api/views/instance_view.ex +++ b/lib/pleroma/web/mastodon_api/views/instance_view.ex @@ -23,7 +23,7 @@ def render("show.json", _) do streaming_api: Pleroma.Web.Endpoint.websocket_url() }, stats: Pleroma.Stats.get_stats(), - thumbnail: instance_thumbnail(), + thumbnail: Keyword.get(instance, :instance_thumbnail), languages: ["en"], registrations: Keyword.get(instance, :registrations_open), # Extra (not present in Mastodon): @@ -70,7 +70,8 @@ def features do if Config.get([:instance, :safe_dm_mentions]) do "safe_dm_mentions" end, - "pleroma_emoji_reactions" + "pleroma_emoji_reactions", + "pleroma_chat_messages" ] |> Enum.filter(& &1) end @@ -78,7 +79,7 @@ def features do def federation do quarantined = Config.get([:instance, :quarantined_instances], []) - if Config.get([:instance, :mrf_transparency]) do + if Config.get([:mrf, :transparency]) do {:ok, data} = MRF.describe() data @@ -88,9 +89,4 @@ def federation do end |> Map.put(:enabled, Config.get([:instance, :federating])) end - - defp instance_thumbnail do - Pleroma.Config.get([:instance, :instance_thumbnail]) || - "#{Pleroma.Web.base_url()}/instance/thumbnail.jpeg" - end end diff --git a/lib/pleroma/web/mastodon_api/views/notification_view.ex b/lib/pleroma/web/mastodon_api/views/notification_view.ex index c46ddcf55..c97e6d32f 100644 --- a/lib/pleroma/web/mastodon_api/views/notification_view.ex +++ b/lib/pleroma/web/mastodon_api/views/notification_view.ex @@ -6,26 +6,28 @@ defmodule Pleroma.Web.MastodonAPI.NotificationView do use Pleroma.Web, :view alias Pleroma.Activity + alias Pleroma.Chat.MessageReference alias Pleroma.Notification + alias Pleroma.Object alias Pleroma.User alias Pleroma.UserRelationship alias Pleroma.Web.CommonAPI alias Pleroma.Web.MastodonAPI.AccountView alias Pleroma.Web.MastodonAPI.NotificationView alias Pleroma.Web.MastodonAPI.StatusView + alias Pleroma.Web.PleromaAPI.Chat.MessageReferenceView + + @parent_types ~w{Like Announce EmojiReact} def render("index.json", %{notifications: notifications, for: reading_user} = opts) do activities = Enum.map(notifications, & &1.activity) parent_activities = activities - |> Enum.filter( - &(Activity.mastodon_notification_type(&1) in [ - "favourite", - "reblog", - "pleroma:emoji_reaction" - ]) - ) + |> Enum.filter(fn + %{data: %{"type" => type}} -> + type in @parent_types + end) |> Enum.map(& &1.data["object"]) |> Activity.create_by_object_ap_id() |> Activity.with_preloaded_object(:left) @@ -42,8 +44,9 @@ def render("index.json", %{notifications: notifications, for: reading_user} = op true -> move_activities_targets = activities - |> Enum.filter(&(Activity.mastodon_notification_type(&1) == "move")) + |> Enum.filter(&(&1.data["type"] == "Move")) |> Enum.map(&User.get_cached_by_ap_id(&1.data["target"])) + |> Enum.filter(& &1) actors = activities @@ -79,52 +82,44 @@ def render( end end - mastodon_type = Activity.mastodon_notification_type(activity) - # Note: :relationships contain user mutes (needed for :muted flag in :status) status_render_opts = %{relationships: opts[:relationships]} + account = AccountView.render("show.json", %{user: actor, for: reading_user}) - with %{id: _} = account <- - AccountView.render( - "show.json", - %{user: actor, for: reading_user} - ) do - response = %{ - id: to_string(notification.id), - type: mastodon_type, - created_at: CommonAPI.Utils.to_masto_date(notification.inserted_at), - account: account, - pleroma: %{ - is_seen: notification.seen - } + response = %{ + id: to_string(notification.id), + type: notification.type, + created_at: CommonAPI.Utils.to_masto_date(notification.inserted_at), + account: account, + pleroma: %{ + is_muted: User.mutes?(reading_user, actor), + is_seen: notification.seen } + } - case mastodon_type do - "mention" -> - put_status(response, activity, reading_user, status_render_opts) + case notification.type do + "mention" -> + put_status(response, activity, reading_user, status_render_opts) - "favourite" -> - put_status(response, parent_activity_fn.(), reading_user, status_render_opts) + "favourite" -> + put_status(response, parent_activity_fn.(), reading_user, status_render_opts) - "reblog" -> - put_status(response, parent_activity_fn.(), reading_user, status_render_opts) + "reblog" -> + put_status(response, parent_activity_fn.(), reading_user, status_render_opts) - "move" -> - put_target(response, activity, reading_user, %{}) + "move" -> + put_target(response, activity, reading_user, %{}) - "pleroma:emoji_reaction" -> - response - |> put_status(parent_activity_fn.(), reading_user, status_render_opts) - |> put_emoji(activity) + "pleroma:emoji_reaction" -> + response + |> put_status(parent_activity_fn.(), reading_user, status_render_opts) + |> put_emoji(activity) - type when type in ["follow", "follow_request"] -> - response + "pleroma:chat_mention" -> + put_chat_message(response, activity, reading_user, status_render_opts) - _ -> - nil - end - else - _ -> nil + type when type in ["follow", "follow_request"] -> + response end end @@ -132,6 +127,17 @@ defp put_emoji(response, activity) do Map.put(response, :emoji, activity.data["content"]) end + defp put_chat_message(response, activity, reading_user, opts) do + object = Object.normalize(activity) + author = User.get_cached_by_ap_id(object.data["actor"]) + chat = Pleroma.Chat.get(reading_user.id, author.ap_id) + cm_ref = MessageReference.for_chat_and_object(chat, object) + render_opts = Map.merge(opts, %{for: reading_user, chat_message_reference: cm_ref}) + chat_message_render = MessageReferenceView.render("show.json", render_opts) + + Map.put(response, :chat_message, chat_message_render) + end + defp put_status(response, activity, reading_user, opts) do status_render_opts = Map.merge(opts, %{activity: activity, for: reading_user}) status_render = StatusView.render("show.json", status_render_opts) diff --git a/lib/pleroma/web/mastodon_api/views/scheduled_activity_view.ex b/lib/pleroma/web/mastodon_api/views/scheduled_activity_view.ex index 458f6bc78..5b896bf3b 100644 --- a/lib/pleroma/web/mastodon_api/views/scheduled_activity_view.ex +++ b/lib/pleroma/web/mastodon_api/views/scheduled_activity_view.ex @@ -30,7 +30,7 @@ defp with_media_attachments(data, %{params: %{"media_attachments" => media_attac defp with_media_attachments(data, _), do: data defp status_params(params) do - data = %{ + %{ text: params["status"], sensitive: params["sensitive"], spoiler_text: params["spoiler_text"], @@ -39,10 +39,6 @@ defp status_params(params) do poll: params["poll"], in_reply_to_id: params["in_reply_to_id"] } - - case params["media_ids"] do - nil -> data - media_ids -> Map.put(data, :media_ids, media_ids) - end + |> Pleroma.Maps.put_if_present(:media_ids, params["media_ids"]) end end diff --git a/lib/pleroma/web/mastodon_api/views/status_view.ex b/lib/pleroma/web/mastodon_api/views/status_view.ex index 8e3715093..6ee17f4dd 100644 --- a/lib/pleroma/web/mastodon_api/views/status_view.ex +++ b/lib/pleroma/web/mastodon_api/views/status_view.ex @@ -21,7 +21,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do alias Pleroma.Web.MastodonAPI.StatusView alias Pleroma.Web.MediaProxy - import Pleroma.Web.ActivityPub.Visibility, only: [get_visibility: 1] + import Pleroma.Web.ActivityPub.Visibility, only: [get_visibility: 1, visible_for_user?: 2] # TODO: Add cached version. defp get_replied_to_activities([]), do: %{} @@ -364,7 +364,8 @@ def render("show.json", %{activity: %{data: %{"object" => _object}} = activity} expires_at: expires_at, direct_conversation_id: direct_conversation_id, thread_muted: thread_muted?, - emoji_reactions: emoji_reactions + emoji_reactions: emoji_reactions, + parent_visible: visible_for_user?(reply_to, opts[:for]) } } end @@ -377,8 +378,8 @@ def render("card.json", %{rich_media: rich_media, page_url: page_url}) do page_url_data = URI.parse(page_url) page_url_data = - if rich_media[:url] != nil do - URI.merge(page_url_data, URI.parse(rich_media[:url])) + if is_binary(rich_media["url"]) do + URI.merge(page_url_data, URI.parse(rich_media["url"])) else page_url_data end @@ -386,11 +387,9 @@ def render("card.json", %{rich_media: rich_media, page_url: page_url}) do page_url = page_url_data |> to_string image_url = - if rich_media[:image] != nil do - URI.merge(page_url_data, URI.parse(rich_media[:image])) + if is_binary(rich_media["image"]) do + URI.merge(page_url_data, URI.parse(rich_media["image"])) |> to_string - else - nil end %{ @@ -399,8 +398,8 @@ def render("card.json", %{rich_media: rich_media, page_url: page_url}) do provider_url: page_url_data.scheme <> "://" <> page_url_data.host, url: page_url, image: image_url |> MediaProxy.url(), - title: rich_media[:title] || "", - description: rich_media[:description] || "", + title: rich_media["title"] || "", + description: rich_media["description"] || "", pleroma: %{ opengraph: rich_media } diff --git a/lib/pleroma/web/media_proxy/invalidation.ex b/lib/pleroma/web/media_proxy/invalidation.ex index c037ff13e..5808861e6 100644 --- a/lib/pleroma/web/media_proxy/invalidation.ex +++ b/lib/pleroma/web/media_proxy/invalidation.ex @@ -5,22 +5,34 @@ defmodule Pleroma.Web.MediaProxy.Invalidation do @moduledoc false - @callback purge(list(String.t()), map()) :: {:ok, String.t()} | {:error, String.t()} + @callback purge(list(String.t()), Keyword.t()) :: {:ok, list(String.t())} | {:error, String.t()} alias Pleroma.Config + alias Pleroma.Web.MediaProxy - @spec purge(list(String.t())) :: {:ok, String.t()} | {:error, String.t()} + @spec enabled?() :: boolean() + def enabled?, do: Config.get([:media_proxy, :invalidation, :enabled]) + + @spec purge(list(String.t()) | String.t()) :: {:ok, list(String.t())} | {:error, String.t()} def purge(urls) do - [:media_proxy, :invalidation, :enabled] - |> Config.get() - |> do_purge(urls) + prepared_urls = prepare_urls(urls) + + if enabled?() do + do_purge(prepared_urls) + else + {:ok, prepared_urls} + end end - defp do_purge(true, urls) do + defp do_purge(urls) do provider = Config.get([:media_proxy, :invalidation, :provider]) options = Config.get(provider) provider.purge(urls, options) end - defp do_purge(_, _), do: :ok + def prepare_urls(urls) do + urls + |> List.wrap() + |> Enum.map(&MediaProxy.url/1) + end end diff --git a/lib/pleroma/web/media_proxy/invalidations/http.ex b/lib/pleroma/web/media_proxy/invalidations/http.ex index 07248df6e..bb81d8888 100644 --- a/lib/pleroma/web/media_proxy/invalidations/http.ex +++ b/lib/pleroma/web/media_proxy/invalidations/http.ex @@ -9,10 +9,10 @@ defmodule Pleroma.Web.MediaProxy.Invalidation.Http do require Logger @impl Pleroma.Web.MediaProxy.Invalidation - def purge(urls, opts) do - method = Map.get(opts, :method, :purge) - headers = Map.get(opts, :headers, []) - options = Map.get(opts, :options, []) + def purge(urls, opts \\ []) do + method = Keyword.get(opts, :method, :purge) + headers = Keyword.get(opts, :headers, []) + options = Keyword.get(opts, :options, []) Logger.debug("Running cache purge: #{inspect(urls)}") @@ -22,7 +22,7 @@ def purge(urls, opts) do end end) - {:ok, "success"} + {:ok, urls} end defp do_purge(method, url, headers, options) do diff --git a/lib/pleroma/web/media_proxy/invalidations/script.ex b/lib/pleroma/web/media_proxy/invalidations/script.ex index 6be782132..d32ffc50b 100644 --- a/lib/pleroma/web/media_proxy/invalidations/script.ex +++ b/lib/pleroma/web/media_proxy/invalidations/script.ex @@ -10,32 +10,34 @@ defmodule Pleroma.Web.MediaProxy.Invalidation.Script do require Logger @impl Pleroma.Web.MediaProxy.Invalidation - def purge(urls, %{script_path: script_path} = _options) do + def purge(urls, opts \\ []) do args = urls |> List.wrap() |> Enum.uniq() |> Enum.join(" ") - path = Path.expand(script_path) - - Logger.debug("Running cache purge: #{inspect(urls)}, #{path}") - - case do_purge(path, [args]) do - {result, exit_status} when exit_status > 0 -> - Logger.error("Error while cache purge: #{inspect(result)}") - {:error, inspect(result)} - - _ -> - {:ok, "success"} - end + opts + |> Keyword.get(:script_path) + |> do_purge([args]) + |> handle_result(urls) end - def purge(_, _), do: {:error, "not found script path"} - - defp do_purge(path, args) do + defp do_purge(script_path, args) when is_binary(script_path) do + path = Path.expand(script_path) + Logger.debug("Running cache purge: #{inspect(args)}, #{inspect(path)}") System.cmd(path, args) rescue - error -> {inspect(error), 1} + error -> error + end + + defp do_purge(_, _), do: {:error, "not found script path"} + + defp handle_result({_result, 0}, urls), do: {:ok, urls} + defp handle_result({:error, error}, urls), do: handle_result(error, urls) + + defp handle_result(error, _) do + Logger.error("Error while cache purge: #{inspect(error)}") + {:error, inspect(error)} end end diff --git a/lib/pleroma/web/media_proxy/media_proxy.ex b/lib/pleroma/web/media_proxy/media_proxy.ex index b2b524524..077fabe47 100644 --- a/lib/pleroma/web/media_proxy/media_proxy.ex +++ b/lib/pleroma/web/media_proxy/media_proxy.ex @@ -6,20 +6,53 @@ defmodule Pleroma.Web.MediaProxy do alias Pleroma.Config alias Pleroma.Upload alias Pleroma.Web + alias Pleroma.Web.MediaProxy.Invalidation @base64_opts [padding: false] + @spec in_banned_urls(String.t()) :: boolean() + def in_banned_urls(url), do: elem(Cachex.exists?(:banned_urls_cache, url(url)), 1) + + def remove_from_banned_urls(urls) when is_list(urls) do + Cachex.execute!(:banned_urls_cache, fn cache -> + Enum.each(Invalidation.prepare_urls(urls), &Cachex.del(cache, &1)) + end) + end + + def remove_from_banned_urls(url) when is_binary(url) do + Cachex.del(:banned_urls_cache, url(url)) + end + + def put_in_banned_urls(urls) when is_list(urls) do + Cachex.execute!(:banned_urls_cache, fn cache -> + Enum.each(Invalidation.prepare_urls(urls), &Cachex.put(cache, &1, true)) + end) + end + + def put_in_banned_urls(url) when is_binary(url) do + Cachex.put(:banned_urls_cache, url(url), true) + end + def url(url) when is_nil(url) or url == "", do: nil def url("/" <> _ = url), do: url def url(url) do - if disabled?() or local?(url) or whitelisted?(url) do + if disabled?() or not url_proxiable?(url) do url else encode_url(url) end end + @spec url_proxiable?(String.t()) :: boolean() + def url_proxiable?(url) do + if local?(url) or whitelisted?(url) do + false + else + true + end + end + defp disabled?, do: !Config.get([:media_proxy, :enabled], false) defp local?(url), do: String.starts_with?(url, Pleroma.Web.base_url()) diff --git a/lib/pleroma/web/media_proxy/media_proxy_controller.ex b/lib/pleroma/web/media_proxy/media_proxy_controller.ex index 4657a4383..9a64b0ef3 100644 --- a/lib/pleroma/web/media_proxy/media_proxy_controller.ex +++ b/lib/pleroma/web/media_proxy/media_proxy_controller.ex @@ -14,10 +14,11 @@ def remote(conn, %{"sig" => sig64, "url" => url64} = params) do with config <- Pleroma.Config.get([:media_proxy], []), true <- Keyword.get(config, :enabled, false), {:ok, url} <- MediaProxy.decode_url(sig64, url64), + {_, false} <- {:in_banned_urls, MediaProxy.in_banned_urls(url)}, :ok <- filename_matches(params, conn.request_path, url) do ReverseProxy.call(conn, url, Keyword.get(config, :proxy_opts, @default_proxy_opts)) else - false -> + error when error in [false, {:in_banned_urls, true}] -> send_resp(conn, 404, Plug.Conn.Status.reason_phrase(404)) {:error, :invalid_signature} -> diff --git a/lib/pleroma/web/nodeinfo/nodeinfo.ex b/lib/pleroma/web/nodeinfo/nodeinfo.ex new file mode 100644 index 000000000..47fa46376 --- /dev/null +++ b/lib/pleroma/web/nodeinfo/nodeinfo.ex @@ -0,0 +1,91 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.Nodeinfo.Nodeinfo do + alias Pleroma.Config + alias Pleroma.Stats + alias Pleroma.User + alias Pleroma.Web.Federator.Publisher + alias Pleroma.Web.MastodonAPI.InstanceView + + # returns a nodeinfo 2.0 map, since 2.1 just adds a repository field + # under software. + def get_nodeinfo("2.0") do + stats = Stats.get_stats() + + staff_accounts = + User.all_superusers() + |> Enum.map(fn u -> u.ap_id end) + + federation = InstanceView.federation() + features = InstanceView.features() + + %{ + version: "2.0", + software: %{ + name: Pleroma.Application.name() |> String.downcase(), + version: Pleroma.Application.version() + }, + protocols: Publisher.gather_nodeinfo_protocol_names(), + services: %{ + inbound: [], + outbound: [] + }, + openRegistrations: Config.get([:instance, :registrations_open]), + usage: %{ + users: %{ + total: Map.get(stats, :user_count, 0) + }, + localPosts: Map.get(stats, :status_count, 0) + }, + metadata: %{ + nodeName: Config.get([:instance, :name]), + nodeDescription: Config.get([:instance, :description]), + private: !Config.get([:instance, :public], true), + suggestions: %{ + enabled: false + }, + staffAccounts: staff_accounts, + federation: federation, + pollLimits: Config.get([:instance, :poll_limits]), + postFormats: Config.get([:instance, :allowed_post_formats]), + uploadLimits: %{ + general: Config.get([:instance, :upload_limit]), + avatar: Config.get([:instance, :avatar_upload_limit]), + banner: Config.get([:instance, :banner_upload_limit]), + background: Config.get([:instance, :background_upload_limit]) + }, + fieldsLimits: %{ + maxFields: Config.get([:instance, :max_account_fields]), + maxRemoteFields: Config.get([:instance, :max_remote_account_fields]), + nameLength: Config.get([:instance, :account_field_name_length]), + valueLength: Config.get([:instance, :account_field_value_length]) + }, + accountActivationRequired: Config.get([:instance, :account_activation_required], false), + invitesEnabled: Config.get([:instance, :invites_enabled], false), + mailerEnabled: Config.get([Pleroma.Emails.Mailer, :enabled], false), + features: features, + restrictedNicknames: Config.get([Pleroma.User, :restricted_nicknames]), + skipThreadContainment: Config.get([:instance, :skip_thread_containment], false) + } + } + end + + def get_nodeinfo("2.1") do + raw_response = get_nodeinfo("2.0") + + updated_software = + raw_response + |> Map.get(:software) + |> Map.put(:repository, Pleroma.Application.repository()) + + raw_response + |> Map.put(:software, updated_software) + |> Map.put(:version, "2.1") + end + + def get_nodeinfo(_version) do + {:error, :missing} + end +end diff --git a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex index 721b599d4..8c7a9e565 100644 --- a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex +++ b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex @@ -5,12 +5,8 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do use Pleroma.Web, :controller - alias Pleroma.Config - alias Pleroma.Stats - alias Pleroma.User alias Pleroma.Web - alias Pleroma.Web.Federator.Publisher - alias Pleroma.Web.MastodonAPI.InstanceView + alias Pleroma.Web.Nodeinfo.Nodeinfo def schemas(conn, _params) do response = %{ @@ -29,102 +25,20 @@ def schemas(conn, _params) do json(conn, response) end - # returns a nodeinfo 2.0 map, since 2.1 just adds a repository field - # under software. - def raw_nodeinfo do - stats = Stats.get_stats() - - staff_accounts = - User.all_superusers() - |> Enum.map(fn u -> u.ap_id end) - - features = InstanceView.features() - federation = InstanceView.federation() - - %{ - version: "2.0", - software: %{ - name: Pleroma.Application.name() |> String.downcase(), - version: Pleroma.Application.version() - }, - protocols: Publisher.gather_nodeinfo_protocol_names(), - services: %{ - inbound: [], - outbound: [] - }, - openRegistrations: Config.get([:instance, :registrations_open]), - usage: %{ - users: %{ - total: Map.get(stats, :user_count, 0) - }, - localPosts: Map.get(stats, :status_count, 0) - }, - metadata: %{ - nodeName: Config.get([:instance, :name]), - nodeDescription: Config.get([:instance, :description]), - private: !Config.get([:instance, :public], true), - suggestions: %{ - enabled: false - }, - staffAccounts: staff_accounts, - federation: federation, - pollLimits: Config.get([:instance, :poll_limits]), - postFormats: Config.get([:instance, :allowed_post_formats]), - uploadLimits: %{ - general: Config.get([:instance, :upload_limit]), - avatar: Config.get([:instance, :avatar_upload_limit]), - banner: Config.get([:instance, :banner_upload_limit]), - background: Config.get([:instance, :background_upload_limit]) - }, - fieldsLimits: %{ - maxFields: Config.get([:instance, :max_account_fields]), - maxRemoteFields: Config.get([:instance, :max_remote_account_fields]), - nameLength: Config.get([:instance, :account_field_name_length]), - valueLength: Config.get([:instance, :account_field_value_length]) - }, - accountActivationRequired: Config.get([:instance, :account_activation_required], false), - invitesEnabled: Config.get([:instance, :invites_enabled], false), - mailerEnabled: Config.get([Pleroma.Emails.Mailer, :enabled], false), - features: features, - restrictedNicknames: Config.get([Pleroma.User, :restricted_nicknames]), - skipThreadContainment: Config.get([:instance, :skip_thread_containment], false) - } - } - end - # Schema definition: https://github.com/jhass/nodeinfo/blob/master/schemas/2.0/schema.json # and https://github.com/jhass/nodeinfo/blob/master/schemas/2.1/schema.json - def nodeinfo(conn, %{"version" => "2.0"}) do - conn - |> put_resp_header( - "content-type", - "application/json; profile=http://nodeinfo.diaspora.software/ns/schema/2.0#; charset=utf-8" - ) - |> json(raw_nodeinfo()) - end + def nodeinfo(conn, %{"version" => version}) do + case Nodeinfo.get_nodeinfo(version) do + {:error, :missing} -> + render_error(conn, :not_found, "Nodeinfo schema version not handled") - def nodeinfo(conn, %{"version" => "2.1"}) do - raw_response = raw_nodeinfo() - - updated_software = - raw_response - |> Map.get(:software) - |> Map.put(:repository, Pleroma.Application.repository()) - - response = - raw_response - |> Map.put(:software, updated_software) - |> Map.put(:version, "2.1") - - conn - |> put_resp_header( - "content-type", - "application/json; profile=http://nodeinfo.diaspora.software/ns/schema/2.1#; charset=utf-8" - ) - |> json(response) - end - - def nodeinfo(conn, _) do - render_error(conn, :not_found, "Nodeinfo schema version not handled") + node_info -> + conn + |> put_resp_header( + "content-type", + "application/json; profile=http://nodeinfo.diaspora.software/ns/schema/2.0#; charset=utf-8" + ) + |> json(node_info) + end end end diff --git a/lib/pleroma/web/oauth/app.ex b/lib/pleroma/web/oauth/app.ex index 6a6d5f2e2..df99472e1 100644 --- a/lib/pleroma/web/oauth/app.ex +++ b/lib/pleroma/web/oauth/app.ex @@ -25,12 +25,12 @@ defmodule Pleroma.Web.OAuth.App do timestamps() end - @spec changeset(App.t(), map()) :: Ecto.Changeset.t() + @spec changeset(t(), map()) :: Ecto.Changeset.t() def changeset(struct, params) do cast(struct, params, [:client_name, :redirect_uris, :scopes, :website, :trusted]) end - @spec register_changeset(App.t(), map()) :: Ecto.Changeset.t() + @spec register_changeset(t(), map()) :: Ecto.Changeset.t() def register_changeset(struct, params \\ %{}) do changeset = struct @@ -52,18 +52,19 @@ def register_changeset(struct, params \\ %{}) do end end - @spec create(map()) :: {:ok, App.t()} | {:error, Ecto.Changeset.t()} + @spec create(map()) :: {:ok, t()} | {:error, Ecto.Changeset.t()} def create(params) do - with changeset <- __MODULE__.register_changeset(%__MODULE__{}, params) do - Repo.insert(changeset) - end + %__MODULE__{} + |> register_changeset(params) + |> Repo.insert() end - @spec update(map()) :: {:ok, App.t()} | {:error, Ecto.Changeset.t()} - def update(params) do - with %__MODULE__{} = app <- Repo.get(__MODULE__, params["id"]), - changeset <- changeset(app, params) do - Repo.update(changeset) + @spec update(pos_integer(), map()) :: {:ok, t()} | {:error, Ecto.Changeset.t()} + def update(id, params) do + with %__MODULE__{} = app <- Repo.get(__MODULE__, id) do + app + |> changeset(params) + |> Repo.update() end end @@ -71,7 +72,7 @@ def update(params) do Gets app by attrs or create new with attrs. And updates the scopes if need. """ - @spec get_or_make(map(), list(String.t())) :: {:ok, App.t()} | {:error, Ecto.Changeset.t()} + @spec get_or_make(map(), list(String.t())) :: {:ok, t()} | {:error, Ecto.Changeset.t()} def get_or_make(attrs, scopes) do with %__MODULE__{} = app <- Repo.get_by(__MODULE__, attrs) do update_scopes(app, scopes) @@ -92,7 +93,7 @@ defp update_scopes(%__MODULE__{} = app, scopes) do |> Repo.update() end - @spec search(map()) :: {:ok, [App.t()], non_neg_integer()} + @spec search(map()) :: {:ok, [t()], non_neg_integer()} def search(params) do query = from(a in __MODULE__) @@ -128,7 +129,7 @@ def search(params) do {:ok, Repo.all(query), count} end - @spec destroy(pos_integer()) :: {:ok, App.t()} | {:error, Ecto.Changeset.t()} + @spec destroy(pos_integer()) :: {:ok, t()} | {:error, Ecto.Changeset.t()} def destroy(id) do with %__MODULE__{} = app <- Repo.get(__MODULE__, id) do Repo.delete(app) diff --git a/lib/pleroma/web/oauth/oauth_controller.ex b/lib/pleroma/web/oauth/oauth_controller.ex index 7c804233c..c557778ca 100644 --- a/lib/pleroma/web/oauth/oauth_controller.ex +++ b/lib/pleroma/web/oauth/oauth_controller.ex @@ -6,6 +6,7 @@ defmodule Pleroma.Web.OAuth.OAuthController do use Pleroma.Web, :controller alias Pleroma.Helpers.UriHelper + alias Pleroma.Maps alias Pleroma.MFA alias Pleroma.Plugs.RateLimiter alias Pleroma.Registration @@ -108,7 +109,7 @@ defp handle_existing_authorization( if redirect_uri in String.split(app.redirect_uris) do redirect_uri = redirect_uri(conn, redirect_uri) url_params = %{access_token: token.token} - url_params = UriHelper.append_param_if_present(url_params, :state, params["state"]) + url_params = Maps.put_if_present(url_params, :state, params["state"]) url = UriHelper.append_uri_params(redirect_uri, url_params) redirect(conn, external: url) else @@ -147,7 +148,7 @@ def after_create_authorization(%Plug.Conn{} = conn, %Authorization{} = auth, %{ if redirect_uri in String.split(app.redirect_uris) do redirect_uri = redirect_uri(conn, redirect_uri) url_params = %{code: auth.token} - url_params = UriHelper.append_param_if_present(url_params, :state, auth_attrs["state"]) + url_params = Maps.put_if_present(url_params, :state, auth_attrs["state"]) url = UriHelper.append_uri_params(redirect_uri, url_params) redirect(conn, external: url) else diff --git a/lib/pleroma/web/pleroma_api/controllers/account_controller.ex b/lib/pleroma/web/pleroma_api/controllers/account_controller.ex index 0a3f45620..f3554d919 100644 --- a/lib/pleroma/web/pleroma_api/controllers/account_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/account_controller.ex @@ -126,10 +126,9 @@ def favourites(%{assigns: %{account: %{hide_favorites: true}}} = conn, _params) def favourites(%{assigns: %{user: for_user, account: user}} = conn, params) do params = params - |> Map.new(fn {key, value} -> {to_string(key), value} end) - |> Map.put("type", "Create") - |> Map.put("favorited_by", user.ap_id) - |> Map.put("blocking_user", for_user) + |> Map.put(:type, "Create") + |> Map.put(:favorited_by, user.ap_id) + |> Map.put(:blocking_user, for_user) recipients = if for_user do diff --git a/lib/pleroma/web/pleroma_api/controllers/chat_controller.ex b/lib/pleroma/web/pleroma_api/controllers/chat_controller.ex new file mode 100644 index 000000000..c8ef3d915 --- /dev/null +++ b/lib/pleroma/web/pleroma_api/controllers/chat_controller.ex @@ -0,0 +1,174 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only +defmodule Pleroma.Web.PleromaAPI.ChatController do + use Pleroma.Web, :controller + + alias Pleroma.Activity + alias Pleroma.Chat + alias Pleroma.Chat.MessageReference + alias Pleroma.Object + alias Pleroma.Pagination + alias Pleroma.Plugs.OAuthScopesPlug + alias Pleroma.Repo + alias Pleroma.User + alias Pleroma.Web.CommonAPI + alias Pleroma.Web.PleromaAPI.Chat.MessageReferenceView + alias Pleroma.Web.PleromaAPI.ChatView + + import Ecto.Query + + action_fallback(Pleroma.Web.MastodonAPI.FallbackController) + + plug( + OAuthScopesPlug, + %{scopes: ["write:chats"]} + when action in [ + :post_chat_message, + :create, + :mark_as_read, + :mark_message_as_read, + :delete_message + ] + ) + + plug( + OAuthScopesPlug, + %{scopes: ["read:chats"]} when action in [:messages, :index, :show] + ) + + plug(OpenApiSpex.Plug.CastAndValidate, render_error: Pleroma.Web.ApiSpec.RenderError) + + defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.ChatOperation + + def delete_message(%{assigns: %{user: %{id: user_id} = user}} = conn, %{ + message_id: message_id, + id: chat_id + }) do + with %MessageReference{} = cm_ref <- + MessageReference.get_by_id(message_id), + ^chat_id <- cm_ref.chat_id |> to_string(), + %Chat{user_id: ^user_id} <- Chat.get_by_id(chat_id), + {:ok, _} <- remove_or_delete(cm_ref, user) do + conn + |> put_view(MessageReferenceView) + |> render("show.json", chat_message_reference: cm_ref) + else + _e -> + {:error, :could_not_delete} + end + end + + defp remove_or_delete( + %{object: %{data: %{"actor" => actor, "id" => id}}}, + %{ap_id: actor} = user + ) do + with %Activity{} = activity <- Activity.get_create_by_object_ap_id(id) do + CommonAPI.delete(activity.id, user) + end + end + + defp remove_or_delete(cm_ref, _) do + cm_ref + |> MessageReference.delete() + end + + def post_chat_message( + %{body_params: params, assigns: %{user: %{id: user_id} = user}} = conn, + %{ + id: id + } + ) do + with %Chat{} = chat <- Repo.get_by(Chat, id: id, user_id: user_id), + %User{} = recipient <- User.get_cached_by_ap_id(chat.recipient), + {:ok, activity} <- + CommonAPI.post_chat_message(user, recipient, params[:content], + media_id: params[:media_id] + ), + message <- Object.normalize(activity, false), + cm_ref <- MessageReference.for_chat_and_object(chat, message) do + conn + |> put_view(MessageReferenceView) + |> render("show.json", for: user, chat_message_reference: cm_ref) + end + end + + def mark_message_as_read(%{assigns: %{user: %{id: user_id} = user}} = conn, %{ + id: chat_id, + message_id: message_id + }) do + with %MessageReference{} = cm_ref <- + MessageReference.get_by_id(message_id), + ^chat_id <- cm_ref.chat_id |> to_string(), + %Chat{user_id: ^user_id} <- Chat.get_by_id(chat_id), + {:ok, cm_ref} <- MessageReference.mark_as_read(cm_ref) do + conn + |> put_view(MessageReferenceView) + |> render("show.json", for: user, chat_message_reference: cm_ref) + end + end + + def mark_as_read( + %{body_params: %{last_read_id: last_read_id}, assigns: %{user: %{id: user_id}}} = conn, + %{id: id} + ) do + with %Chat{} = chat <- Repo.get_by(Chat, id: id, user_id: user_id), + {_n, _} <- + MessageReference.set_all_seen_for_chat(chat, last_read_id) do + conn + |> put_view(ChatView) + |> render("show.json", chat: chat) + end + end + + def messages(%{assigns: %{user: %{id: user_id} = user}} = conn, %{id: id} = params) do + with %Chat{} = chat <- Repo.get_by(Chat, id: id, user_id: user_id) do + cm_refs = + chat + |> MessageReference.for_chat_query() + |> Pagination.fetch_paginated(params) + + conn + |> put_view(MessageReferenceView) + |> render("index.json", for: user, chat_message_references: cm_refs) + else + _ -> + conn + |> put_status(:not_found) + |> json(%{error: "not found"}) + end + end + + def index(%{assigns: %{user: %{id: user_id} = user}} = conn, _params) do + blocked_ap_ids = User.blocked_users_ap_ids(user) + + chats = + from(c in Chat, + where: c.user_id == ^user_id, + where: c.recipient not in ^blocked_ap_ids, + order_by: [desc: c.updated_at] + ) + |> Repo.all() + + conn + |> put_view(ChatView) + |> render("index.json", chats: chats) + end + + def create(%{assigns: %{user: user}} = conn, params) do + with %User{ap_id: recipient} <- User.get_by_id(params[:id]), + {:ok, %Chat{} = chat} <- Chat.get_or_create(user.id, recipient) do + conn + |> put_view(ChatView) + |> render("show.json", chat: chat) + end + end + + def show(%{assigns: %{user: user}} = conn, params) do + with %Chat{} = chat <- Repo.get_by(Chat, user_id: user.id, id: params[:id]) do + conn + |> put_view(ChatView) + |> render("show.json", chat: chat) + end + end +end diff --git a/lib/pleroma/web/pleroma_api/controllers/conversation_controller.ex b/lib/pleroma/web/pleroma_api/controllers/conversation_controller.ex index 21d5eb8d5..3d007f324 100644 --- a/lib/pleroma/web/pleroma_api/controllers/conversation_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/conversation_controller.ex @@ -42,15 +42,14 @@ def statuses( Participation.get(participation_id, preload: [:conversation]) do params = params - |> Map.new(fn {key, value} -> {to_string(key), value} end) - |> Map.put("blocking_user", user) - |> Map.put("muting_user", user) - |> Map.put("user", user) + |> Map.put(:blocking_user, user) + |> Map.put(:muting_user, user) + |> Map.put(:user, user) activities = participation.conversation.ap_id |> ActivityPub.fetch_activities_for_context_query(params) - |> Pleroma.Pagination.fetch_paginated(Map.put(params, "total", false)) + |> Pleroma.Pagination.fetch_paginated(Map.put(params, :total, false)) |> Enum.reverse() conn diff --git a/lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex b/lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex index d1efdeb5d..33ecd1f70 100644 --- a/lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex @@ -37,14 +37,14 @@ def remote(conn, %{url: url}) do end end - def index(conn, _params) do + def index(conn, params) do emoji_path = [:instance, :static_dir] |> Pleroma.Config.get!() |> Path.join("emoji") - with {:ok, packs} <- Pack.list_local() do - json(conn, packs) + with {:ok, packs, count} <- Pack.list_local(page: params.page, page_size: params.page_size) do + json(conn, %{packs: packs, count: count}) else {:error, :create_dir, e} -> conn @@ -60,10 +60,10 @@ def index(conn, _params) do end end - def show(conn, %{name: name}) do + def show(conn, %{name: name, page: page, page_size: page_size}) do name = String.trim(name) - with {:ok, pack} <- Pack.show(name) do + with {:ok, pack} <- Pack.show(name: name, page: page, page_size: page_size) do json(conn, pack) else {:error, :not_found} -> diff --git a/lib/pleroma/web/pleroma_api/controllers/scrobble_controller.ex b/lib/pleroma/web/pleroma_api/controllers/scrobble_controller.ex index 8665ca56c..e9a4fba92 100644 --- a/lib/pleroma/web/pleroma_api/controllers/scrobble_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/scrobble_controller.ex @@ -36,10 +36,7 @@ def create(%{assigns: %{user: user}, body_params: params} = conn, _) do def index(%{assigns: %{user: reading_user}} = conn, %{id: id} = params) do with %User{} = user <- User.get_cached_by_nickname_or_id(id, for: reading_user) do - params = - params - |> Map.new(fn {key, value} -> {to_string(key), value} end) - |> Map.put("type", ["Listen"]) + params = Map.put(params, :type, ["Listen"]) activities = ActivityPub.fetch_user_abstract_activities(user, reading_user, params) diff --git a/lib/pleroma/web/pleroma_api/views/chat/message_reference_view.ex b/lib/pleroma/web/pleroma_api/views/chat/message_reference_view.ex new file mode 100644 index 000000000..f2112a86e --- /dev/null +++ b/lib/pleroma/web/pleroma_api/views/chat/message_reference_view.ex @@ -0,0 +1,45 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.PleromaAPI.Chat.MessageReferenceView do + use Pleroma.Web, :view + + alias Pleroma.User + alias Pleroma.Web.CommonAPI.Utils + alias Pleroma.Web.MastodonAPI.StatusView + + def render( + "show.json", + %{ + chat_message_reference: %{ + id: id, + object: %{data: chat_message}, + chat_id: chat_id, + unread: unread + } + } + ) do + %{ + id: id |> to_string(), + content: chat_message["content"], + chat_id: chat_id |> to_string(), + account_id: User.get_cached_by_ap_id(chat_message["actor"]).id, + created_at: Utils.to_masto_date(chat_message["published"]), + emojis: StatusView.build_emojis(chat_message["emoji"]), + attachment: + chat_message["attachment"] && + StatusView.render("attachment.json", attachment: chat_message["attachment"]), + unread: unread + } + end + + def render("index.json", opts) do + render_many( + opts[:chat_message_references], + __MODULE__, + "show.json", + Map.put(opts, :as, :chat_message_reference) + ) + end +end diff --git a/lib/pleroma/web/pleroma_api/views/chat_view.ex b/lib/pleroma/web/pleroma_api/views/chat_view.ex new file mode 100644 index 000000000..1c996da11 --- /dev/null +++ b/lib/pleroma/web/pleroma_api/views/chat_view.ex @@ -0,0 +1,33 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.PleromaAPI.ChatView do + use Pleroma.Web, :view + + alias Pleroma.Chat + alias Pleroma.Chat.MessageReference + alias Pleroma.User + alias Pleroma.Web.CommonAPI.Utils + alias Pleroma.Web.MastodonAPI.AccountView + alias Pleroma.Web.PleromaAPI.Chat.MessageReferenceView + + def render("show.json", %{chat: %Chat{} = chat} = opts) do + recipient = User.get_cached_by_ap_id(chat.recipient) + last_message = opts[:last_message] || MessageReference.last_message_for_chat(chat) + + %{ + id: chat.id |> to_string(), + account: AccountView.render("show.json", Map.put(opts, :user, recipient)), + unread: MessageReference.unread_count_for_chat(chat), + last_message: + last_message && + MessageReferenceView.render("show.json", chat_message_reference: last_message), + updated_at: Utils.to_masto_date(chat.updated_at) + } + end + + def render("index.json", %{chats: chats}) do + render_many(chats, __MODULE__, "show.json") + end +end diff --git a/lib/pleroma/web/preload.ex b/lib/pleroma/web/preload.ex new file mode 100644 index 000000000..90e454468 --- /dev/null +++ b/lib/pleroma/web/preload.ex @@ -0,0 +1,36 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.Preload do + alias Phoenix.HTML + require Logger + + def build_tags(_conn, params) do + preload_data = + Enum.reduce(Pleroma.Config.get([__MODULE__, :providers], []), %{}, fn parser, acc -> + terms = + params + |> parser.generate_terms() + |> Enum.map(fn {k, v} -> {k, Base.encode64(Jason.encode!(v))} end) + |> Enum.into(%{}) + + Map.merge(acc, terms) + end) + + rendered_html = + preload_data + |> Jason.encode!() + |> build_script_tag() + |> HTML.safe_to_string() + + rendered_html + end + + def build_script_tag(content) do + HTML.Tag.content_tag(:script, HTML.raw(content), + id: "initial-results", + type: "application/json" + ) + end +end diff --git a/lib/pleroma/web/preload/instance.ex b/lib/pleroma/web/preload/instance.ex new file mode 100644 index 000000000..50d1f3382 --- /dev/null +++ b/lib/pleroma/web/preload/instance.ex @@ -0,0 +1,50 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.Preload.Providers.Instance do + alias Pleroma.Plugs.InstanceStatic + alias Pleroma.Web.MastodonAPI.InstanceView + alias Pleroma.Web.Nodeinfo.Nodeinfo + alias Pleroma.Web.Preload.Providers.Provider + + @behaviour Provider + @instance_url "/api/v1/instance" + @panel_url "/instance/panel.html" + @nodeinfo_url "/nodeinfo/2.0.json" + + @impl Provider + def generate_terms(_params) do + %{} + |> build_info_tag() + |> build_panel_tag() + |> build_nodeinfo_tag() + end + + defp build_info_tag(acc) do + info_data = InstanceView.render("show.json", %{}) + + Map.put(acc, @instance_url, info_data) + end + + defp build_panel_tag(acc) do + instance_path = InstanceStatic.file_path(@panel_url |> to_string()) + + if File.exists?(instance_path) do + panel_data = File.read!(instance_path) + Map.put(acc, @panel_url, panel_data) + else + acc + end + end + + defp build_nodeinfo_tag(acc) do + case Nodeinfo.get_nodeinfo("2.0") do + {:error, _} -> + acc + + nodeinfo_data -> + Map.put(acc, @nodeinfo_url, nodeinfo_data) + end + end +end diff --git a/lib/pleroma/web/preload/provider.ex b/lib/pleroma/web/preload/provider.ex new file mode 100644 index 000000000..7ef595a34 --- /dev/null +++ b/lib/pleroma/web/preload/provider.ex @@ -0,0 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.Preload.Providers.Provider do + @callback generate_terms(map()) :: map() +end diff --git a/lib/pleroma/web/preload/status_net.ex b/lib/pleroma/web/preload/status_net.ex new file mode 100644 index 000000000..9b62f87a2 --- /dev/null +++ b/lib/pleroma/web/preload/status_net.ex @@ -0,0 +1,25 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.Preload.Providers.StatusNet do + alias Pleroma.Web.Preload.Providers.Provider + alias Pleroma.Web.TwitterAPI.UtilController + + @behaviour Provider + @config_url "/api/statusnet/config.json" + + @impl Provider + def generate_terms(_params) do + %{} + |> build_config_tag() + end + + defp build_config_tag(acc) do + resp = + Plug.Test.conn(:get, @config_url |> to_string()) + |> UtilController.config(nil) + + Map.put(acc, @config_url, resp.resp_body) + end +end diff --git a/lib/pleroma/web/preload/timelines.ex b/lib/pleroma/web/preload/timelines.ex new file mode 100644 index 000000000..57de04051 --- /dev/null +++ b/lib/pleroma/web/preload/timelines.ex @@ -0,0 +1,39 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.Preload.Providers.Timelines do + alias Pleroma.Web.ActivityPub.ActivityPub + alias Pleroma.Web.MastodonAPI.StatusView + alias Pleroma.Web.Preload.Providers.Provider + + @behaviour Provider + @public_url "/api/v1/timelines/public" + + @impl Provider + def generate_terms(params) do + build_public_tag(%{}, params) + end + + def build_public_tag(acc, params) do + if Pleroma.Config.get([:restrict_unauthenticated, :timelines, :federated], true) do + acc + else + Map.put(acc, @public_url, public_timeline(params)) + end + end + + defp public_timeline(%{"path" => ["main", "all"]}), do: get_public_timeline(false) + + defp public_timeline(_params), do: get_public_timeline(true) + + defp get_public_timeline(local_only) do + activities = + ActivityPub.fetch_public_activities(%{ + type: ["Create"], + local_only: local_only + }) + + StatusView.render("index.json", activities: activities, for: nil, as: :activity) + end +end diff --git a/lib/pleroma/web/preload/user.ex b/lib/pleroma/web/preload/user.ex new file mode 100644 index 000000000..b3d2e9b8d --- /dev/null +++ b/lib/pleroma/web/preload/user.ex @@ -0,0 +1,26 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.Preload.Providers.User do + alias Pleroma.User + alias Pleroma.Web.MastodonAPI.AccountView + alias Pleroma.Web.Preload.Providers.Provider + + @behaviour Provider + @account_url_base "/api/v1/accounts" + + @impl Provider + def generate_terms(%{user: user}) do + build_accounts_tag(%{}, user) + end + + def generate_terms(_params), do: %{} + + def build_accounts_tag(acc, %User{} = user) do + account_data = AccountView.render("show.json", %{user: user, for: user}) + Map.put(acc, "#{@account_url_base}/#{user.id}", account_data) + end + + def build_accounts_tag(acc, _), do: acc +end diff --git a/lib/pleroma/web/push/impl.ex b/lib/pleroma/web/push/impl.ex index 691725702..cdb827e76 100644 --- a/lib/pleroma/web/push/impl.ex +++ b/lib/pleroma/web/push/impl.ex @@ -16,8 +16,6 @@ defmodule Pleroma.Web.Push.Impl do require Logger import Ecto.Query - defdelegate mastodon_notification_type(activity), to: Activity - @types ["Create", "Follow", "Announce", "Like", "Move"] @doc "Performs sending notifications for user subscriptions" @@ -31,10 +29,10 @@ def perform( when activity_type in @types do actor = User.get_cached_by_ap_id(notification.activity.data["actor"]) - mastodon_type = mastodon_notification_type(notification.activity) + mastodon_type = notification.type gcm_api_key = Application.get_env(:web_push_encryption, :gcm_api_key) avatar_url = User.avatar_url(actor) - object = Object.normalize(activity) + object = Object.normalize(activity, false) user = User.get_cached_by_id(user_id) direct_conversation_id = Activity.direct_conversation_id(activity, user) @@ -116,7 +114,7 @@ def build_content( end def build_content(notification, actor, object, mastodon_type) do - mastodon_type = mastodon_type || mastodon_notification_type(notification.activity) + mastodon_type = mastodon_type || notification.type %{ title: format_title(notification, mastodon_type), @@ -126,6 +124,13 @@ def build_content(notification, actor, object, mastodon_type) do def format_body(activity, actor, object, mastodon_type \\ nil) + def format_body(_activity, actor, %{data: %{"type" => "ChatMessage", "content" => content}}, _) do + case content do + nil -> "@#{actor.nickname}: (Attachment)" + content -> "@#{actor.nickname}: #{Utils.scrub_html_and_truncate(content, 80)}" + end + end + def format_body( %{activity: %{data: %{"type" => "Create"}}}, actor, @@ -151,7 +156,7 @@ def format_body( mastodon_type ) when type in ["Follow", "Like"] do - mastodon_type = mastodon_type || mastodon_notification_type(notification.activity) + mastodon_type = mastodon_type || notification.type case mastodon_type do "follow" -> "@#{actor.nickname} has followed you" @@ -166,15 +171,14 @@ def format_title(%{activity: %{data: %{"directMessage" => true}}}, _mastodon_typ "New Direct Message" end - def format_title(%{activity: activity}, mastodon_type) do - mastodon_type = mastodon_type || mastodon_notification_type(activity) - - case mastodon_type do + def format_title(%{type: type}, mastodon_type) do + case mastodon_type || type do "mention" -> "New Mention" "follow" -> "New Follower" "follow_request" -> "New Follow Request" "reblog" -> "New Repeat" "favourite" -> "New Favorite" + "pleroma:chat_mention" -> "New Chat Message" type -> "New #{String.capitalize(type || "event")}" end end diff --git a/lib/pleroma/web/push/subscription.ex b/lib/pleroma/web/push/subscription.ex index 3e401a490..5b5aa0d59 100644 --- a/lib/pleroma/web/push/subscription.ex +++ b/lib/pleroma/web/push/subscription.ex @@ -25,7 +25,7 @@ defmodule Pleroma.Web.Push.Subscription do timestamps() end - @supported_alert_types ~w[follow favourite mention reblog]a + @supported_alert_types ~w[follow favourite mention reblog pleroma:chat_mention]a defp alerts(%{data: %{alerts: alerts}}) do alerts = Map.take(alerts, @supported_alert_types) diff --git a/lib/pleroma/web/rich_media/helpers.ex b/lib/pleroma/web/rich_media/helpers.ex index 9d3d7f978..1729141e9 100644 --- a/lib/pleroma/web/rich_media/helpers.ex +++ b/lib/pleroma/web/rich_media/helpers.ex @@ -9,7 +9,7 @@ defmodule Pleroma.Web.RichMedia.Helpers do alias Pleroma.Object alias Pleroma.Web.RichMedia.Parser - @spec validate_page_url(any()) :: :ok | :error + @spec validate_page_url(URI.t() | binary()) :: :ok | :error defp validate_page_url(page_url) when is_binary(page_url) do validate_tld = Application.get_env(:auto_linker, :opts)[:validate_tld] @@ -18,8 +18,8 @@ defp validate_page_url(page_url) when is_binary(page_url) do |> parse_uri(page_url) end - defp validate_page_url(%URI{host: host, scheme: scheme, authority: authority}) - when scheme == "https" and not is_nil(authority) do + defp validate_page_url(%URI{host: host, scheme: "https", authority: authority}) + when is_binary(authority) do cond do host in Config.get([:rich_media, :ignore_hosts], []) -> :error diff --git a/lib/pleroma/web/rich_media/parser.ex b/lib/pleroma/web/rich_media/parser.ex index 40980def8..ef5ead2da 100644 --- a/lib/pleroma/web/rich_media/parser.ex +++ b/lib/pleroma/web/rich_media/parser.ex @@ -91,7 +91,7 @@ defp parse_url(url) do html |> parse_html() |> maybe_parse() - |> Map.put(:url, url) + |> Map.put("url", url) |> clean_parsed_data() |> check_parsed_data() rescue @@ -105,14 +105,14 @@ defp parse_html(html), do: Floki.parse_document!(html) defp maybe_parse(html) do Enum.reduce_while(parsers(), %{}, fn parser, acc -> case parser.parse(html, acc) do - {:ok, data} -> {:halt, data} - {:error, _msg} -> {:cont, acc} + data when data != %{} -> {:halt, data} + _ -> {:cont, acc} end end) end - defp check_parsed_data(%{title: title} = data) - when is_binary(title) and byte_size(title) > 0 do + defp check_parsed_data(%{"title" => title} = data) + when is_binary(title) and title != "" do {:ok, data} end @@ -123,11 +123,7 @@ defp check_parsed_data(data) do defp clean_parsed_data(data) do data |> Enum.reject(fn {key, val} -> - with {:ok, _} <- Jason.encode(%{key => val}) do - false - else - _ -> true - end + not match?({:ok, _}, Jason.encode(%{key => val})) end) |> Map.new() end diff --git a/lib/pleroma/web/rich_media/parsers/meta_tags_parser.ex b/lib/pleroma/web/rich_media/parsers/meta_tags_parser.ex index ae0f36702..3d577e254 100644 --- a/lib/pleroma/web/rich_media/parsers/meta_tags_parser.ex +++ b/lib/pleroma/web/rich_media/parsers/meta_tags_parser.ex @@ -3,22 +3,15 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.RichMedia.Parsers.MetaTagsParser do - def parse(html, data, prefix, error_message, key_name, value_name \\ "content") do - meta_data = - html - |> get_elements(key_name, prefix) - |> Enum.reduce(data, fn el, acc -> - attributes = normalize_attributes(el, prefix, key_name, value_name) + def parse(data, html, prefix, key_name, value_name \\ "content") do + html + |> get_elements(key_name, prefix) + |> Enum.reduce(data, fn el, acc -> + attributes = normalize_attributes(el, prefix, key_name, value_name) - Map.merge(acc, attributes) - end) - |> maybe_put_title(html) - - if Enum.empty?(meta_data) do - {:error, error_message} - else - {:ok, meta_data} - end + Map.merge(acc, attributes) + end) + |> maybe_put_title(html) end defp get_elements(html, key_name, prefix) do @@ -29,19 +22,19 @@ defp normalize_attributes(html_node, prefix, key_name, value_name) do {_tag, attributes, _children} = html_node data = - Enum.into(attributes, %{}, fn {name, value} -> + Map.new(attributes, fn {name, value} -> {name, String.trim_leading(value, "#{prefix}:")} end) - %{String.to_atom(data[key_name]) => data[value_name]} + %{data[key_name] => data[value_name]} end - defp maybe_put_title(%{title: _} = meta, _), do: meta + defp maybe_put_title(%{"title" => _} = meta, _), do: meta defp maybe_put_title(meta, html) when meta != %{} do case get_page_title(html) do "" -> meta - title -> Map.put_new(meta, :title, title) + title -> Map.put_new(meta, "title", title) end end diff --git a/lib/pleroma/web/rich_media/parsers/oembed_parser.ex b/lib/pleroma/web/rich_media/parsers/oembed_parser.ex index 8f32bf91b..6bdeac89c 100644 --- a/lib/pleroma/web/rich_media/parsers/oembed_parser.ex +++ b/lib/pleroma/web/rich_media/parsers/oembed_parser.ex @@ -5,11 +5,11 @@ defmodule Pleroma.Web.RichMedia.Parsers.OEmbed do def parse(html, _data) do with elements = [_ | _] <- get_discovery_data(html), - {:ok, oembed_url} <- get_oembed_url(elements), + oembed_url when is_binary(oembed_url) <- get_oembed_url(elements), {:ok, oembed_data} <- get_oembed_data(oembed_url) do - {:ok, oembed_data} + oembed_data else - _e -> {:error, "No OEmbed data found"} + _e -> %{} end end @@ -17,19 +17,13 @@ defp get_discovery_data(html) do html |> Floki.find("link[type='application/json+oembed']") end - defp get_oembed_url(nodes) do - {"link", attributes, _children} = nodes |> hd() - - {:ok, Enum.into(attributes, %{})["href"]} + defp get_oembed_url([{"link", attributes, _children} | _]) do + Enum.find_value(attributes, fn {k, v} -> if k == "href", do: v end) end defp get_oembed_data(url) do - {:ok, %Tesla.Env{body: json}} = Pleroma.HTTP.get(url, [], adapter: [pool: :media]) - - {:ok, data} = Jason.decode(json) - - data = data |> Map.new(fn {k, v} -> {String.to_atom(k), v} end) - - {:ok, data} + with {:ok, %Tesla.Env{body: json}} <- Pleroma.HTTP.get(url, [], adapter: [pool: :media]) do + Jason.decode(json) + end end end diff --git a/lib/pleroma/web/rich_media/parsers/ogp.ex b/lib/pleroma/web/rich_media/parsers/ogp.ex index 3e9012588..b3b3b059c 100644 --- a/lib/pleroma/web/rich_media/parsers/ogp.ex +++ b/lib/pleroma/web/rich_media/parsers/ogp.ex @@ -3,13 +3,8 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.RichMedia.Parsers.OGP do - def parse(html, data) do - Pleroma.Web.RichMedia.Parsers.MetaTagsParser.parse( - html, - data, - "og", - "No OGP metadata found", - "property" - ) + @deprecated "OGP parser is deprecated. Use TwitterCard instead." + def parse(_html, _data) do + %{} end end diff --git a/lib/pleroma/web/rich_media/parsers/twitter_card.ex b/lib/pleroma/web/rich_media/parsers/twitter_card.ex index 09d4b526e..4a04865d2 100644 --- a/lib/pleroma/web/rich_media/parsers/twitter_card.ex +++ b/lib/pleroma/web/rich_media/parsers/twitter_card.ex @@ -5,18 +5,11 @@ defmodule Pleroma.Web.RichMedia.Parsers.TwitterCard do alias Pleroma.Web.RichMedia.Parsers.MetaTagsParser - @spec parse(String.t(), map()) :: {:ok, map()} | {:error, String.t()} + @spec parse(list(), map()) :: map() def parse(html, data) do data - |> parse_name_attrs(html) - |> parse_property_attrs(html) - end - - defp parse_name_attrs(data, html) do - MetaTagsParser.parse(html, data, "twitter", %{}, "name") - end - - defp parse_property_attrs({_, data}, html) do - MetaTagsParser.parse(html, data, "twitter", "No twitter card metadata found", "property") + |> MetaTagsParser.parse(html, "og", "property") + |> MetaTagsParser.parse(html, "twitter", "name") + |> MetaTagsParser.parse(html, "twitter", "property") end end diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index e493a4153..9e457848e 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -160,14 +160,14 @@ defmodule Pleroma.Web.Router do :right_delete_multiple ) - get("/relay", AdminAPIController, :relay_list) - post("/relay", AdminAPIController, :relay_follow) - delete("/relay", AdminAPIController, :relay_unfollow) + get("/relay", RelayController, :index) + post("/relay", RelayController, :follow) + delete("/relay", RelayController, :unfollow) - post("/users/invite_token", AdminAPIController, :create_invite_token) - get("/users/invites", AdminAPIController, :invites) - post("/users/revoke_invite", AdminAPIController, :revoke_invite) - post("/users/email_invite", AdminAPIController, :email_invite) + post("/users/invite_token", InviteController, :create) + get("/users/invites", InviteController, :index) + post("/users/revoke_invite", InviteController, :revoke) + post("/users/email_invite", InviteController, :email) get("/users/:nickname/password_reset", AdminAPIController, :get_password_reset) patch("/users/force_password_reset", AdminAPIController, :force_password_reset) @@ -183,20 +183,20 @@ defmodule Pleroma.Web.Router do patch("/users/confirm_email", AdminAPIController, :confirm_email) patch("/users/resend_confirmation_email", AdminAPIController, :resend_confirmation_email) - get("/reports", AdminAPIController, :list_reports) - get("/reports/:id", AdminAPIController, :report_show) - patch("/reports", AdminAPIController, :reports_update) - post("/reports/:id/notes", AdminAPIController, :report_notes_create) - delete("/reports/:report_id/notes/:id", AdminAPIController, :report_notes_delete) + get("/reports", ReportController, :index) + get("/reports/:id", ReportController, :show) + patch("/reports", ReportController, :update) + post("/reports/:id/notes", ReportController, :notes_create) + delete("/reports/:report_id/notes/:id", ReportController, :notes_delete) get("/statuses/:id", StatusController, :show) put("/statuses/:id", StatusController, :update) delete("/statuses/:id", StatusController, :delete) get("/statuses", StatusController, :index) - get("/config", AdminAPIController, :config_show) - post("/config", AdminAPIController, :config_update) - get("/config/descriptions", AdminAPIController, :config_descriptions) + get("/config", ConfigController, :show) + post("/config", ConfigController, :update) + get("/config/descriptions", ConfigController, :descriptions) get("/need_reboot", AdminAPIController, :need_reboot) get("/restart", AdminAPIController, :restart) @@ -205,10 +205,14 @@ defmodule Pleroma.Web.Router do post("/reload_emoji", AdminAPIController, :reload_emoji) get("/stats", AdminAPIController, :stats) - get("/oauth_app", AdminAPIController, :oauth_app_list) - post("/oauth_app", AdminAPIController, :oauth_app_create) - patch("/oauth_app/:id", AdminAPIController, :oauth_app_update) - delete("/oauth_app/:id", AdminAPIController, :oauth_app_delete) + get("/oauth_app", OAuthAppController, :index) + post("/oauth_app", OAuthAppController, :create) + patch("/oauth_app/:id", OAuthAppController, :update) + delete("/oauth_app/:id", OAuthAppController, :delete) + + get("/media_proxy_caches", MediaProxyCacheController, :index) + post("/media_proxy_caches/delete", MediaProxyCacheController, :delete) + post("/media_proxy_caches/purge", MediaProxyCacheController, :purge) end scope "/api/pleroma/emoji", Pleroma.Web.PleromaAPI do @@ -306,6 +310,15 @@ defmodule Pleroma.Web.Router do scope [] do pipe_through(:authenticated_api) + post("/chats/by-account-id/:id", ChatController, :create) + get("/chats", ChatController, :index) + get("/chats/:id", ChatController, :show) + get("/chats/:id/messages", ChatController, :messages) + post("/chats/:id/messages", ChatController, :post_chat_message) + delete("/chats/:id/messages/:message_id", ChatController, :delete_message) + post("/chats/:id/read", ChatController, :mark_as_read) + post("/chats/:id/messages/:message_id/read", ChatController, :mark_message_as_read) + get("/conversations/:id/statuses", ConversationController, :statuses) get("/conversations/:id", ConversationController, :show) post("/conversations/read", ConversationController, :mark_as_read) @@ -454,6 +467,7 @@ defmodule Pleroma.Web.Router do scope "/api/web", Pleroma.Web do pipe_through(:authenticated_api) + # Backend-obscure settings blob for MastoFE, don't parse/reuse elsewhere put("/settings", MastoFEController, :put_settings) end @@ -571,13 +585,6 @@ defmodule Pleroma.Web.Router do get("/mailer/unsubscribe/:token", Mailer.SubscriptionController, :unsubscribe) end - scope "/", Pleroma.Web.ActivityPub do - # XXX: not really ostatus - pipe_through(:ostatus) - - get("/users/:nickname/outbox", ActivityPubController, :outbox) - end - pipeline :ap_service_actor do plug(:accepts, ["activity+json", "json"]) end @@ -602,6 +609,7 @@ defmodule Pleroma.Web.Router do get("/api/ap/whoami", ActivityPubController, :whoami) get("/users/:nickname/inbox", ActivityPubController, :read_inbox) + get("/users/:nickname/outbox", ActivityPubController, :outbox) post("/users/:nickname/outbox", ActivityPubController, :update_outbox) post("/api/ap/upload_media", ActivityPubController, :upload_media) @@ -664,6 +672,8 @@ defmodule Pleroma.Web.Router do post("/auth/password", MastodonAPI.AuthController, :password_reset) get("/web/*path", MastoFEController, :index) + + get("/embed/:id", EmbedController, :show) end scope "/proxy/", Pleroma.Web.MediaProxy do @@ -716,7 +726,7 @@ defmodule Pleroma.Web.Router do get("/registration/:token", RedirectController, :registration_page) get("/:maybe_nickname_or_id", RedirectController, :redirector_with_meta) get("/api*path", RedirectController, :api_not_implemented) - get("/*path", RedirectController, :redirector) + get("/*path", RedirectController, :redirector_with_preload) options("/*path", RedirectController, :empty) end diff --git a/lib/pleroma/web/static_fe/static_fe_controller.ex b/lib/pleroma/web/static_fe/static_fe_controller.ex index c3efb6651..a7a891b13 100644 --- a/lib/pleroma/web/static_fe/static_fe_controller.ex +++ b/lib/pleroma/web/static_fe/static_fe_controller.ex @@ -111,8 +111,14 @@ def show(%{assigns: %{username_or_id: username_or_id}} = conn, params) do %User{} = user -> meta = Metadata.build_tags(%{user: user}) + params = + params + |> Map.take(@page_keys) + |> Map.new(fn {k, v} -> {String.to_existing_atom(k), v} end) + timeline = - ActivityPub.fetch_user_activities(user, nil, Map.take(params, @page_keys)) + user + |> ActivityPub.fetch_user_activities(nil, params) |> Enum.map(&represent/1) prev_page_id = diff --git a/lib/pleroma/web/streamer/streamer.ex b/lib/pleroma/web/streamer/streamer.ex index 0cf41189b..d1d2c9b9c 100644 --- a/lib/pleroma/web/streamer/streamer.ex +++ b/lib/pleroma/web/streamer/streamer.ex @@ -6,6 +6,7 @@ defmodule Pleroma.Web.Streamer do require Logger alias Pleroma.Activity + alias Pleroma.Chat.MessageReference alias Pleroma.Config alias Pleroma.Conversation.Participation alias Pleroma.Notification @@ -22,7 +23,7 @@ defmodule Pleroma.Web.Streamer do def registry, do: @registry @public_streams ["public", "public:local", "public:media", "public:local:media"] - @user_streams ["user", "user:notification", "direct"] + @user_streams ["user", "user:notification", "direct", "user:pleroma_chat"] @doc "Expands and authorizes a stream, and registers the process for streaming." @spec get_topic_and_add_socket(stream :: String.t(), User.t() | nil, Map.t() | nil) :: @@ -89,34 +90,20 @@ def remove_socket(topic) do if should_env_send?(), do: Registry.unregister(@registry, topic) end - def stream(topics, item) when is_list(topics) do + def stream(topics, items) do if should_env_send?() do - Enum.each(topics, fn t -> - spawn(fn -> do_stream(t, item) end) + List.wrap(topics) + |> Enum.each(fn topic -> + List.wrap(items) + |> Enum.each(fn item -> + spawn(fn -> do_stream(topic, item) end) + end) end) end :ok end - def stream(topic, items) when is_list(items) do - if should_env_send?() do - Enum.each(items, fn i -> - spawn(fn -> do_stream(topic, i) end) - end) - - :ok - end - end - - def stream(topic, item) do - if should_env_send?() do - spawn(fn -> do_stream(topic, item) end) - end - - :ok - end - def filtered_by_user?(%User{} = user, %Activity{} = item) do %{block: blocked_ap_ids, mute: muted_ap_ids, reblog_mute: reblog_muted_ap_ids} = User.outgoing_relationships_ap_ids(user, [:block, :mute, :reblog_mute]) @@ -200,6 +187,19 @@ defp do_stream(topic, %Notification{} = item) end) end + defp do_stream(topic, {user, %MessageReference{} = cm_ref}) + when topic in ["user", "user:pleroma_chat"] do + topic = "#{topic}:#{user.id}" + + text = StreamerView.render("chat_update.json", %{chat_message_reference: cm_ref}) + + Registry.dispatch(@registry, topic, fn list -> + Enum.each(list, fn {pid, _auth} -> + send(pid, {:text, text}) + end) + end) + end + defp do_stream("user", item) do Logger.debug("Trying to push to users") diff --git a/lib/pleroma/web/templates/embed/_attachment.html.eex b/lib/pleroma/web/templates/embed/_attachment.html.eex new file mode 100644 index 000000000..7e04e9550 --- /dev/null +++ b/lib/pleroma/web/templates/embed/_attachment.html.eex @@ -0,0 +1,8 @@ +<%= case @mediaType do %> +<% "audio" -> %> + +<% "video" -> %> + +<% _ -> %> +<%= @name %> +<% end %> diff --git a/lib/pleroma/web/templates/embed/show.html.eex b/lib/pleroma/web/templates/embed/show.html.eex new file mode 100644 index 000000000..05a3f0ee3 --- /dev/null +++ b/lib/pleroma/web/templates/embed/show.html.eex @@ -0,0 +1,76 @@ +
+ + +
+ <%= if status_title(@activity) != "" do %> +
open<% end %>> + <%= raw status_title(@activity) %> +
<%= activity_content(@activity) %>
+
+ <% else %> +
<%= activity_content(@activity) %>
+ <% end %> + <%= for %{"name" => name, "url" => [url | _]} <- attachments(@activity) do %> +
+ <%= if sensitive?(@activity) do %> +
+ <%= Gettext.gettext("sensitive media") %> +
+ <%= render("_attachment.html", %{name: name, url: url["href"], + mediaType: fetch_media_type(url)}) %> +
+
+ <% else %> + <%= render("_attachment.html", %{name: name, url: url["href"], + mediaType: fetch_media_type(url)}) %> + <% end %> +
+ <% end %> +
+ +
+
<%= Gettext.gettext("replies") %>
<%= @counts.replies %>
+
<%= Gettext.gettext("announces") %>
<%= @counts.announces %>
+
<%= Gettext.gettext("likes") %>
<%= @counts.likes %>
+
+ +

+ <%= link published(@activity), to: activity_url(@author, @activity) %> +

+
+ + diff --git a/lib/pleroma/web/templates/layout/embed.html.eex b/lib/pleroma/web/templates/layout/embed.html.eex new file mode 100644 index 000000000..8b905f070 --- /dev/null +++ b/lib/pleroma/web/templates/layout/embed.html.eex @@ -0,0 +1,15 @@ + + + + + + <%= Pleroma.Config.get([:instance, :name]) %> + + <%= Phoenix.HTML.raw(assigns[:meta] || "") %> + + + + + <%= render @view_module, @view_template, assigns %> + + diff --git a/lib/pleroma/web/twitter_api/controllers/util_controller.ex b/lib/pleroma/web/twitter_api/controllers/util_controller.ex index fd2aee175..aaca182ec 100644 --- a/lib/pleroma/web/twitter_api/controllers/util_controller.ex +++ b/lib/pleroma/web/twitter_api/controllers/util_controller.ex @@ -15,6 +15,7 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do alias Pleroma.User alias Pleroma.Web alias Pleroma.Web.CommonAPI + alias Pleroma.Web.TwitterAPI.UtilView alias Pleroma.Web.WebFinger plug(Pleroma.Web.FederatingPlug when action == :remote_subscribe) @@ -90,17 +91,7 @@ def notifications_read(%{assigns: %{user: user}} = conn, %{"id" => notification_ def config(%{assigns: %{format: "xml"}} = conn, _params) do instance = Pleroma.Config.get(:instance) - - response = """ - - - #{Keyword.get(instance, :name)} - #{Web.base_url()} - #{Keyword.get(instance, :limit)} - #{!Keyword.get(instance, :registrations_open)} - - - """ + response = UtilView.status_net_config(instance) conn |> put_resp_content_type("application/xml") diff --git a/lib/pleroma/web/twitter_api/views/util_view.ex b/lib/pleroma/web/twitter_api/views/util_view.ex index 52054e020..d3bdb4f62 100644 --- a/lib/pleroma/web/twitter_api/views/util_view.ex +++ b/lib/pleroma/web/twitter_api/views/util_view.ex @@ -5,4 +5,18 @@ defmodule Pleroma.Web.TwitterAPI.UtilView do use Pleroma.Web, :view import Phoenix.HTML.Form + alias Pleroma.Web + + def status_net_config(instance) do + """ + + + #{Keyword.get(instance, :name)} + #{Web.base_url()} + #{Keyword.get(instance, :limit)} + #{!Keyword.get(instance, :registrations_open)} + + + """ + end end diff --git a/lib/pleroma/web/views/embed_view.ex b/lib/pleroma/web/views/embed_view.ex new file mode 100644 index 000000000..5f50bd155 --- /dev/null +++ b/lib/pleroma/web/views/embed_view.ex @@ -0,0 +1,74 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.EmbedView do + use Pleroma.Web, :view + + alias Calendar.Strftime + alias Pleroma.Activity + alias Pleroma.Emoji.Formatter + alias Pleroma.Object + alias Pleroma.User + alias Pleroma.Web.Gettext + alias Pleroma.Web.MediaProxy + alias Pleroma.Web.Metadata.Utils + alias Pleroma.Web.Router.Helpers + + use Phoenix.HTML + + @media_types ["image", "audio", "video"] + + defp fetch_media_type(%{"mediaType" => mediaType}) do + Utils.fetch_media_type(@media_types, mediaType) + end + + defp open_content? do + Pleroma.Config.get( + [:frontend_configurations, :collapse_message_with_subjects], + true + ) + end + + defp full_nickname(user) do + %{host: host} = URI.parse(user.ap_id) + "@" <> user.nickname <> "@" <> host + end + + defp status_title(%Activity{object: %Object{data: %{"name" => name}}}) when is_binary(name), + do: name + + defp status_title(%Activity{object: %Object{data: %{"summary" => summary}}}) + when is_binary(summary), + do: summary + + defp status_title(_), do: nil + + defp activity_content(%Activity{object: %Object{data: %{"content" => content}}}) do + content |> Pleroma.HTML.filter_tags() |> raw() + end + + defp activity_content(_), do: nil + + defp activity_url(%User{local: true}, activity) do + Helpers.o_status_url(Pleroma.Web.Endpoint, :notice, activity) + end + + defp activity_url(%User{local: false}, %Activity{object: %Object{data: data}}) do + data["url"] || data["external_url"] || data["id"] + end + + defp attachments(%Activity{object: %Object{data: %{"attachment" => attachments}}}) do + attachments + end + + defp sensitive?(%Activity{object: %Object{data: %{"sensitive" => sensitive}}}) do + sensitive + end + + defp published(%Activity{object: %Object{data: %{"published" => published}}}) do + published + |> NaiveDateTime.from_iso8601!() + |> Strftime.strftime!("%B %d, %Y, %l:%M %p") + end +end diff --git a/lib/pleroma/web/views/streamer_view.ex b/lib/pleroma/web/views/streamer_view.ex index 237b29ded..476a33245 100644 --- a/lib/pleroma/web/views/streamer_view.ex +++ b/lib/pleroma/web/views/streamer_view.ex @@ -51,6 +51,29 @@ def render("update.json", %Activity{} = activity) do |> Jason.encode!() end + def render("chat_update.json", %{chat_message_reference: cm_ref}) do + # Explicitly giving the cmr for the object here, so we don't accidentally + # send a later 'last_message' that was inserted between inserting this and + # streaming it out + # + # It also contains the chat with a cache of the correct unread count + Logger.debug("Trying to stream out #{inspect(cm_ref)}") + + representation = + Pleroma.Web.PleromaAPI.ChatView.render( + "show.json", + %{last_message: cm_ref, chat: cm_ref.chat} + ) + + %{ + event: "pleroma:chat_update", + payload: + representation + |> Jason.encode!() + } + |> Jason.encode!() + end + def render("conversation.json", %Participation{} = participation) do %{ event: "conversation", diff --git a/lib/pleroma/workers/attachments_cleanup_worker.ex b/lib/pleroma/workers/attachments_cleanup_worker.ex index 49352db2a..8deeabda0 100644 --- a/lib/pleroma/workers/attachments_cleanup_worker.ex +++ b/lib/pleroma/workers/attachments_cleanup_worker.ex @@ -18,13 +18,19 @@ def perform( }, _job ) do - hrefs = - Enum.flat_map(attachments, fn attachment -> - Enum.map(attachment["url"], & &1["href"]) - end) + attachments + |> Enum.flat_map(fn item -> Enum.map(item["url"], & &1["href"]) end) + |> fetch_objects + |> prepare_objects(actor, Enum.map(attachments, & &1["name"])) + |> filter_objects + |> do_clean - names = Enum.map(attachments, & &1["name"]) + {:ok, :success} + end + def perform(%{"op" => "cleanup_attachments", "object" => _object}, _job), do: {:ok, :skip} + + defp do_clean({object_ids, attachment_urls}) do uploader = Pleroma.Config.get([Pleroma.Upload, :uploader]) prefix = @@ -39,68 +45,70 @@ def perform( "/" ) - # find all objects for copies of the attachments, name and actor doesn't matter here - object_ids_and_hrefs = - from(o in Object, - where: - fragment( - "to_jsonb(array(select jsonb_array_elements((?)#>'{url}') ->> 'href' where jsonb_typeof((?)#>'{url}') = 'array'))::jsonb \\?| (?)", - o.data, - o.data, - ^hrefs - ) - ) - # The query above can be time consumptive on large instances until we - # refactor how uploads are stored - |> Repo.all(timeout: :infinity) - # we should delete 1 object for any given attachment, but don't delete - # files if there are more than 1 object for it - |> Enum.reduce(%{}, fn %{ - id: id, - data: %{ - "url" => [%{"href" => href}], - "actor" => obj_actor, - "name" => name - } - }, - acc -> - Map.update(acc, href, %{id: id, count: 1}, fn val -> - case obj_actor == actor and name in names do - true -> - # set id of the actor's object that will be deleted - %{val | id: id, count: val.count + 1} + Enum.each(attachment_urls, fn href -> + href + |> String.trim_leading("#{base_url}/#{prefix}") + |> uploader.delete_file() + end) - false -> - # another actor's object, just increase count to not delete file - %{val | count: val.count + 1} - end - end) - end) - |> Enum.map(fn {href, %{id: id, count: count}} -> - # only delete files that have single instance - with 1 <- count do - href - |> String.trim_leading("#{base_url}/#{prefix}") - |> uploader.delete_file() - - {id, href} - else - _ -> {id, nil} - end - end) - - object_ids = Enum.map(object_ids_and_hrefs, fn {id, _} -> id end) - - from(o in Object, where: o.id in ^object_ids) - |> Repo.delete_all() - - object_ids_and_hrefs - |> Enum.filter(fn {_, href} -> not is_nil(href) end) - |> Enum.map(&elem(&1, 1)) - |> Pleroma.Web.MediaProxy.Invalidation.purge() - - {:ok, :success} + delete_objects(object_ids) end - def perform(%{"op" => "cleanup_attachments", "object" => _object}, _job), do: {:ok, :skip} + defp delete_objects([_ | _] = object_ids) do + Repo.delete_all(from(o in Object, where: o.id in ^object_ids)) + end + + defp delete_objects(_), do: :ok + + # we should delete 1 object for any given attachment, but don't delete + # files if there are more than 1 object for it + defp filter_objects(objects) do + Enum.reduce(objects, {[], []}, fn {href, %{id: id, count: count}}, {ids, hrefs} -> + with 1 <- count do + {ids ++ [id], hrefs ++ [href]} + else + _ -> {ids ++ [id], hrefs} + end + end) + end + + defp prepare_objects(objects, actor, names) do + objects + |> Enum.reduce(%{}, fn %{ + id: id, + data: %{ + "url" => [%{"href" => href}], + "actor" => obj_actor, + "name" => name + } + }, + acc -> + Map.update(acc, href, %{id: id, count: 1}, fn val -> + case obj_actor == actor and name in names do + true -> + # set id of the actor's object that will be deleted + %{val | id: id, count: val.count + 1} + + false -> + # another actor's object, just increase count to not delete file + %{val | count: val.count + 1} + end + end) + end) + end + + defp fetch_objects(hrefs) do + from(o in Object, + where: + fragment( + "to_jsonb(array(select jsonb_array_elements((?)#>'{url}') ->> 'href' where jsonb_typeof((?)#>'{url}') = 'array'))::jsonb \\?| (?)", + o.data, + o.data, + ^hrefs + ) + ) + # The query above can be time consumptive on large instances until we + # refactor how uploads are stored + |> Repo.all(timeout: :infinity) + end end diff --git a/mix.exs b/mix.exs index 03b060bc0..e2ab53bde 100644 --- a/mix.exs +++ b/mix.exs @@ -5,7 +5,7 @@ def project do [ app: :pleroma, version: version("2.0.50"), - elixir: "~> 1.8", + elixir: "~> 1.9", elixirc_paths: elixirc_paths(Mix.env()), compilers: [:phoenix, :gettext] ++ Mix.compilers(), elixirc_options: [warnings_as_errors: warnings_as_errors(Mix.env())], @@ -117,7 +117,7 @@ defp oauth_deps do defp deps do [ {:phoenix, "~> 1.4.8"}, - {:tzdata, "~> 0.5.21"}, + {:tzdata, "~> 1.0.3"}, {:plug_cowboy, "~> 2.0"}, {:phoenix_pubsub, "~> 1.1"}, {:phoenix_ecto, "~> 4.0"}, @@ -159,7 +159,10 @@ defp deps do {:cors_plug, "~> 1.5"}, {:ex_doc, "~> 0.21", only: :dev, runtime: false}, {:web_push_encryption, "~> 0.2.1"}, - {:swoosh, "~> 0.23.2"}, + {:swoosh, + git: "https://github.com/swoosh/swoosh", + ref: "c96e0ca8a00d8f211ec1f042a4626b09f249caa5", + override: true}, {:phoenix_swoosh, "~> 0.2"}, {:gen_smtp, "~> 0.13"}, {:websocket_client, git: "https://github.com/jeremyong/websocket_client.git", only: :test}, @@ -230,32 +233,37 @@ defp aliases do defp version(version) do identifier_filter = ~r/[^0-9a-z\-]+/i - # Pre-release version, denoted from patch version with a hyphen - {tag, tag_err} = - System.cmd("git", ["describe", "--tags", "--abbrev=0"], stderr_to_stdout: true) - - {describe, describe_err} = System.cmd("git", ["describe", "--tags", "--abbrev=8"]) - {commit_hash, commit_hash_err} = System.cmd("git", ["rev-parse", "--short", "HEAD"]) + {_cmdgit, cmdgit_err} = System.cmd("sh", ["-c", "command -v git"]) git_pre_release = - cond do - tag_err == 0 and describe_err == 0 -> - describe - |> String.trim() - |> String.replace(String.trim(tag), "") - |> String.trim_leading("-") - |> String.trim() + if cmdgit_err == 0 do + {tag, tag_err} = + System.cmd("git", ["describe", "--tags", "--abbrev=0"], stderr_to_stdout: true) - commit_hash_err == 0 -> - "0-g" <> String.trim(commit_hash) + {describe, describe_err} = System.cmd("git", ["describe", "--tags", "--abbrev=8"]) + {commit_hash, commit_hash_err} = System.cmd("git", ["rev-parse", "--short", "HEAD"]) - true -> - "" + # Pre-release version, denoted from patch version with a hyphen + cond do + tag_err == 0 and describe_err == 0 -> + describe + |> String.trim() + |> String.replace(String.trim(tag), "") + |> String.trim_leading("-") + |> String.trim() + + commit_hash_err == 0 -> + "0-g" <> String.trim(commit_hash) + + true -> + nil + end end # Branch name as pre-release version component, denoted with a dot branch_name = - with {branch_name, 0} <- System.cmd("git", ["rev-parse", "--abbrev-ref", "HEAD"]), + with 0 <- cmdgit_err, + {branch_name, 0} <- System.cmd("git", ["rev-parse", "--abbrev-ref", "HEAD"]), branch_name <- String.trim(branch_name), branch_name <- System.get_env("PLEROMA_BUILD_BRANCH") || branch_name, true <- @@ -269,7 +277,7 @@ defp version(version) do branch_name else - _ -> "stable" + _ -> "" end build_name = diff --git a/mix.lock b/mix.lock index 470b401a3..4f2777fa7 100644 --- a/mix.lock +++ b/mix.lock @@ -12,7 +12,7 @@ "calendar": {:hex, :calendar, "0.17.6", "ec291cb2e4ba499c2e8c0ef5f4ace974e2f9d02ae9e807e711a9b0c7850b9aee", [:mix], [{:tzdata, "~> 0.5.20 or ~> 0.1.201603 or ~> 1.0", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm", "738d0e17a93c2ccfe4ddc707bdc8e672e9074c8569498483feb1c4530fb91b2b"}, "captcha": {:git, "https://git.pleroma.social/pleroma/elixir-libraries/elixir-captcha.git", "e0f16822d578866e186a0974d65ad58cddc1e2ab", [ref: "e0f16822d578866e186a0974d65ad58cddc1e2ab"]}, "castore": {:hex, :castore, "0.1.5", "591c763a637af2cc468a72f006878584bc6c306f8d111ef8ba1d4c10e0684010", [:mix], [], "hexpm", "6db356b2bc6cc22561e051ff545c20ad064af57647e436650aa24d7d06cd941a"}, - "certifi": {:hex, :certifi, "2.5.1", "867ce347f7c7d78563450a18a6a28a8090331e77fa02380b4a21962a65d36ee5", [:rebar3], [{:parse_trans, "~>3.3", [hex: :parse_trans, repo: "hexpm", optional: false]}], "hexpm", "805abd97539caf89ec6d4732c91e62ba9da0cda51ac462380bbd28ee697a8c42"}, + "certifi": {:hex, :certifi, "2.5.2", "b7cfeae9d2ed395695dd8201c57a2d019c0c43ecaf8b8bcb9320b40d6662f340", [:rebar3], [{:parse_trans, "~>3.3", [hex: :parse_trans, repo: "hexpm", optional: false]}], "hexpm", "3b3b5f36493004ac3455966991eaf6e768ce9884693d9968055aeeeb1e575040"}, "combine": {:hex, :combine, "0.10.0", "eff8224eeb56498a2af13011d142c5e7997a80c8f5b97c499f84c841032e429f", [:mix], [], "hexpm", "1b1dbc1790073076580d0d1d64e42eae2366583e7aecd455d1215b0d16f2451b"}, "comeonin": {:hex, :comeonin, "5.3.1", "7fe612b739c78c9c1a75186ef2d322ce4d25032d119823269d0aa1e2f1e20025", [:mix], [], "hexpm", "d6222483060c17f0977fad1b7401ef0c5863c985a64352755f366aee3799c245"}, "connection": {:hex, :connection, "1.0.4", "a1cae72211f0eef17705aaededacac3eb30e6625b04a6117c1b2db6ace7d5976", [:mix], [], "hexpm", "4a0850c9be22a43af9920a71ab17c051f5f7d45c209e40269a1938832510e4d9"}, @@ -50,12 +50,12 @@ "gen_state_machine": {:hex, :gen_state_machine, "2.0.5", "9ac15ec6e66acac994cc442dcc2c6f9796cf380ec4b08267223014be1c728a95", [:mix], [], "hexpm"}, "gettext": {:hex, :gettext, "0.17.4", "f13088e1ec10ce01665cf25f5ff779e7df3f2dc71b37084976cf89d1aa124d5c", [:mix], [], "hexpm", "3c75b5ea8288e2ee7ea503ff9e30dfe4d07ad3c054576a6e60040e79a801e14d"}, "gun": {:git, "https://github.com/ninenines/gun.git", "e1a69b36b180a574c0ac314ced9613fdd52312cc", [ref: "e1a69b36b180a574c0ac314ced9613fdd52312cc"]}, - "hackney": {:hex, :hackney, "1.15.2", "07e33c794f8f8964ee86cebec1a8ed88db5070e52e904b8f12209773c1036085", [:rebar3], [{:certifi, "2.5.1", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "6.0.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "1.0.1", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "1.1.5", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}], "hexpm", "e0100f8ef7d1124222c11ad362c857d3df7cb5f4204054f9f0f4a728666591fc"}, + "hackney": {:hex, :hackney, "1.16.0", "5096ac8e823e3a441477b2d187e30dd3fff1a82991a806b2003845ce72ce2d84", [:rebar3], [{:certifi, "2.5.2", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "6.0.1", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "1.0.1", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "3.3.0", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "1.1.6", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}], "hexpm", "3bf0bebbd5d3092a3543b783bf065165fa5d3ad4b899b836810e513064134e18"}, "html_entities": {:hex, :html_entities, "0.5.1", "1c9715058b42c35a2ab65edc5b36d0ea66dd083767bef6e3edb57870ef556549", [:mix], [], "hexpm", "30efab070904eb897ff05cd52fa61c1025d7f8ef3a9ca250bc4e6513d16c32de"}, "html_sanitize_ex": {:hex, :html_sanitize_ex, "1.3.0", "f005ad692b717691203f940c686208aa3d8ffd9dd4bb3699240096a51fa9564e", [:mix], [{:mochiweb, "~> 2.15", [hex: :mochiweb, repo: "hexpm", optional: false]}], "hexpm"}, "http_signatures": {:git, "https://git.pleroma.social/pleroma/http_signatures.git", "293d77bb6f4a67ac8bde1428735c3b42f22cbb30", [ref: "293d77bb6f4a67ac8bde1428735c3b42f22cbb30"]}, "httpoison": {:hex, :httpoison, "1.6.2", "ace7c8d3a361cebccbed19c283c349b3d26991eff73a1eaaa8abae2e3c8089b6", [:mix], [{:hackney, "~> 1.15 and >= 1.15.2", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "aa2c74bd271af34239a3948779612f87df2422c2fdcfdbcec28d9c105f0773fe"}, - "idna": {:hex, :idna, "6.0.0", "689c46cbcdf3524c44d5f3dde8001f364cd7608a99556d8fbd8239a5798d4c10", [:rebar3], [{:unicode_util_compat, "0.4.1", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "4bdd305eb64e18b0273864920695cb18d7a2021f31a11b9c5fbcd9a253f936e2"}, + "idna": {:hex, :idna, "6.0.1", "1d038fb2e7668ce41fbf681d2c45902e52b3cb9e9c77b55334353b222c2ee50c", [:rebar3], [{:unicode_util_compat, "0.5.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "a02c8a1c4fd601215bb0b0324c8a6986749f807ce35f25449ec9e69758708122"}, "inet_cidr": {:hex, :inet_cidr, "1.0.4", "a05744ab7c221ca8e395c926c3919a821eb512e8f36547c062f62c4ca0cf3d6e", [:mix], [], "hexpm", "64a2d30189704ae41ca7dbdd587f5291db5d1dda1414e0774c29ffc81088c1bc"}, "jason": {:hex, :jason, "1.2.1", "12b22825e22f468c02eb3e4b9985f3d0cb8dc40b9bd704730efa11abd2708c44", [:mix], [{:decimal, "~> 1.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "b659b8571deedf60f79c5a608e15414085fa141344e2716fbd6988a084b5f993"}, "joken": {:hex, :joken, "2.2.0", "2daa1b12be05184aff7b5ace1d43ca1f81345962285fff3f88db74927c954d3a", [:mix], [{:jose, "~> 1.9", [hex: :jose, repo: "hexpm", optional: false]}], "hexpm", "b4f92e30388206f869dd25d1af628a1d99d7586e5cf0672f64d4df84c4d2f5e9"}, @@ -102,17 +102,17 @@ "recon": {:hex, :recon, "2.5.0", "2f7fcbec2c35034bade2f9717f77059dc54eb4e929a3049ca7ba6775c0bd66cd", [:mix, :rebar3], [], "hexpm", "72f3840fedd94f06315c523f6cecf5b4827233bed7ae3fe135b2a0ebeab5e196"}, "remote_ip": {:git, "https://git.pleroma.social/pleroma/remote_ip.git", "b647d0deecaa3acb140854fe4bda5b7e1dc6d1c8", [ref: "b647d0deecaa3acb140854fe4bda5b7e1dc6d1c8"]}, "sleeplocks": {:hex, :sleeplocks, "1.1.1", "3d462a0639a6ef36cc75d6038b7393ae537ab394641beb59830a1b8271faeed3", [:rebar3], [], "hexpm", "84ee37aeff4d0d92b290fff986d6a95ac5eedf9b383fadfd1d88e9b84a1c02e1"}, - "ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.5", "6eaf7ad16cb568bb01753dbbd7a95ff8b91c7979482b95f38443fe2c8852a79b", [:make, :mix, :rebar3], [], "hexpm", "13104d7897e38ed7f044c4de953a6c28597d1c952075eb2e328bc6d6f2bfc496"}, + "ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.6", "cf344f5692c82d2cd7554f5ec8fd961548d4fd09e7d22f5b62482e5aeaebd4b0", [:make, :mix, :rebar3], [], "hexpm", "bdb0d2471f453c88ff3908e7686f86f9be327d065cc1ec16fa4540197ea04680"}, "sweet_xml": {:hex, :sweet_xml, "0.6.6", "fc3e91ec5dd7c787b6195757fbcf0abc670cee1e4172687b45183032221b66b8", [:mix], [], "hexpm", "2e1ec458f892ffa81f9f8386e3f35a1af6db7a7a37748a64478f13163a1f3573"}, - "swoosh": {:hex, :swoosh, "0.23.5", "bfd9404bbf5069b1be2ffd317923ce57e58b332e25dbca2a35dedd7820dfee5a", [:mix], [{:cowboy, "~> 1.0.1 or ~> 1.1 or ~> 2.4", [hex: :cowboy, repo: "hexpm", optional: true]}, {:gen_smtp, "~> 0.13", [hex: :gen_smtp, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mail, "~> 0.2", [hex: :mail, repo: "hexpm", optional: true]}, {:mime, "~> 1.1", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_cowboy, ">= 1.0.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}], "hexpm", "e3928e1d2889a308aaf3e42755809ac21cffd77cb58eef01cbfdab4ce2fd1e21"}, + "swoosh": {:git, "https://github.com/swoosh/swoosh", "c96e0ca8a00d8f211ec1f042a4626b09f249caa5", [ref: "c96e0ca8a00d8f211ec1f042a4626b09f249caa5"]}, "syslog": {:hex, :syslog, "1.1.0", "6419a232bea84f07b56dc575225007ffe34d9fdc91abe6f1b2f254fd71d8efc2", [:rebar3], [], "hexpm", "4c6a41373c7e20587be33ef841d3de6f3beba08519809329ecc4d27b15b659e1"}, - "telemetry": {:hex, :telemetry, "0.4.1", "ae2718484892448a24470e6aa341bc847c3277bfb8d4e9289f7474d752c09c7f", [:rebar3], [], "hexpm", "4738382e36a0a9a2b6e25d67c960e40e1a2c95560b9f936d8e29de8cd858480f"}, + "telemetry": {:hex, :telemetry, "0.4.2", "2808c992455e08d6177322f14d3bdb6b625fbcfd233a73505870d8738a2f4599", [:rebar3], [], "hexpm", "2d1419bd9dda6a206d7b5852179511722e2b18812310d304620c7bd92a13fcef"}, "tesla": {:git, "https://git.pleroma.social/pleroma/elixir-libraries/tesla.git", "61b7503cef33f00834f78ddfafe0d5d9dec2270b", [ref: "61b7503cef33f00834f78ddfafe0d5d9dec2270b"]}, "timex": {:hex, :timex, "3.6.1", "efdf56d0e67a6b956cc57774353b0329c8ab7726766a11547e529357ffdc1d56", [:mix], [{:combine, "~> 0.10", [hex: :combine, repo: "hexpm", optional: false]}, {:gettext, "~> 0.10", [hex: :gettext, repo: "hexpm", optional: false]}, {:tzdata, "~> 0.1.8 or ~> 0.5 or ~> 1.0.0", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm", "f354efb2400dd7a80fd9eb6c8419068c4f632da4ac47f3d8822d6e33f08bc852"}, "trailing_format_plug": {:hex, :trailing_format_plug, "0.0.7", "64b877f912cf7273bed03379936df39894149e35137ac9509117e59866e10e45", [:mix], [{:plug, "> 0.12.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "bd4fde4c15f3e993a999e019d64347489b91b7a9096af68b2bdadd192afa693f"}, - "tzdata": {:hex, :tzdata, "0.5.22", "f2ba9105117ee0360eae2eca389783ef7db36d533899b2e84559404dbc77ebb8", [:mix], [{:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "cd66c8a1e6a9e121d1f538b01bef459334bb4029a1ffb4eeeb5e4eae0337e7b6"}, + "tzdata": {:hex, :tzdata, "1.0.3", "73470ad29dde46e350c60a66e6b360d3b99d2d18b74c4c349dbebbc27a09a3eb", [:mix], [{:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "a6e1ee7003c4d04ecbd21dd3ec690d4c6662db5d3bbdd7262d53cdf5e7c746c1"}, "ueberauth": {:hex, :ueberauth, "0.6.2", "25a31111249d60bad8b65438b2306a4dc91f3208faa62f5a8c33e8713989b2e8", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "db9fbfb5ac707bc4f85a297758406340bf0358b4af737a88113c1a9eee120ac7"}, - "unicode_util_compat": {:hex, :unicode_util_compat, "0.4.1", "d869e4c68901dd9531385bb0c8c40444ebf624e60b6962d95952775cac5e90cd", [:rebar3], [], "hexpm", "1d1848c40487cdb0b30e8ed975e34e025860c02e419cb615d255849f3427439d"}, + "unicode_util_compat": {:hex, :unicode_util_compat, "0.5.0", "8516502659002cec19e244ebd90d312183064be95025a319a6c7e89f4bccd65b", [:rebar3], [], "hexpm", "d48d002e15f5cc105a696cf2f1bbb3fc72b4b770a184d8420c8db20da2674b38"}, "unsafe": {:hex, :unsafe, "1.0.1", "a27e1874f72ee49312e0a9ec2e0b27924214a05e3ddac90e91727bc76f8613d8", [:mix], [], "hexpm", "6c7729a2d214806450d29766abc2afaa7a2cbecf415be64f36a6691afebb50e5"}, "web_push_encryption": {:hex, :web_push_encryption, "0.2.3", "a0ceab85a805a30852f143d22d71c434046fbdbafbc7292e7887cec500826a80", [:mix], [{:httpoison, "~> 1.0", [hex: :httpoison, repo: "hexpm", optional: false]}, {:jose, "~> 1.8", [hex: :jose, repo: "hexpm", optional: false]}, {:poison, "~> 3.0", [hex: :poison, repo: "hexpm", optional: false]}], "hexpm", "9315c8f37c108835cf3f8e9157d7a9b8f420a34f402d1b1620a31aed5b93ecdf"}, "websocket_client": {:git, "https://github.com/jeremyong/websocket_client.git", "9a6f65d05ebf2725d62fb19262b21f1805a59fbf", []}, diff --git a/priv/gettext/it/LC_MESSAGES/errors.po b/priv/gettext/it/LC_MESSAGES/errors.po new file mode 100644 index 000000000..726be628b --- /dev/null +++ b/priv/gettext/it/LC_MESSAGES/errors.po @@ -0,0 +1,580 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-06-19 14:33+0000\n" +"PO-Revision-Date: 2020-06-19 20:38+0000\n" +"Last-Translator: Ben Is \n" +"Language-Team: Italian \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +## This file is a PO Template file. +## +## `msgid`s here are often extracted from source code. +## Add new translations manually only if they're dynamic +## translations that can't be statically extracted. +## +## Run `mix gettext.extract` to bring this file up to +## date. Leave `msgstr`s empty as changing them here as no +## effect: edit them in PO (`.po`) files instead. +## From Ecto.Changeset.cast/4 +msgid "can't be blank" +msgstr "non può essere nullo" + +## From Ecto.Changeset.unique_constraint/3 +msgid "has already been taken" +msgstr "" + +## From Ecto.Changeset.put_change/3 +msgid "is invalid" +msgstr "" + +## From Ecto.Changeset.validate_format/3 +msgid "has invalid format" +msgstr "" + +## From Ecto.Changeset.validate_subset/3 +msgid "has an invalid entry" +msgstr "" + +## From Ecto.Changeset.validate_exclusion/3 +msgid "is reserved" +msgstr "" + +## From Ecto.Changeset.validate_confirmation/3 +msgid "does not match confirmation" +msgstr "" + +## From Ecto.Changeset.no_assoc_constraint/3 +msgid "is still associated with this entry" +msgstr "" + +msgid "are still associated with this entry" +msgstr "" + +## From Ecto.Changeset.validate_length/3 +msgid "should be %{count} character(s)" +msgid_plural "should be %{count} character(s)" +msgstr[0] "" +msgstr[1] "" + +msgid "should have %{count} item(s)" +msgid_plural "should have %{count} item(s)" +msgstr[0] "" +msgstr[1] "" + +msgid "should be at least %{count} character(s)" +msgid_plural "should be at least %{count} character(s)" +msgstr[0] "" +msgstr[1] "" + +msgid "should have at least %{count} item(s)" +msgid_plural "should have at least %{count} item(s)" +msgstr[0] "" +msgstr[1] "" + +msgid "should be at most %{count} character(s)" +msgid_plural "should be at most %{count} character(s)" +msgstr[0] "" +msgstr[1] "" + +msgid "should have at most %{count} item(s)" +msgid_plural "should have at most %{count} item(s)" +msgstr[0] "" +msgstr[1] "" + +## From Ecto.Changeset.validate_number/3 +msgid "must be less than %{number}" +msgstr "" + +msgid "must be greater than %{number}" +msgstr "" + +msgid "must be less than or equal to %{number}" +msgstr "" + +msgid "must be greater than or equal to %{number}" +msgstr "" + +msgid "must be equal to %{number}" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:421 +#, elixir-format +msgid "Account not found" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:249 +#, elixir-format +msgid "Already voted" +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:360 +#, elixir-format +msgid "Bad request" +msgstr "" + +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:425 +#, elixir-format +msgid "Can't delete object" +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/status_controller.ex:196 +#, elixir-format +msgid "Can't delete this post" +msgstr "" + +#: lib/pleroma/web/controller_helper.ex:95 +#: lib/pleroma/web/controller_helper.ex:101 +#, elixir-format +msgid "Can't display this activity" +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:227 +#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:254 +#, elixir-format +msgid "Can't find user" +msgstr "" + +#: lib/pleroma/web/pleroma_api/controllers/account_controller.ex:114 +#, elixir-format +msgid "Can't get favorites" +msgstr "" + +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:437 +#, elixir-format +msgid "Can't like object" +msgstr "" + +#: lib/pleroma/web/common_api/utils.ex:556 +#, elixir-format +msgid "Cannot post an empty status without attachments" +msgstr "" + +#: lib/pleroma/web/common_api/utils.ex:504 +#, elixir-format +msgid "Comment must be up to %{max_size} characters" +msgstr "" + +#: lib/pleroma/config/config_db.ex:222 +#, elixir-format +msgid "Config with params %{params} not found" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:95 +#, elixir-format +msgid "Could not delete" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:141 +#, elixir-format +msgid "Could not favorite" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:370 +#, elixir-format +msgid "Could not pin" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:112 +#, elixir-format +msgid "Could not repeat" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:188 +#, elixir-format +msgid "Could not unfavorite" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:380 +#, elixir-format +msgid "Could not unpin" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:126 +#, elixir-format +msgid "Could not unrepeat" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:428 +#: lib/pleroma/web/common_api/common_api.ex:437 +#, elixir-format +msgid "Could not update state" +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex:202 +#, elixir-format +msgid "Error." +msgstr "" + +#: lib/pleroma/web/twitter_api/twitter_api.ex:106 +#, elixir-format +msgid "Invalid CAPTCHA" +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:117 +#: lib/pleroma/web/oauth/oauth_controller.ex:569 +#, elixir-format +msgid "Invalid credentials" +msgstr "" + +#: lib/pleroma/plugs/ensure_authenticated_plug.ex:38 +#, elixir-format +msgid "Invalid credentials." +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:265 +#, elixir-format +msgid "Invalid indices" +msgstr "" + +#: lib/pleroma/web/admin_api/admin_api_controller.ex:1147 +#, elixir-format +msgid "Invalid parameters" +msgstr "" + +#: lib/pleroma/web/common_api/utils.ex:411 +#, elixir-format +msgid "Invalid password." +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:187 +#, elixir-format +msgid "Invalid request" +msgstr "" + +#: lib/pleroma/web/twitter_api/twitter_api.ex:109 +#, elixir-format +msgid "Kocaptcha service unavailable" +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:113 +#, elixir-format +msgid "Missing parameters" +msgstr "" + +#: lib/pleroma/web/common_api/utils.ex:540 +#, elixir-format +msgid "No such conversation" +msgstr "" + +#: lib/pleroma/web/admin_api/admin_api_controller.ex:439 +#: lib/pleroma/web/admin_api/admin_api_controller.ex:465 lib/pleroma/web/admin_api/admin_api_controller.ex:507 +#, elixir-format +msgid "No such permission_group" +msgstr "" + +#: lib/pleroma/plugs/uploaded_media.ex:74 +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:485 lib/pleroma/web/admin_api/admin_api_controller.ex:1135 +#: lib/pleroma/web/feed/user_controller.ex:73 lib/pleroma/web/ostatus/ostatus_controller.ex:143 +#, elixir-format +msgid "Not found" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:241 +#, elixir-format +msgid "Poll's author can't vote" +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/fallback_controller.ex:20 +#: lib/pleroma/web/mastodon_api/controllers/poll_controller.ex:37 lib/pleroma/web/mastodon_api/controllers/poll_controller.ex:49 +#: lib/pleroma/web/mastodon_api/controllers/poll_controller.ex:50 lib/pleroma/web/mastodon_api/controllers/status_controller.ex:290 +#: lib/pleroma/web/mastodon_api/controllers/subscription_controller.ex:71 +#, elixir-format +msgid "Record not found" +msgstr "" + +#: lib/pleroma/web/admin_api/admin_api_controller.ex:1153 +#: lib/pleroma/web/feed/user_controller.ex:79 lib/pleroma/web/mastodon_api/controllers/fallback_controller.ex:32 +#: lib/pleroma/web/ostatus/ostatus_controller.ex:149 +#, elixir-format +msgid "Something went wrong" +msgstr "" + +#: lib/pleroma/web/common_api/activity_draft.ex:107 +#, elixir-format +msgid "The message visibility must be direct" +msgstr "" + +#: lib/pleroma/web/common_api/utils.ex:566 +#, elixir-format +msgid "The status is over the character limit" +msgstr "" + +#: lib/pleroma/plugs/ensure_public_or_authenticated_plug.ex:31 +#, elixir-format +msgid "This resource requires authentication." +msgstr "" + +#: lib/pleroma/plugs/rate_limiter/rate_limiter.ex:206 +#, elixir-format +msgid "Throttled" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:266 +#, elixir-format +msgid "Too many choices" +msgstr "" + +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:442 +#, elixir-format +msgid "Unhandled activity type" +msgstr "" + +#: lib/pleroma/web/admin_api/admin_api_controller.ex:536 +#, elixir-format +msgid "You can't revoke your own admin status." +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:218 +#: lib/pleroma/web/oauth/oauth_controller.ex:309 +#, elixir-format +msgid "Your account is currently disabled" +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:180 +#: lib/pleroma/web/oauth/oauth_controller.ex:332 +#, elixir-format +msgid "Your login is missing a confirmed e-mail address" +msgstr "" + +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:389 +#, elixir-format +msgid "can't read inbox of %{nickname} as %{as_nickname}" +msgstr "" + +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:472 +#, elixir-format +msgid "can't update outbox of %{nickname} as %{as_nickname}" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:388 +#, elixir-format +msgid "conversation is already muted" +msgstr "" + +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:316 +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:491 +#, elixir-format +msgid "error" +msgstr "" + +#: lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex:29 +#, elixir-format +msgid "mascots can only be images" +msgstr "" + +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:60 +#, elixir-format +msgid "not found" +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:395 +#, elixir-format +msgid "Bad OAuth request." +msgstr "" + +#: lib/pleroma/web/twitter_api/twitter_api.ex:115 +#, elixir-format +msgid "CAPTCHA already used" +msgstr "" + +#: lib/pleroma/web/twitter_api/twitter_api.ex:112 +#, elixir-format +msgid "CAPTCHA expired" +msgstr "" + +#: lib/pleroma/plugs/uploaded_media.ex:55 +#, elixir-format +msgid "Failed" +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:411 +#, elixir-format +msgid "Failed to authenticate: %{message}." +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:442 +#, elixir-format +msgid "Failed to set up user account." +msgstr "" + +#: lib/pleroma/plugs/oauth_scopes_plug.ex:38 +#, elixir-format +msgid "Insufficient permissions: %{permissions}." +msgstr "" + +#: lib/pleroma/plugs/uploaded_media.ex:94 +#, elixir-format +msgid "Internal Error" +msgstr "" + +#: lib/pleroma/web/oauth/fallback_controller.ex:22 +#: lib/pleroma/web/oauth/fallback_controller.ex:29 +#, elixir-format +msgid "Invalid Username/Password" +msgstr "" + +#: lib/pleroma/web/twitter_api/twitter_api.ex:118 +#, elixir-format +msgid "Invalid answer data" +msgstr "" + +#: lib/pleroma/web/nodeinfo/nodeinfo_controller.ex:128 +#, elixir-format +msgid "Nodeinfo schema version not handled" +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:169 +#, elixir-format +msgid "This action is outside the authorized scopes" +msgstr "" + +#: lib/pleroma/web/oauth/fallback_controller.ex:14 +#, elixir-format +msgid "Unknown error, please check the details and try again." +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:116 +#: lib/pleroma/web/oauth/oauth_controller.ex:155 +#, elixir-format +msgid "Unlisted redirect_uri." +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:391 +#, elixir-format +msgid "Unsupported OAuth provider: %{provider}." +msgstr "" + +#: lib/pleroma/uploaders/uploader.ex:72 +#, elixir-format +msgid "Uploader callback timeout" +msgstr "" + +#: lib/pleroma/web/uploader_controller.ex:23 +#, elixir-format +msgid "bad request" +msgstr "" + +#: lib/pleroma/web/twitter_api/twitter_api.ex:103 +#, elixir-format +msgid "CAPTCHA Error" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:200 +#, elixir-format +msgid "Could not add reaction emoji" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:211 +#, elixir-format +msgid "Could not remove reaction emoji" +msgstr "" + +#: lib/pleroma/web/twitter_api/twitter_api.ex:129 +#, elixir-format +msgid "Invalid CAPTCHA (Missing parameter: %{name})" +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/list_controller.ex:92 +#, elixir-format +msgid "List not found" +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:124 +#, elixir-format +msgid "Missing parameter: %{name}" +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:207 +#: lib/pleroma/web/oauth/oauth_controller.ex:322 +#, elixir-format +msgid "Password reset is required" +msgstr "" + +#: lib/pleroma/tests/auth_test_controller.ex:9 +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:6 lib/pleroma/web/admin_api/admin_api_controller.ex:6 +#: lib/pleroma/web/controller_helper.ex:6 lib/pleroma/web/fallback_redirect_controller.ex:6 +#: lib/pleroma/web/feed/tag_controller.ex:6 lib/pleroma/web/feed/user_controller.ex:6 +#: lib/pleroma/web/mailer/subscription_controller.ex:2 lib/pleroma/web/masto_fe_controller.ex:6 +#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/app_controller.ex:6 +#: lib/pleroma/web/mastodon_api/controllers/auth_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/conversation_controller.ex:6 +#: lib/pleroma/web/mastodon_api/controllers/custom_emoji_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/domain_block_controller.ex:6 +#: lib/pleroma/web/mastodon_api/controllers/fallback_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/filter_controller.ex:6 +#: lib/pleroma/web/mastodon_api/controllers/follow_request_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/instance_controller.ex:6 +#: lib/pleroma/web/mastodon_api/controllers/list_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/marker_controller.ex:6 +#: lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex:14 lib/pleroma/web/mastodon_api/controllers/media_controller.ex:6 +#: lib/pleroma/web/mastodon_api/controllers/notification_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/poll_controller.ex:6 +#: lib/pleroma/web/mastodon_api/controllers/report_controller.ex:8 lib/pleroma/web/mastodon_api/controllers/scheduled_activity_controller.ex:6 +#: lib/pleroma/web/mastodon_api/controllers/search_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/status_controller.ex:6 +#: lib/pleroma/web/mastodon_api/controllers/subscription_controller.ex:7 lib/pleroma/web/mastodon_api/controllers/suggestion_controller.ex:6 +#: lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex:6 lib/pleroma/web/media_proxy/media_proxy_controller.ex:6 +#: lib/pleroma/web/mongooseim/mongoose_im_controller.ex:6 lib/pleroma/web/nodeinfo/nodeinfo_controller.ex:6 +#: lib/pleroma/web/oauth/fallback_controller.ex:6 lib/pleroma/web/oauth/mfa_controller.ex:10 +#: lib/pleroma/web/oauth/oauth_controller.ex:6 lib/pleroma/web/ostatus/ostatus_controller.ex:6 +#: lib/pleroma/web/pleroma_api/controllers/account_controller.ex:6 lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex:2 +#: lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex:6 lib/pleroma/web/pleroma_api/controllers/pleroma_api_controller.ex:6 +#: lib/pleroma/web/pleroma_api/controllers/scrobble_controller.ex:6 +#: lib/pleroma/web/pleroma_api/controllers/two_factor_authentication_controller.ex:7 lib/pleroma/web/static_fe/static_fe_controller.ex:6 +#: lib/pleroma/web/twitter_api/controllers/password_controller.ex:10 lib/pleroma/web/twitter_api/controllers/remote_follow_controller.ex:6 +#: lib/pleroma/web/twitter_api/controllers/util_controller.ex:6 lib/pleroma/web/twitter_api/twitter_api_controller.ex:6 +#: lib/pleroma/web/uploader_controller.ex:6 lib/pleroma/web/web_finger/web_finger_controller.ex:6 +#, elixir-format +msgid "Security violation: OAuth scopes check was neither handled nor explicitly skipped." +msgstr "" + +#: lib/pleroma/plugs/ensure_authenticated_plug.ex:28 +#, elixir-format +msgid "Two-factor authentication enabled, you must use a access token." +msgstr "" + +#: lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex:210 +#, elixir-format +msgid "Unexpected error occurred while adding file to pack." +msgstr "" + +#: lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex:138 +#, elixir-format +msgid "Unexpected error occurred while creating pack." +msgstr "" + +#: lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex:278 +#, elixir-format +msgid "Unexpected error occurred while removing file from pack." +msgstr "" + +#: lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex:250 +#, elixir-format +msgid "Unexpected error occurred while updating file in pack." +msgstr "" + +#: lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex:179 +#, elixir-format +msgid "Unexpected error occurred while updating pack metadata." +msgstr "" + +#: lib/pleroma/plugs/user_is_admin_plug.ex:40 +#, elixir-format +msgid "User is not an admin or OAuth admin scope is not granted." +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/subscription_controller.ex:61 +#, elixir-format +msgid "Web push subscription is disabled on this Pleroma instance" +msgstr "" + +#: lib/pleroma/web/admin_api/admin_api_controller.ex:502 +#, elixir-format +msgid "You can't revoke your own admin/moderator status." +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex:105 +#, elixir-format +msgid "authorization required for timeline view" +msgstr "" diff --git a/priv/gettext/nl/LC_MESSAGES/errors.po b/priv/gettext/nl/LC_MESSAGES/errors.po index 7e12ff96c..3118f6b5d 100644 --- a/priv/gettext/nl/LC_MESSAGES/errors.po +++ b/priv/gettext/nl/LC_MESSAGES/errors.po @@ -3,14 +3,16 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-05-15 09:37+0000\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" +"PO-Revision-Date: 2020-06-02 07:36+0000\n" +"Last-Translator: Fristi \n" +"Language-Team: Dutch \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 2.5.1\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" ## This file is a PO Template file. ## @@ -23,142 +25,142 @@ msgstr "" ## effect: edit them in PO (`.po`) files instead. ## From Ecto.Changeset.cast/4 msgid "can't be blank" -msgstr "" +msgstr "kan niet leeg zijn" ## From Ecto.Changeset.unique_constraint/3 msgid "has already been taken" -msgstr "" +msgstr "is al bezet" ## From Ecto.Changeset.put_change/3 msgid "is invalid" -msgstr "" +msgstr "is ongeldig" ## From Ecto.Changeset.validate_format/3 msgid "has invalid format" -msgstr "" +msgstr "heeft een ongeldig formaat" ## From Ecto.Changeset.validate_subset/3 msgid "has an invalid entry" -msgstr "" +msgstr "heeft een ongeldige entry" ## From Ecto.Changeset.validate_exclusion/3 msgid "is reserved" -msgstr "" +msgstr "is gereserveerd" ## From Ecto.Changeset.validate_confirmation/3 msgid "does not match confirmation" -msgstr "" +msgstr "komt niet overeen met bevestiging" ## From Ecto.Changeset.no_assoc_constraint/3 msgid "is still associated with this entry" -msgstr "" +msgstr "is nog geassocieerd met deze entry" msgid "are still associated with this entry" -msgstr "" +msgstr "zijn nog geassocieerd met deze entry" ## From Ecto.Changeset.validate_length/3 msgid "should be %{count} character(s)" msgid_plural "should be %{count} character(s)" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "dient %{count} karakter te bevatten" +msgstr[1] "dient %{count} karakters te bevatten" msgid "should have %{count} item(s)" msgid_plural "should have %{count} item(s)" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "dient %{count} item te bevatten" +msgstr[1] "dient %{count} items te bevatten" msgid "should be at least %{count} character(s)" msgid_plural "should be at least %{count} character(s)" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "dient ten minste %{count} karakter te bevatten" +msgstr[1] "dient ten minste %{count} karakters te bevatten" msgid "should have at least %{count} item(s)" msgid_plural "should have at least %{count} item(s)" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "dient ten minste %{count} item te bevatten" +msgstr[1] "dient ten minste %{count} items te bevatten" msgid "should be at most %{count} character(s)" msgid_plural "should be at most %{count} character(s)" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "dient niet meer dan %{count} karakter te bevatten" +msgstr[1] "dient niet meer dan %{count} karakters te bevatten" msgid "should have at most %{count} item(s)" msgid_plural "should have at most %{count} item(s)" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "dient niet meer dan %{count} item te bevatten" +msgstr[1] "dient niet meer dan %{count} items te bevatten" ## From Ecto.Changeset.validate_number/3 msgid "must be less than %{number}" -msgstr "" +msgstr "dient kleiner te zijn dan %{number}" msgid "must be greater than %{number}" -msgstr "" +msgstr "dient groter te zijn dan %{number}" msgid "must be less than or equal to %{number}" -msgstr "" +msgstr "dient kleiner dan of gelijk te zijn aan %{number}" msgid "must be greater than or equal to %{number}" -msgstr "" +msgstr "dient groter dan of gelijk te zijn aan %{number}" msgid "must be equal to %{number}" -msgstr "" +msgstr "dient gelijk te zijn aan %{number}" #: lib/pleroma/web/common_api/common_api.ex:421 #, elixir-format msgid "Account not found" -msgstr "" +msgstr "Account niet gevonden" #: lib/pleroma/web/common_api/common_api.ex:249 #, elixir-format msgid "Already voted" -msgstr "" +msgstr "Al gestemd" #: lib/pleroma/web/oauth/oauth_controller.ex:360 #, elixir-format msgid "Bad request" -msgstr "" +msgstr "Bad request" #: lib/pleroma/web/activity_pub/activity_pub_controller.ex:425 #, elixir-format msgid "Can't delete object" -msgstr "" +msgstr "Object kan niet verwijderd worden" #: lib/pleroma/web/mastodon_api/controllers/status_controller.ex:196 #, elixir-format msgid "Can't delete this post" -msgstr "" +msgstr "Bericht kan niet verwijderd worden" #: lib/pleroma/web/controller_helper.ex:95 #: lib/pleroma/web/controller_helper.ex:101 #, elixir-format msgid "Can't display this activity" -msgstr "" +msgstr "Activiteit kan niet worden getoond" #: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:227 #: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:254 #, elixir-format msgid "Can't find user" -msgstr "" +msgstr "Gebruiker kan niet gevonden worden" #: lib/pleroma/web/pleroma_api/controllers/account_controller.ex:114 #, elixir-format msgid "Can't get favorites" -msgstr "" +msgstr "Favorieten konden niet opgehaald worden" #: lib/pleroma/web/activity_pub/activity_pub_controller.ex:437 #, elixir-format msgid "Can't like object" -msgstr "" +msgstr "Object kan niet geliked worden" #: lib/pleroma/web/common_api/utils.ex:556 #, elixir-format msgid "Cannot post an empty status without attachments" -msgstr "" +msgstr "Status kan niet geplaatst worden zonder tekst of bijlagen" #: lib/pleroma/web/common_api/utils.ex:504 #, elixir-format msgid "Comment must be up to %{max_size} characters" -msgstr "" +msgstr "Opmerking dient maximaal %{max_size} karakters te bevatten" #: lib/pleroma/config/config_db.ex:222 #, elixir-format diff --git a/priv/repo/migrations/20200309123730_create_chats.exs b/priv/repo/migrations/20200309123730_create_chats.exs new file mode 100644 index 000000000..715d798ea --- /dev/null +++ b/priv/repo/migrations/20200309123730_create_chats.exs @@ -0,0 +1,16 @@ +defmodule Pleroma.Repo.Migrations.CreateChats do + use Ecto.Migration + + def change do + create table(:chats) do + add(:user_id, references(:users, type: :uuid)) + # Recipient is an ActivityPub id, to future-proof for group support. + add(:recipient, :string) + add(:unread, :integer, default: 0) + timestamps() + end + + # There's only one chat between a user and a recipient. + create(index(:chats, [:user_id, :recipient], unique: true)) + end +end diff --git a/priv/repo/migrations/20200322174133_user_raw_bio.exs b/priv/repo/migrations/20200322174133_user_raw_bio.exs new file mode 100644 index 000000000..ddf9be4f5 --- /dev/null +++ b/priv/repo/migrations/20200322174133_user_raw_bio.exs @@ -0,0 +1,9 @@ +defmodule Pleroma.Repo.Migrations.UserRawBio do + use Ecto.Migration + + def change do + alter table(:users) do + add_if_not_exists(:raw_bio, :text) + end + end +end diff --git a/priv/repo/migrations/20200323122421_mrf_config_move_from_instance_namespace.exs b/priv/repo/migrations/20200323122421_mrf_config_move_from_instance_namespace.exs new file mode 100644 index 000000000..ef36c4eb7 --- /dev/null +++ b/priv/repo/migrations/20200323122421_mrf_config_move_from_instance_namespace.exs @@ -0,0 +1,39 @@ +defmodule Pleroma.Repo.Migrations.MrfConfigMoveFromInstanceNamespace do + use Ecto.Migration + + alias Pleroma.ConfigDB + + @old_keys [:rewrite_policy, :mrf_transparency, :mrf_transparency_exclusions] + def change do + config = ConfigDB.get_by_params(%{group: :pleroma, key: :instance}) + + if config do + mrf = + config.value + |> Keyword.take(@old_keys) + |> Keyword.new(fn + {:rewrite_policy, policies} -> {:policies, policies} + {:mrf_transparency, transparency} -> {:transparency, transparency} + {:mrf_transparency_exclusions, exclusions} -> {:transparency_exclusions, exclusions} + end) + + if mrf != [] do + {:ok, _} = + %ConfigDB{} + |> ConfigDB.changeset(%{group: :pleroma, key: :mrf, value: mrf}) + |> Pleroma.Repo.insert() + + new_instance = Keyword.drop(config.value, @old_keys) + + if new_instance != [] do + {:ok, _} = + config + |> ConfigDB.changeset(%{value: new_instance}) + |> Pleroma.Repo.update() + else + {:ok, _} = ConfigDB.delete(config) + end + end + end + end +end diff --git a/priv/repo/migrations/20200328193433_populate_user_raw_bio.exs b/priv/repo/migrations/20200328193433_populate_user_raw_bio.exs new file mode 100644 index 000000000..cb35db3f5 --- /dev/null +++ b/priv/repo/migrations/20200328193433_populate_user_raw_bio.exs @@ -0,0 +1,25 @@ +defmodule Pleroma.Repo.Migrations.PopulateUserRawBio do + use Ecto.Migration + import Ecto.Query + alias Pleroma.User + alias Pleroma.Repo + + def change do + {:ok, _} = Application.ensure_all_started(:fast_sanitize) + + User.Query.build(%{local: true}) + |> select([u], struct(u, [:id, :ap_id, :bio])) + |> Repo.stream() + |> Enum.each(fn %{bio: bio} = user -> + if bio do + raw_bio = + bio + |> String.replace(~r(
), "\n") + |> Pleroma.HTML.strip_tags() + + Ecto.Changeset.cast(user, %{raw_bio: raw_bio}, [:raw_bio]) + |> Repo.update() + end + end) + end +end diff --git a/priv/repo/migrations/20200508092434_update_counter_cache_table.exs b/priv/repo/migrations/20200508092434_update_counter_cache_table.exs new file mode 100644 index 000000000..738344868 --- /dev/null +++ b/priv/repo/migrations/20200508092434_update_counter_cache_table.exs @@ -0,0 +1,143 @@ +defmodule Pleroma.Repo.Migrations.UpdateCounterCacheTable do + use Ecto.Migration + + @function_name "update_status_visibility_counter_cache" + @trigger_name "status_visibility_counter_cache_trigger" + + def up do + execute("drop trigger if exists #{@trigger_name} on activities") + execute("drop function if exists #{@function_name}()") + drop_if_exists(unique_index(:counter_cache, [:name])) + drop_if_exists(table(:counter_cache)) + + create_if_not_exists table(:counter_cache) do + add(:instance, :string, null: false) + add(:direct, :bigint, null: false, default: 0) + add(:private, :bigint, null: false, default: 0) + add(:unlisted, :bigint, null: false, default: 0) + add(:public, :bigint, null: false, default: 0) + end + + create_if_not_exists(unique_index(:counter_cache, [:instance])) + + """ + CREATE OR REPLACE FUNCTION #{@function_name}() + RETURNS TRIGGER AS + $$ + DECLARE + hostname character varying(255); + visibility_new character varying(64); + visibility_old character varying(64); + actor character varying(255); + BEGIN + IF TG_OP = 'DELETE' THEN + actor := OLD.actor; + ELSE + actor := NEW.actor; + END IF; + hostname := split_part(actor, '/', 3); + IF TG_OP = 'INSERT' THEN + visibility_new := activity_visibility(NEW.actor, NEW.recipients, NEW.data); + IF NEW.data->>'type' = 'Create' + AND visibility_new IN ('public', 'unlisted', 'private', 'direct') THEN + EXECUTE format('INSERT INTO "counter_cache" ("instance", %1$I) VALUES ($1, 1) + ON CONFLICT ("instance") DO + UPDATE SET %1$I = "counter_cache".%1$I + 1', visibility_new) + USING hostname; + END IF; + RETURN NEW; + ELSIF TG_OP = 'UPDATE' THEN + visibility_new := activity_visibility(NEW.actor, NEW.recipients, NEW.data); + visibility_old := activity_visibility(OLD.actor, OLD.recipients, OLD.data); + IF (NEW.data->>'type' = 'Create') + AND (OLD.data->>'type' = 'Create') + AND visibility_new != visibility_old + AND visibility_new IN ('public', 'unlisted', 'private', 'direct') THEN + EXECUTE format('UPDATE "counter_cache" SET + %1$I = greatest("counter_cache".%1$I - 1, 0), + %2$I = "counter_cache".%2$I + 1 + WHERE "instance" = $1', visibility_old, visibility_new) + USING hostname; + END IF; + RETURN NEW; + ELSIF TG_OP = 'DELETE' THEN + IF OLD.data->>'type' = 'Create' THEN + visibility_old := activity_visibility(OLD.actor, OLD.recipients, OLD.data); + EXECUTE format('UPDATE "counter_cache" SET + %1$I = greatest("counter_cache".%1$I - 1, 0) + WHERE "instance" = $1', visibility_old) + USING hostname; + END IF; + RETURN OLD; + END IF; + END; + $$ + LANGUAGE 'plpgsql'; + """ + |> execute() + + execute("DROP TRIGGER IF EXISTS #{@trigger_name} ON activities") + + """ + CREATE TRIGGER #{@trigger_name} + BEFORE + INSERT + OR UPDATE of recipients, data + OR DELETE + ON activities + FOR EACH ROW + EXECUTE PROCEDURE #{@function_name}(); + """ + |> execute() + end + + def down do + execute("DROP TRIGGER IF EXISTS #{@trigger_name} ON activities") + execute("DROP FUNCTION IF EXISTS #{@function_name}()") + drop_if_exists(unique_index(:counter_cache, [:instance])) + drop_if_exists(table(:counter_cache)) + + create_if_not_exists table(:counter_cache) do + add(:name, :string, null: false) + add(:count, :bigint, null: false, default: 0) + end + + create_if_not_exists(unique_index(:counter_cache, [:name])) + + """ + CREATE OR REPLACE FUNCTION #{@function_name}() + RETURNS TRIGGER AS + $$ + DECLARE + BEGIN + IF TG_OP = 'INSERT' THEN + IF NEW.data->>'type' = 'Create' THEN + EXECUTE 'INSERT INTO counter_cache (name, count) VALUES (''status_visibility_' || activity_visibility(NEW.actor, NEW.recipients, NEW.data) || ''', 1) ON CONFLICT (name) DO UPDATE SET count = counter_cache.count + 1'; + END IF; + RETURN NEW; + ELSIF TG_OP = 'UPDATE' THEN + IF (NEW.data->>'type' = 'Create') and (OLD.data->>'type' = 'Create') and activity_visibility(NEW.actor, NEW.recipients, NEW.data) != activity_visibility(OLD.actor, OLD.recipients, OLD.data) THEN + EXECUTE 'INSERT INTO counter_cache (name, count) VALUES (''status_visibility_' || activity_visibility(NEW.actor, NEW.recipients, NEW.data) || ''', 1) ON CONFLICT (name) DO UPDATE SET count = counter_cache.count + 1'; + EXECUTE 'update counter_cache SET count = counter_cache.count - 1 where count > 0 and name = ''status_visibility_' || activity_visibility(OLD.actor, OLD.recipients, OLD.data) || ''';'; + END IF; + RETURN NEW; + ELSIF TG_OP = 'DELETE' THEN + IF OLD.data->>'type' = 'Create' THEN + EXECUTE 'update counter_cache SET count = counter_cache.count - 1 where count > 0 and name = ''status_visibility_' || activity_visibility(OLD.actor, OLD.recipients, OLD.data) || ''';'; + END IF; + RETURN OLD; + END IF; + END; + $$ + LANGUAGE 'plpgsql'; + """ + |> execute() + + """ + CREATE TRIGGER #{@trigger_name} BEFORE INSERT OR UPDATE of recipients, data OR DELETE ON activities + FOR EACH ROW + EXECUTE PROCEDURE #{@function_name}(); + """ + |> execute() + end +end diff --git a/priv/repo/migrations/20200520155351_add_recipients_contain_blocked_domains_function.exs b/priv/repo/migrations/20200520155351_add_recipients_contain_blocked_domains_function.exs new file mode 100644 index 000000000..14e873125 --- /dev/null +++ b/priv/repo/migrations/20200520155351_add_recipients_contain_blocked_domains_function.exs @@ -0,0 +1,33 @@ +defmodule Pleroma.Repo.Migrations.AddRecipientsContainBlockedDomainsFunction do + use Ecto.Migration + @disable_ddl_transaction true + + def up do + statement = """ + CREATE OR REPLACE FUNCTION recipients_contain_blocked_domains(recipients varchar[], blocked_domains varchar[]) RETURNS boolean AS $$ + DECLARE + recipient_domain varchar; + recipient varchar; + BEGIN + FOREACH recipient IN ARRAY recipients LOOP + recipient_domain = split_part(recipient, '/', 3)::varchar; + + IF recipient_domain = ANY(blocked_domains) THEN + RETURN TRUE; + END IF; + END LOOP; + + RETURN FALSE; + END; + $$ LANGUAGE plpgsql; + """ + + execute(statement) + end + + def down do + execute( + "drop function if exists recipients_contain_blocked_domains(recipients varchar[], blocked_domains varchar[])" + ) + end +end diff --git a/priv/repo/migrations/20200527163635_delete_notifications_from_invisible_users.exs b/priv/repo/migrations/20200527163635_delete_notifications_from_invisible_users.exs new file mode 100644 index 000000000..9e95a8111 --- /dev/null +++ b/priv/repo/migrations/20200527163635_delete_notifications_from_invisible_users.exs @@ -0,0 +1,18 @@ +defmodule Pleroma.Repo.Migrations.DeleteNotificationsFromInvisibleUsers do + use Ecto.Migration + + import Ecto.Query + alias Pleroma.Repo + + def up do + Pleroma.Notification + |> join(:inner, [n], activity in assoc(n, :activity)) + |> where( + [n, a], + fragment("? in (SELECT ap_id FROM users WHERE invisible = true)", a.actor) + ) + |> Repo.delete_all() + end + + def down, do: :ok +end diff --git a/priv/repo/migrations/20200602094828_add_type_to_notifications.exs b/priv/repo/migrations/20200602094828_add_type_to_notifications.exs new file mode 100644 index 000000000..19c733628 --- /dev/null +++ b/priv/repo/migrations/20200602094828_add_type_to_notifications.exs @@ -0,0 +1,9 @@ +defmodule Pleroma.Repo.Migrations.AddTypeToNotifications do + use Ecto.Migration + + def change do + alter table(:notifications) do + add(:type, :string) + end + end +end diff --git a/priv/repo/migrations/20200602125218_backfill_notification_types.exs b/priv/repo/migrations/20200602125218_backfill_notification_types.exs new file mode 100644 index 000000000..996d721ee --- /dev/null +++ b/priv/repo/migrations/20200602125218_backfill_notification_types.exs @@ -0,0 +1,10 @@ +defmodule Pleroma.Repo.Migrations.BackfillNotificationTypes do + use Ecto.Migration + + def up do + Pleroma.MigrationHelper.NotificationBackfill.fill_in_notification_types() + end + + def down do + end +end diff --git a/priv/repo/migrations/20200602150528_create_chat_message_reference.exs b/priv/repo/migrations/20200602150528_create_chat_message_reference.exs new file mode 100644 index 000000000..6f9148b7c --- /dev/null +++ b/priv/repo/migrations/20200602150528_create_chat_message_reference.exs @@ -0,0 +1,20 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Repo.Migrations.CreateChatMessageReference do + use Ecto.Migration + + def change do + create table(:chat_message_references, primary_key: false) do + add(:id, :uuid, primary_key: true) + add(:chat_id, references(:chats, on_delete: :delete_all), null: false) + add(:object_id, references(:objects, on_delete: :delete_all), null: false) + add(:seen, :boolean, default: false, null: false) + + timestamps() + end + + create(index(:chat_message_references, [:chat_id, "id desc"])) + end +end diff --git a/priv/repo/migrations/20200603105113_add_unique_index_to_chat_message_references.exs b/priv/repo/migrations/20200603105113_add_unique_index_to_chat_message_references.exs new file mode 100644 index 000000000..fdf85132e --- /dev/null +++ b/priv/repo/migrations/20200603105113_add_unique_index_to_chat_message_references.exs @@ -0,0 +1,7 @@ +defmodule Pleroma.Repo.Migrations.AddUniqueIndexToChatMessageReferences do + use Ecto.Migration + + def change do + create(unique_index(:chat_message_references, [:object_id, :chat_id])) + end +end diff --git a/priv/repo/migrations/20200603120448_remove_unread_from_chats.exs b/priv/repo/migrations/20200603120448_remove_unread_from_chats.exs new file mode 100644 index 000000000..6322137d5 --- /dev/null +++ b/priv/repo/migrations/20200603120448_remove_unread_from_chats.exs @@ -0,0 +1,9 @@ +defmodule Pleroma.Repo.Migrations.RemoveUnreadFromChats do + use Ecto.Migration + + def change do + alter table(:chats) do + remove(:unread, :integer, default: 0) + end + end +end diff --git a/priv/repo/migrations/20200603122732_add_seen_index_to_chat_message_references.exs b/priv/repo/migrations/20200603122732_add_seen_index_to_chat_message_references.exs new file mode 100644 index 000000000..a5065d612 --- /dev/null +++ b/priv/repo/migrations/20200603122732_add_seen_index_to_chat_message_references.exs @@ -0,0 +1,12 @@ +defmodule Pleroma.Repo.Migrations.AddSeenIndexToChatMessageReferences do + use Ecto.Migration + + def change do + create( + index(:chat_message_references, [:chat_id], + where: "seen = false", + name: "unseen_messages_count_index" + ) + ) + end +end diff --git a/priv/repo/migrations/20200604150318_migrate_seen_to_unread_in_chat_message_references.exs b/priv/repo/migrations/20200604150318_migrate_seen_to_unread_in_chat_message_references.exs new file mode 100644 index 000000000..fd6bc7bc7 --- /dev/null +++ b/priv/repo/migrations/20200604150318_migrate_seen_to_unread_in_chat_message_references.exs @@ -0,0 +1,30 @@ +defmodule Pleroma.Repo.Migrations.MigrateSeenToUnreadInChatMessageReferences do + use Ecto.Migration + + def change do + drop( + index(:chat_message_references, [:chat_id], + where: "seen = false", + name: "unseen_messages_count_index" + ) + ) + + alter table(:chat_message_references) do + add(:unread, :boolean, default: true) + end + + execute("update chat_message_references set unread = not seen") + + alter table(:chat_message_references) do + modify(:unread, :boolean, default: true, null: false) + remove(:seen, :boolean, default: false, null: false) + end + + create( + index(:chat_message_references, [:chat_id], + where: "unread = true", + name: "unread_messages_count_index" + ) + ) + end +end diff --git a/priv/repo/migrations/20200606105430_change_type_to_enum_for_notifications.exs b/priv/repo/migrations/20200606105430_change_type_to_enum_for_notifications.exs new file mode 100644 index 000000000..9ea34436b --- /dev/null +++ b/priv/repo/migrations/20200606105430_change_type_to_enum_for_notifications.exs @@ -0,0 +1,36 @@ +defmodule Pleroma.Repo.Migrations.ChangeTypeToEnumForNotifications do + use Ecto.Migration + + def up do + """ + create type notification_type as enum ( + 'follow', + 'follow_request', + 'mention', + 'move', + 'pleroma:emoji_reaction', + 'pleroma:chat_mention', + 'reblog', + 'favourite' + ) + """ + |> execute() + + """ + alter table notifications + alter column type type notification_type using (type::notification_type) + """ + |> execute() + end + + def down do + alter table(:notifications) do + modify(:type, :string) + end + + """ + drop type notification_type + """ + |> execute() + end +end diff --git a/priv/repo/migrations/20200607112923_change_chat_id_to_flake.exs b/priv/repo/migrations/20200607112923_change_chat_id_to_flake.exs new file mode 100644 index 000000000..f14e269ca --- /dev/null +++ b/priv/repo/migrations/20200607112923_change_chat_id_to_flake.exs @@ -0,0 +1,23 @@ +defmodule Pleroma.Repo.Migrations.ChangeChatIdToFlake do + use Ecto.Migration + + def up do + execute(""" + alter table chats + drop constraint chats_pkey cascade, + alter column id drop default, + alter column id set data type uuid using cast( lpad( to_hex(id), 32, '0') as uuid), + add primary key (id) + """) + + execute(""" + alter table chat_message_references + alter column chat_id set data type uuid using cast( lpad( to_hex(chat_id), 32, '0') as uuid), + add constraint chat_message_references_chat_id_fkey foreign key (chat_id) references chats(id) on delete cascade + """) + end + + def down do + :ok + end +end diff --git a/priv/repo/optional_migrations/rum_indexing/20190510135645_add_fts_index_to_objects_two.exs b/priv/repo/optional_migrations/rum_indexing/20190510135645_add_fts_index_to_objects_two.exs index 6227769dc..757afa129 100644 --- a/priv/repo/optional_migrations/rum_indexing/20190510135645_add_fts_index_to_objects_two.exs +++ b/priv/repo/optional_migrations/rum_indexing/20190510135645_add_fts_index_to_objects_two.exs @@ -10,8 +10,8 @@ def up do execute("CREATE FUNCTION objects_fts_update() RETURNS trigger AS $$ begin - new.fts_content := to_tsvector('english', new.data->>'content'); - return new; + new.fts_content := to_tsvector('english', new.data->>'content'); + return new; end $$ LANGUAGE plpgsql") execute("create index if not exists objects_fts on objects using RUM (fts_content rum_tsvector_addon_ops, inserted_at) with (attach = 'inserted_at', to = 'fts_content');") diff --git a/priv/static/adminfe/app.796ca6d4.css b/priv/static/adminfe/app.6684eb28.css similarity index 100% rename from priv/static/adminfe/app.796ca6d4.css rename to priv/static/adminfe/app.6684eb28.css diff --git a/priv/static/adminfe/chunk-0558.af0d89cd.css b/priv/static/adminfe/chunk-070d.d2dd6533.css similarity index 100% rename from priv/static/adminfe/chunk-0558.af0d89cd.css rename to priv/static/adminfe/chunk-070d.d2dd6533.css diff --git a/priv/static/adminfe/chunk-0cbc.60bba79b.css b/priv/static/adminfe/chunk-0cbc.60bba79b.css new file mode 100644 index 000000000..c6280f7ef --- /dev/null +++ b/priv/static/adminfe/chunk-0cbc.60bba79b.css @@ -0,0 +1 @@ +.select-field[data-v-78fa3c24]{width:350px}@media only screen and (max-width:480px){.select-field[data-v-78fa3c24]{width:100%;margin-bottom:5px}}.el-dialog__body{padding:20px}.create-account-form-item{margin-bottom:20px}.create-account-form-item-without-margin{margin-bottom:0}@media only screen and (max-width:480px){.create-user-dialog{width:85%}.create-account-form-item{margin-bottom:20px}.el-dialog__body{padding:20px}}.moderate-user-button{text-align:left;width:350px;padding:10px}.moderate-user-button-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:480px){.moderate-user-button{width:100%}}.actions-button{text-align:left;width:350px;padding:10px}.actions-container{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0 15px 10px}.actions-container .el-dropdown{margin-left:10px}.active-tag{color:#409eff;font-weight:700}.active-tag .el-icon-check{color:#409eff;float:right;margin:7px 0 0 15px}.el-dropdown-link:hover{cursor:pointer;color:#409eff}.create-account>.el-icon-plus{margin-right:5px}.password-reset-token{margin:0 0 14px}.password-reset-token-dialog{width:50%}.reset-password-link{text-decoration:underline}.users-header-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}.users-container h1{margin:10px 0 0 15px;height:40px}.users-container .el-table__row:hover{cursor:pointer}.users-container .pagination{margin:25px 0;text-align:center}.users-container .reboot-button{margin:0 15px 0 0;padding:10px;width:145px}.users-container .search{width:350px;float:right;margin-left:10px}.users-container .filter-container{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:15px}.users-container .user-count{color:grey;font-size:28px}@media only screen and (max-width:480px){.password-reset-token-dialog{width:85%}.users-container h1{margin:0}.users-container .actions-button{width:100%}.users-container .actions-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:0 10px 7px}.users-container .el-icon-arrow-down{font-size:12px}.users-container .search{width:100%;margin-left:0}.users-container .filter-container{display:-webkit-box;display:-ms-flexbox;display:flex;height:82px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:0 10px}.users-container .el-tag{width:30px;display:inline-block;margin-bottom:4px;font-weight:700}.users-container .el-tag.el-tag--danger,.users-container .el-tag.el-tag--success{padding-left:8px}.users-container .reboot-button{margin:0}.users-container .users-header-container{margin:7px 10px 12px}.users-container .user-count{color:grey;font-size:22px}}@media only screen and (max-width:801px) and (min-width:481px){.actions-button,.search{width:49%}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-143c.43ada4fc.css b/priv/static/adminfe/chunk-143c.43ada4fc.css new file mode 100644 index 000000000..b580e0699 --- /dev/null +++ b/priv/static/adminfe/chunk-143c.43ada4fc.css @@ -0,0 +1 @@ +.actions-button[data-v-2d9f3c5e]{text-align:left;width:350px;padding:10px}.actions-button-container[data-v-2d9f3c5e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.el-dropdown[data-v-2d9f3c5e]{float:right}.el-icon-edit[data-v-2d9f3c5e]{margin-right:5px}.tag-container[data-v-2d9f3c5e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tag-text[data-v-2d9f3c5e]{padding-right:20px}.no-hover[data-v-2d9f3c5e]:hover{color:#606266;background-color:#fff;cursor:auto} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-1609.408dae86.css b/priv/static/adminfe/chunk-1609.408dae86.css new file mode 100644 index 000000000..483d88545 --- /dev/null +++ b/priv/static/adminfe/chunk-1609.408dae86.css @@ -0,0 +1 @@ +.router-link{text-decoration:none}.moderation-log-container[data-v-60b585cf]{margin:0 15px}h1[data-v-60b585cf]{margin:0}.el-timeline[data-v-60b585cf]{margin:25px 45px 0 0;padding:0}.moderation-log-date-panel[data-v-60b585cf]{width:350px}.moderation-log-header-container[data-v-60b585cf]{-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:10px 0 15px}.moderation-log-header-container[data-v-60b585cf],.moderation-log-nav-container[data-v-60b585cf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.moderation-log-search[data-v-60b585cf]{width:350px}.moderation-log-user-select[data-v-60b585cf]{margin:0 0 20px;width:350px}.reboot-button[data-v-60b585cf]{padding:10px;margin:0;width:145px}.search-container[data-v-60b585cf]{text-align:right}.pagination[data-v-60b585cf]{text-align:center}@media only screen and (max-width:480px){h1[data-v-60b585cf]{font-size:24px}.moderation-log-date-panel[data-v-60b585cf]{width:100%}.moderation-log-user-select[data-v-60b585cf]{margin:0 0 10px;width:55%}.moderation-log-search[data-v-60b585cf]{width:40%}}@media only screen and (max-width:801px) and (min-width:481px){.moderation-log-date-panel[data-v-60b585cf]{width:55%}.moderation-log-user-select[data-v-60b585cf]{margin:0 0 10px;width:55%}.moderation-log-search[data-v-60b585cf]{width:40%}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-176e.5d7d957b.css b/priv/static/adminfe/chunk-176e.5d7d957b.css new file mode 100644 index 000000000..0bedf3773 --- /dev/null +++ b/priv/static/adminfe/chunk-176e.5d7d957b.css @@ -0,0 +1 @@ +.statuses-container{padding:0 15px}.statuses-container h1{margin:10px 0 15px}.statuses-container .status-container{margin:0 0 10px}.statuses-header-container .el-button.is-plain:focus,.statuses-header-container .el-button.is-plain:hover{border-color:#dcdfe6;color:#606266;cursor:default}.checkbox-container{margin-bottom:15px}.filter-container{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:22px 0 15px}.reboot-button{padding:10px;margin:0;width:145px}.select-instance{width:396px}.statuses-header,.statuses-header-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}.statuses-pagination{padding:15px 0;text-align:center}@media only screen and (max-width:480px){.checkbox-container{margin-bottom:10px}.filter-container{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:10px 0}.select-field{width:100%;margin-bottom:5px}.select-instance{width:100%}.statuses-header-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.statuses-header-container .el-button-group{width:100%}.statuses-header-container .el-button{padding:10px 6.5px;width:50%}.statuses-header-container .el-button-group>.el-button:first-child{border-bottom-left-radius:0}.statuses-header-container .el-button-group>.el-button:not(:first-child):not(:last-child).private-button{border-top-right-radius:4px}.statuses-header-container .el-button-group>.el-button:not(:first-child):not(:last-child).public-button{border-bottom-left-radius:4px;border-top:#fff}.statuses-header-container .el-button-group>.el-button:last-child{border-top-right-radius:0;border-top:#fff}.statuses-header-container .reboot-button{margin:10px 0 0}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-22d2.813009b9.css b/priv/static/adminfe/chunk-22d2.813009b9.css deleted file mode 100644 index f0a98583e..000000000 --- a/priv/static/adminfe/chunk-22d2.813009b9.css +++ /dev/null @@ -1 +0,0 @@ -.status-card{margin-bottom:10px}.status-card .account{text-decoration:underline;line-height:26px;font-size:13px}.status-card .image{width:20%}.status-card .image img{width:100%}.status-card .show-more-button{margin-left:5px}.status-card .status-account{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.status-card .status-avatar-img{display:inline-block;width:15px;height:15px;margin-right:5px}.status-card .status-account-name{display:inline-block;margin:0;height:22px}.status-card .status-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.status-card .status-checkbox{margin-right:7px}.status-card .status-content{font-size:15px;line-height:26px}.status-card .status-deleted{font-style:italic;margin-top:3px}.status-card .status-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.status-card .status-without-content{font-style:italic}@media only screen and (max-width:480px){.el-message{min-width:80%}.el-message-box{width:80%}.status-card .el-card__header{padding:10px 17px}.status-card .el-tag{margin:3px 4px 3px 0}.status-card .status-account-container{margin-bottom:5px}.status-card .status-actions-button{margin:3px 0}.status-card .status-actions{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.status-card .status-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.moderate-user-button{text-align:left;width:350px;padding:10px}.moderate-user-button-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:480px){.moderate-user-button{width:100%}}.security-settings-container{display:-webkit-box;display:-ms-flexbox;display:flex}.security-settings-container label{width:15%;height:36px}.security-settings-modal .el-dialog__body{padding-top:10px}.security-settings-modal .el-form-item,.security-settings-modal .password-alert{margin-bottom:15px}.security-settings-modal .password-input{margin-bottom:0}.security-settings-submit-button{float:right}@media (max-width:800px){.security-settings-modal .el-dialog{width:90%}}.security-settings-modal .el-alert .el-alert__description{word-break:break-word;font-size:1em}.security-settings-modal .form-text{display:block;margin-top:.25rem;color:#909399}header[data-v-d4bc7d00]{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;margin:22px 0;padding-left:15px}header h1[data-v-d4bc7d00]{margin:0 0 0 10px}table[data-v-d4bc7d00]{margin:10px 0 0 15px}table .name-col[data-v-d4bc7d00]{width:150px}.avatar-name-container[data-v-d4bc7d00]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-table--border[data-v-d4bc7d00]:after,.el-table--group[data-v-d4bc7d00]:after,.el-table[data-v-d4bc7d00]:before{background-color:transparent}.image[data-v-d4bc7d00]{width:20%}.image img[data-v-d4bc7d00]{width:100%}.left-header-container[data-v-d4bc7d00]{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.no-statuses[data-v-d4bc7d00]{margin-left:28px;color:#606266}.poll ul[data-v-d4bc7d00]{list-style-type:none;padding:0;width:30%}.reboot-button[data-v-d4bc7d00]{padding:10px;margin-left:10px}.recent-statuses-container[data-v-d4bc7d00]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:67%}.recent-statuses-header[data-v-d4bc7d00]{margin-top:10px}.security-setting-button[data-v-d4bc7d00]{margin-top:20px;width:100%}.statuses[data-v-d4bc7d00]{padding:0 20px 0 0}.show-private[data-v-d4bc7d00]{width:200px;text-align:left;line-height:67px;margin-right:20px}.show-private-statuses[data-v-d4bc7d00]{margin-left:28px;margin-bottom:20px}.recent-statuses[data-v-d4bc7d00]{margin-left:28px}.user-page-header[data-v-d4bc7d00]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 15px 0 20px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.user-page-header h1[data-v-d4bc7d00]{display:inline}.user-profile-card[data-v-d4bc7d00]{margin:0 20px;width:30%;height:-webkit-fit-content;height:-moz-fit-content;height:fit-content}.user-profile-container[data-v-d4bc7d00]{display:-webkit-box;display:-ms-flexbox;display:flex}.user-profile-table[data-v-d4bc7d00]{margin:0}.user-profile-tag[data-v-d4bc7d00]{margin:0 4px 4px 0}@media only screen and (max-width:480px){.avatar-name-container[data-v-d4bc7d00]{margin-bottom:10px}.recent-statuses[data-v-d4bc7d00]{margin:20px 10px 15px}.recent-statuses-container[data-v-d4bc7d00]{width:100%;margin:0 10px}.show-private-statuses[data-v-d4bc7d00]{margin:0 10px 20px}.user-page-header[data-v-d4bc7d00]{padding:0;margin:7px 15px 15px 10px}.user-page-header-container .el-dropdown[data-v-d4bc7d00]{width:95%;margin:0 15px 15px 10px}.user-profile-card[data-v-d4bc7d00]{margin:0 10px;width:95%}.user-profile-card td[data-v-d4bc7d00]{width:80px}.user-profile-container[data-v-d4bc7d00]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media only screen and (max-width:801px) and (min-width:481px){.recent-statuses[data-v-d4bc7d00]{margin:20px 10px 15px 0}.recent-statuses-container[data-v-d4bc7d00]{width:97%;margin:0 20px}.show-private-statuses[data-v-d4bc7d00]{margin:0 10px 20px 0}.user-page-header[data-v-d4bc7d00]{padding:0;margin:7px 15px 20px 20px}.user-profile-card[data-v-d4bc7d00]{margin:0 20px;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.user-profile-container[data-v-d4bc7d00]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-43ca.0de86b6d.css b/priv/static/adminfe/chunk-43ca.0de86b6d.css new file mode 100644 index 000000000..817a6be44 --- /dev/null +++ b/priv/static/adminfe/chunk-43ca.0de86b6d.css @@ -0,0 +1 @@ +a{text-decoration:underline}.center-label label{text-align:center}.center-label label span{float:left}.code{background-color:rgba(173,190,214,.48);border-radius:3px;font-family:monospace;padding:0 3px}.delete-setting-button{margin-left:5px}.description-container{overflow-wrap:break-word}.description-container .el-form-item__content{line-height:20px}.divider{margin:0 0 18px}.divider.thick-line{height:2px}.docs-search-container{float:right;margin-right:30px}.editable-keyword-container{width:100%}.el-form-item .rate-limit{margin-right:0}.el-input-group__prepend{padding-left:10px;padding-right:10px}.el-tabs__header{z-index:2002}.esshd-list{margin:0}.expl,.expl>p{color:#666;font-size:13px;line-height:22px;margin:5px 0 0;overflow-wrap:break-word;overflow:hidden;text-overflow:ellipsis}.expl>p code,.expl code{display:inline;line-height:22px;font-size:13px;padding:2px 3px}.follow-relay{width:350px;margin-right:7px}.form-container{margin-bottom:80px}.grouped-settings-header{margin:0 0 14px}.highlight{background-color:#e6e6e6}.icons-button-container{width:100%;margin-bottom:10px}.icons-button-desc{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;margin-left:5px}.icon-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:95%}.icon-values-container{display:-webkit-box;display:-ms-flexbox;display:flex;margin:0 10px 10px 0}.icon-key-input{width:30%;margin-right:8px}.icon-minus-button{width:36px;height:36px}.icon-value-input{width:70%;margin-left:8px}.icons-container,.input-container{display:-webkit-box;display:-ms-flexbox;display:flex}.input-container{-webkit-box-align:start;-ms-flex-align:start;align-items:start;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.input-container .el-form-item{margin-right:30px;width:100%}.input-container .el-select,.keyword-container{width:100%}label{overflow:hidden;text-overflow:ellipsis}.label-font{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700}.limit-button-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.limit-expl{margin-left:10px}.limit-input{width:47%;margin:0 0 5px 1%}.line{width:100%;height:0;border:1px solid #eee;margin-bottom:18px}.mascot{margin-bottom:15px}.mascot-container{width:100%}.mascot-input{margin-bottom:7px}.mascot-name-container{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:7px}.mascot-name-input{margin-right:10px}.multiple-select-container{width:100%}.name-input{width:30%;margin-right:8px}.no-top-margin{margin-top:0}.pattern-input{width:20%;margin-right:8px}.proxy-url-input{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:10px;width:100%}.proxy-url-host-input{width:35%;margin-right:8px}.proxy-url-value-input{width:35%;margin-left:8px;margin-right:10px}.prune-options{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.prune-options .el-radio{margin-top:11px}.rate-limit .el-form-item__content{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.rate-limit-container,.rate-limit-content{width:100%}.rate-limit-label{float:right}.rate-limit-label-container{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700;height:36px;width:100%;margin-right:10px}.reboot-button{width:145px;text-align:left;padding:10px;float:right;margin:0 30px 0 0}.reboot-button-container{width:100%;position:fixed;top:60px;right:0;z-index:2000}.relays-container{margin:0 15px}.replacement-input{width:80%;margin-left:8px;margin-right:10px}.scale-input{width:47%;margin:0 1% 5px 0}.setting-input{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:10px}.setting-label{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700;line-height:20px;margin:0 0 14px}.settings-container{max-width:1824px;margin:auto}.settings-container .el-tabs{margin-top:20px}.settings-delete-button{margin-left:5px}.settings-docs-button{width:163px;text-align:left;padding:10px}.settings-header{margin:10px 15px 15px}.header-sidebar-opened{max-width:1585px}.header-sidebar-closed{max-width:1728px}.settings-header-container{height:87px}.settings-search-input{width:350px;margin-left:5px}.single-input{margin-right:10px}.socks5-checkbox{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700;margin-left:10px}.socks5-checkbox-container{width:40%;height:36px;margin-right:5px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ssl-tls-opts{margin:36px 0 0}.submit-button{float:right;margin:0 30px 22px 0}.submit-button-container{width:100%;position:fixed;bottom:0;right:0;z-index:2000}.switch-input{height:36px}.text{line-height:20px;margin-right:15px}.upload-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.value-input{width:70%;margin-left:8px;margin-right:10px}@media only screen and (min-width:1824px){.header-sidebar-closed{max-width:1772px}.header-sidebar-opened{max-width:1630px}.reboot-button-container{width:100%;max-width:inherit;margin-left:auto;margin-right:auto;right:auto}.reboot-sidebar-opened{max-width:1630px}.reboot-sidebar-closed{max-width:1772px}.sidebar-closed{max-width:1586px}.sidebar-opened{max-width:1442px}.submit-button-container{width:100%;max-width:inherit;margin-left:auto;margin-right:auto;right:auto}}@media only screen and (max-width:480px){.crontab,.crontab label{width:100%}.delete-setting-button{margin:4px 0 0 5px;height:28px}.delete-setting-button-container{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.description>p{line-height:18px;margin:0 5px 7px 15px}.description>p code{display:inline;line-height:18px;padding:2px 3px;font-size:14px}.divider{margin:0 0 10px}.divider .thick-line{height:2px}.follow-relay{width:70%;margin-right:5px}.follow-relay input{width:100%}.follow-relay-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}h1{font-size:24px}.input{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.input-container{width:100%}.input-container .el-form-item:first-child{margin:0;padding:0 15px 10px}.input-container .el-form-item.crontab-container:first-child{margin:0;padding:0}.input-container .el-form-item:first-child .mascot-form-item,.input-container .el-form-item:first-child .rate-limit{padding:0}.input-container .settings-delete-button{margin-top:4px;float:right}.input-row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.label-with-margin{margin-left:15px}.limit-input{width:45%}.nav-container{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:15px}.proxy-url-input{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin-bottom:0}.proxy-url-host-input{width:100%;margin-bottom:5px}.proxy-url-value-input{width:100%;margin-left:0}.prune-options{height:80px}.prune-options,.rate-limit .el-form-item__content{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.rate-limit-label{float:left}.reboot-button{margin:0 15px 0 0}.reboot-button-container{top:57px}.scale-input{width:45%}.settings-header{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;display:inline-block;margin:10px 15px 15px}.docs-search-container{float:right}.settings-search-input{width:100%;margin-left:0}.settings-search-input-container{margin:0 15px 15px}.settings-menu{width:163px;margin-right:5px}.socks5-checkbox-container{width:100%}.submit-button{margin:0 15px 22px 0}.el-input__inner{padding:0 5px}.el-form-item__label:not(.no-top-margin){padding-bottom:5px;line-height:22px;margin-top:7px;width:100%}.el-form-item__label:not(.no-top-margin) span{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.el-message{min-width:80%}.el-select__tags{overflow:hidden}.expl,.expl>p{line-height:16px}.icon-key-input{width:40%;margin-right:4px}.icon-minus-button{width:28px;height:28px;margin-top:4px}.icon-values-container{margin:0 7px 7px 0}.icon-value-input{width:60%;margin-left:4px}.icons-button-container{line-height:24px}.line{margin-bottom:10px}.mascot-form-item .el-form-item__label:not(.no-top-margin){margin:0;padding:0}.mascot-container{margin-bottom:5px}.name-input{width:40%;margin-right:5px}p.expl{line-height:20px}.pattern-input{width:40%;margin-right:4px}.relays-container{margin:0 10px}.replacement-input{width:60%;margin-left:4px;margin-right:5px}.settings-header-container{height:45px}.value-input{width:60%;margin-left:5px;margin-right:8px}}@media only screen and (max-width:818px) and (min-width:481px){.delete-setting-button{margin:4px 0 0 10px;height:28px}.delete-setting-button-container{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.description>p{line-height:18px;margin:0 15px 10px 0}.icon-minus-button{width:28px;height:28px;margin-top:4px}.input{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.input-container .el-form-item__label span{margin-left:10px}.input-row,.nav-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.nav-container{height:36px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:15px 30px 15px 15px}.rate-limit-label-container{width:250px}.settings-delete-button{float:right}.settings-header-container{height:36px}.settings-search-input{width:250px;margin:0 0 15px 15px}}a[data-v-2b61d370]{text-decoration:underline}.center-label label[data-v-2b61d370]{text-align:center}.center-label label span[data-v-2b61d370]{float:left}.code[data-v-2b61d370]{background-color:rgba(173,190,214,.48);border-radius:3px;font-family:monospace;padding:0 3px}.delete-setting-button[data-v-2b61d370]{margin-left:5px}.description-container[data-v-2b61d370]{overflow-wrap:break-word}.description-container .el-form-item__content[data-v-2b61d370]{line-height:20px}.divider[data-v-2b61d370]{margin:0 0 18px}.divider.thick-line[data-v-2b61d370]{height:2px}.docs-search-container[data-v-2b61d370]{float:right;margin-right:30px}.editable-keyword-container[data-v-2b61d370]{width:100%}.el-form-item .rate-limit[data-v-2b61d370]{margin-right:0}.el-input-group__prepend[data-v-2b61d370]{padding-left:10px;padding-right:10px}.el-tabs__header[data-v-2b61d370]{z-index:2002}.esshd-list[data-v-2b61d370]{margin:0}.expl>p[data-v-2b61d370],.expl[data-v-2b61d370]{color:#666;font-size:13px;line-height:22px;margin:5px 0 0;overflow-wrap:break-word;overflow:hidden;text-overflow:ellipsis}.expl>p code[data-v-2b61d370],.expl code[data-v-2b61d370]{display:inline;line-height:22px;font-size:13px;padding:2px 3px}.follow-relay[data-v-2b61d370]{width:350px;margin-right:7px}.form-container[data-v-2b61d370]{margin-bottom:80px}.grouped-settings-header[data-v-2b61d370]{margin:0 0 14px}.highlight[data-v-2b61d370]{background-color:#e6e6e6}.icons-button-container[data-v-2b61d370]{width:100%;margin-bottom:10px}.icons-button-desc[data-v-2b61d370]{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;margin-left:5px}.icon-container[data-v-2b61d370]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:95%}.icon-values-container[data-v-2b61d370]{display:-webkit-box;display:-ms-flexbox;display:flex;margin:0 10px 10px 0}.icon-key-input[data-v-2b61d370]{width:30%;margin-right:8px}.icon-minus-button[data-v-2b61d370]{width:36px;height:36px}.icon-value-input[data-v-2b61d370]{width:70%;margin-left:8px}.icons-container[data-v-2b61d370],.input-container[data-v-2b61d370]{display:-webkit-box;display:-ms-flexbox;display:flex}.input-container[data-v-2b61d370]{-webkit-box-align:start;-ms-flex-align:start;align-items:start;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.input-container .el-form-item[data-v-2b61d370]{margin-right:30px;width:100%}.input-container .el-select[data-v-2b61d370],.keyword-container[data-v-2b61d370]{width:100%}label[data-v-2b61d370]{overflow:hidden;text-overflow:ellipsis}.label-font[data-v-2b61d370]{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700}.limit-button-container[data-v-2b61d370]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.limit-expl[data-v-2b61d370]{margin-left:10px}.limit-input[data-v-2b61d370]{width:47%;margin:0 0 5px 1%}.line[data-v-2b61d370]{width:100%;height:0;border:1px solid #eee;margin-bottom:18px}.mascot[data-v-2b61d370]{margin-bottom:15px}.mascot-container[data-v-2b61d370]{width:100%}.mascot-input[data-v-2b61d370]{margin-bottom:7px}.mascot-name-container[data-v-2b61d370]{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:7px}.mascot-name-input[data-v-2b61d370]{margin-right:10px}.multiple-select-container[data-v-2b61d370]{width:100%}.name-input[data-v-2b61d370]{width:30%;margin-right:8px}.no-top-margin[data-v-2b61d370]{margin-top:0}.pattern-input[data-v-2b61d370]{width:20%;margin-right:8px}.proxy-url-input[data-v-2b61d370]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:10px;width:100%}.proxy-url-host-input[data-v-2b61d370]{width:35%;margin-right:8px}.proxy-url-value-input[data-v-2b61d370]{width:35%;margin-left:8px;margin-right:10px}.prune-options[data-v-2b61d370]{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.prune-options .el-radio[data-v-2b61d370]{margin-top:11px}.rate-limit .el-form-item__content[data-v-2b61d370]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.rate-limit-container[data-v-2b61d370],.rate-limit-content[data-v-2b61d370]{width:100%}.rate-limit-label[data-v-2b61d370]{float:right}.rate-limit-label-container[data-v-2b61d370]{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700;height:36px;width:100%;margin-right:10px}.reboot-button[data-v-2b61d370]{width:145px;text-align:left;padding:10px;float:right;margin:0 30px 0 0}.reboot-button-container[data-v-2b61d370]{width:100%;position:fixed;top:60px;right:0;z-index:2000}.relays-container[data-v-2b61d370]{margin:0 15px}.replacement-input[data-v-2b61d370]{width:80%;margin-left:8px;margin-right:10px}.scale-input[data-v-2b61d370]{width:47%;margin:0 1% 5px 0}.setting-input[data-v-2b61d370]{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:10px}.setting-label[data-v-2b61d370]{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700;line-height:20px;margin:0 0 14px}.settings-container[data-v-2b61d370]{max-width:1824px;margin:auto}.settings-container .el-tabs[data-v-2b61d370]{margin-top:20px}.settings-delete-button[data-v-2b61d370]{margin-left:5px}.settings-docs-button[data-v-2b61d370]{width:163px;text-align:left;padding:10px}.settings-header[data-v-2b61d370]{margin:10px 15px 15px}.header-sidebar-opened[data-v-2b61d370]{max-width:1585px}.header-sidebar-closed[data-v-2b61d370]{max-width:1728px}.settings-header-container[data-v-2b61d370]{height:87px}.settings-search-input[data-v-2b61d370]{width:350px;margin-left:5px}.single-input[data-v-2b61d370]{margin-right:10px}.socks5-checkbox[data-v-2b61d370]{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700;margin-left:10px}.socks5-checkbox-container[data-v-2b61d370]{width:40%;height:36px;margin-right:5px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ssl-tls-opts[data-v-2b61d370]{margin:36px 0 0}.submit-button[data-v-2b61d370]{float:right;margin:0 30px 22px 0}.submit-button-container[data-v-2b61d370]{width:100%;position:fixed;bottom:0;right:0;z-index:2000}.switch-input[data-v-2b61d370]{height:36px}.text[data-v-2b61d370]{line-height:20px;margin-right:15px}.upload-container[data-v-2b61d370]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.value-input[data-v-2b61d370]{width:70%;margin-left:8px;margin-right:10px}@media only screen and (min-width:1824px){.header-sidebar-closed[data-v-2b61d370]{max-width:1772px}.header-sidebar-opened[data-v-2b61d370]{max-width:1630px}.reboot-button-container[data-v-2b61d370]{width:100%;max-width:inherit;margin-left:auto;margin-right:auto;right:auto}.reboot-sidebar-opened[data-v-2b61d370]{max-width:1630px}.reboot-sidebar-closed[data-v-2b61d370]{max-width:1772px}.sidebar-closed[data-v-2b61d370]{max-width:1586px}.sidebar-opened[data-v-2b61d370]{max-width:1442px}.submit-button-container[data-v-2b61d370]{width:100%;max-width:inherit;margin-left:auto;margin-right:auto;right:auto}}@media only screen and (max-width:480px){.crontab[data-v-2b61d370],.crontab label[data-v-2b61d370]{width:100%}.delete-setting-button[data-v-2b61d370]{margin:4px 0 0 5px;height:28px}.delete-setting-button-container[data-v-2b61d370]{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.description>p[data-v-2b61d370]{line-height:18px;margin:0 5px 7px 15px}.description>p code[data-v-2b61d370]{display:inline;line-height:18px;padding:2px 3px;font-size:14px}.divider[data-v-2b61d370]{margin:0 0 10px}.divider .thick-line[data-v-2b61d370]{height:2px}.follow-relay[data-v-2b61d370]{width:70%;margin-right:5px}.follow-relay input[data-v-2b61d370]{width:100%}.follow-relay-container[data-v-2b61d370]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}h1[data-v-2b61d370]{font-size:24px}.input[data-v-2b61d370]{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.input-container[data-v-2b61d370]{width:100%}.input-container .el-form-item[data-v-2b61d370]:first-child{margin:0;padding:0 15px 10px}.input-container .el-form-item.crontab-container[data-v-2b61d370]:first-child{margin:0;padding:0}.input-container .el-form-item:first-child .mascot-form-item[data-v-2b61d370],.input-container .el-form-item:first-child .rate-limit[data-v-2b61d370]{padding:0}.input-container .settings-delete-button[data-v-2b61d370]{margin-top:4px;float:right}.input-row[data-v-2b61d370]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.label-with-margin[data-v-2b61d370]{margin-left:15px}.limit-input[data-v-2b61d370]{width:45%}.nav-container[data-v-2b61d370]{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:15px}.proxy-url-input[data-v-2b61d370]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin-bottom:0}.proxy-url-host-input[data-v-2b61d370]{width:100%;margin-bottom:5px}.proxy-url-value-input[data-v-2b61d370]{width:100%;margin-left:0}.prune-options[data-v-2b61d370]{height:80px}.prune-options[data-v-2b61d370],.rate-limit .el-form-item__content[data-v-2b61d370]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.rate-limit-label[data-v-2b61d370]{float:left}.reboot-button[data-v-2b61d370]{margin:0 15px 0 0}.reboot-button-container[data-v-2b61d370]{top:57px}.scale-input[data-v-2b61d370]{width:45%}.settings-header[data-v-2b61d370]{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;display:inline-block;margin:10px 15px 15px}.docs-search-container[data-v-2b61d370]{float:right}.settings-search-input[data-v-2b61d370]{width:100%;margin-left:0}.settings-search-input-container[data-v-2b61d370]{margin:0 15px 15px}.settings-menu[data-v-2b61d370]{width:163px;margin-right:5px}.socks5-checkbox-container[data-v-2b61d370]{width:100%}.submit-button[data-v-2b61d370]{margin:0 15px 22px 0}.el-input__inner[data-v-2b61d370]{padding:0 5px}.el-form-item__label[data-v-2b61d370]:not(.no-top-margin){padding-bottom:5px;line-height:22px;margin-top:7px;width:100%}.el-form-item__label:not(.no-top-margin) span[data-v-2b61d370]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.el-message[data-v-2b61d370]{min-width:80%}.el-select__tags[data-v-2b61d370]{overflow:hidden}.expl>p[data-v-2b61d370],.expl[data-v-2b61d370]{line-height:16px}.icon-key-input[data-v-2b61d370]{width:40%;margin-right:4px}.icon-minus-button[data-v-2b61d370]{width:28px;height:28px;margin-top:4px}.icon-values-container[data-v-2b61d370]{margin:0 7px 7px 0}.icon-value-input[data-v-2b61d370]{width:60%;margin-left:4px}.icons-button-container[data-v-2b61d370]{line-height:24px}.line[data-v-2b61d370]{margin-bottom:10px}.mascot-form-item .el-form-item__label[data-v-2b61d370]:not(.no-top-margin){margin:0;padding:0}.mascot-container[data-v-2b61d370]{margin-bottom:5px}.name-input[data-v-2b61d370]{width:40%;margin-right:5px}p.expl[data-v-2b61d370]{line-height:20px}.pattern-input[data-v-2b61d370]{width:40%;margin-right:4px}.relays-container[data-v-2b61d370]{margin:0 10px}.replacement-input[data-v-2b61d370]{width:60%;margin-left:4px;margin-right:5px}.settings-header-container[data-v-2b61d370]{height:45px}.value-input[data-v-2b61d370]{width:60%;margin-left:5px;margin-right:8px}}@media only screen and (max-width:818px) and (min-width:481px){.delete-setting-button[data-v-2b61d370]{margin:4px 0 0 10px;height:28px}.delete-setting-button-container[data-v-2b61d370]{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.description>p[data-v-2b61d370]{line-height:18px;margin:0 15px 10px 0}.icon-minus-button[data-v-2b61d370]{width:28px;height:28px;margin-top:4px}.input[data-v-2b61d370]{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.input-container .el-form-item__label span[data-v-2b61d370]{margin-left:10px}.input-row[data-v-2b61d370],.nav-container[data-v-2b61d370]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.nav-container[data-v-2b61d370]{height:36px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:15px 30px 15px 15px}.rate-limit-label-container[data-v-2b61d370]{width:250px}.settings-delete-button[data-v-2b61d370]{float:right}.settings-header-container[data-v-2b61d370]{height:36px}.settings-search-input[data-v-2b61d370]{width:250px;margin:0 0 15px 15px}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-0961.d3692214.css b/priv/static/adminfe/chunk-4e7e.5afe1978.css similarity index 100% rename from priv/static/adminfe/chunk-0961.d3692214.css rename to priv/static/adminfe/chunk-4e7e.5afe1978.css diff --git a/priv/static/adminfe/chunk-5882.f65db7f2.css b/priv/static/adminfe/chunk-5882.f65db7f2.css new file mode 100644 index 000000000..b5e2a00b0 --- /dev/null +++ b/priv/static/adminfe/chunk-5882.f65db7f2.css @@ -0,0 +1 @@ +.moderate-user-button{text-align:left;width:350px;padding:10px}.moderate-user-button-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:480px){.moderate-user-button{width:100%}}.security-settings-container{display:-webkit-box;display:-ms-flexbox;display:flex}.security-settings-container label{width:15%;height:36px}.security-settings-modal .el-dialog__body{padding-top:10px}.security-settings-modal .el-form-item,.security-settings-modal .password-alert{margin-bottom:15px}.security-settings-modal .password-input{margin-bottom:0}.security-settings-submit-button{float:right}@media (max-width:800px){.security-settings-modal .el-dialog{width:90%}}.security-settings-modal .el-alert .el-alert__description{word-break:break-word;font-size:1em}.security-settings-modal .form-text{display:block;margin-top:.25rem;color:#909399}header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;margin:22px 0;padding-left:15px}header h1{margin:0 0 0 10px}table{margin:10px 0 0 15px}table .name-col{width:150px}.avatar-name-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.avatar-name-container .el-icon-top-right{font-size:2em;line-height:36px;color:#606266}.invalid{color:grey}.el-table--border:after,.el-table--group:after,.el-table:before{background-color:transparent}.image{width:20%}.image img{width:100%}.invalid-user-tag{font-size:14px;width:inherit;height:auto;text-align:center;word-wrap:break-word;white-space:normal}.left-header-container{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.no-statuses{margin-left:28px;color:#606266}.password-reset-token{margin:0 0 14px}.password-reset-token-dialog{width:50%}.poll ul{list-style-type:none;padding:0;width:30%}.reboot-button{padding:10px;margin-left:10px}.recent-statuses-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:67%}.recent-statuses-header{margin-top:10px}.reset-password-link{text-decoration:underline}.security-setting-button{margin-top:20px;width:100%}.statuses{padding:0 20px 0 0}.show-private{width:200px;text-align:left;line-height:67px;margin-right:20px}.show-private-statuses{margin-left:28px;margin-bottom:20px}.recent-statuses{margin-left:28px}.user-page-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:22px 15px 22px 20px;padding:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.user-page-header h1{display:inline}.user-profile-card{margin:0 20px;width:30%;height:-webkit-fit-content;height:-moz-fit-content;height:fit-content}.user-profile-container{display:-webkit-box;display:-ms-flexbox;display:flex}.user-profile-table{margin:0;width:inherit}.user-profile-tag{margin:0 4px 4px 0}@media only screen and (max-width:480px){.avatar-name-container{margin-bottom:10px}.el-timeline-item__wrapper{padding-left:18px}.password-reset-token-dialog{width:85%}.recent-statuses{margin:20px 10px 15px}.recent-statuses-container{width:100%;margin:0}.show-private-statuses{margin:0 10px 20px}.status-container{margin:0 10px}.statuses{padding-right:10px;margin-left:8px}.user-page-header{padding:0;margin:7px 15px 15px 10px}.user-page-header-container .el-dropdown{width:95%;margin:0 15px 15px 10px}.user-profile-card{margin:0 10px;width:95%}.user-profile-card td{width:80px}.user-profile-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media only screen and (max-width:801px) and (min-width:481px){.recent-statuses{margin:20px 10px 15px 0}.recent-statuses-container{width:97%;margin:0 20px}.show-private-statuses{margin:0 10px 20px 0}.user-page-header{padding:0;margin:7px 15px 20px 20px}.user-profile-card{margin:0 20px;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.user-profile-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-6b68.0cc00484.css b/priv/static/adminfe/chunk-6b68.0cc00484.css deleted file mode 100644 index 7061b3d03..000000000 --- a/priv/static/adminfe/chunk-6b68.0cc00484.css +++ /dev/null @@ -1 +0,0 @@ -.actions-button[data-v-3850612b]{text-align:left;width:350px;padding:10px}.actions-button-container[data-v-3850612b]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.el-dropdown[data-v-3850612b]{float:right}.el-icon-edit[data-v-3850612b]{margin-right:5px}.tag-container[data-v-3850612b]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tag-text[data-v-3850612b]{padding-right:20px}.no-hover[data-v-3850612b]:hover{color:#606266;background-color:#fff;cursor:auto} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-6e81.0e80d020.css b/priv/static/adminfe/chunk-6e81.ca3b222f.css similarity index 100% rename from priv/static/adminfe/chunk-6e81.0e80d020.css rename to priv/static/adminfe/chunk-6e81.ca3b222f.css diff --git a/priv/static/adminfe/chunk-7506.f01f6c2a.css b/priv/static/adminfe/chunk-7506.f01f6c2a.css new file mode 100644 index 000000000..93d3eac84 --- /dev/null +++ b/priv/static/adminfe/chunk-7506.f01f6c2a.css @@ -0,0 +1 @@ +.moderate-user-button{text-align:left;width:350px;padding:10px}.moderate-user-button-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:480px){.moderate-user-button{width:100%}}.avatar-name-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.avatar-name-container .el-icon-top-right{font-size:2em;line-height:36px;color:#606266}.avatar-name-header{display:-webkit-box;display:-ms-flexbox;display:flex;height:40px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.invalid{color:grey}.no-statuses{margin-left:28px;color:#606266}.password-reset-token{margin:0 0 14px}.password-reset-token-dialog{width:50%}.reboot-button{padding:10px;margin-left:6px}.recent-statuses-container-show{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.recent-statuses-container-show .el-timeline-item,.recent-statuses-container-show .recent-statuses{margin-left:20px}.recent-statuses-container-show .show-private-statuses{margin-left:20px;margin-bottom:20px}.reset-password-link{text-decoration:underline}.router-link{text-decoration:none}.status-container{margin:0 15px 0 20px}.statuses{padding:0 20px 0 0}.user-page-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:22px 15px 22px 20px;padding:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.user-page-header h1{display:inline;margin:0 0 0 10px}@media only screen and (min-width:1824px){.status-show-container{max-width:1824px;margin:auto}}@media only screen and (max-width:480px){.avatar-name-container{margin-bottom:10px}.el-timeline-item__wrapper{padding-left:18px}.left-header-container{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.password-reset-token-dialog{width:85%}.recent-statuses{margin:20px 10px 15px}.recent-statuses-container-show{width:100%;margin:0 0 0 10px}.recent-statuses-container-show .el-timeline-item,.recent-statuses-container-show .recent-statuses{margin-left:0}.recent-statuses-container-show .show-private-statuses{margin:0 10px 20px 0}.status-card .el-card__body{padding:15px}.status-container{margin:0 10px}.statuses{padding-right:10px;margin-left:0}.statuses .el-timeline-item__wrapper{margin-right:10px}.user-page-header{padding:0;margin:7px 15px 5px 10px}.status-page-header-container{width:100%}.status-page-header-container .el-dropdown{width:-webkit-fill-available;width:-moz-available;width:stretch;margin:0 10px 15px}}@media only screen and (max-width:801px) and (min-width:481px){.recent-statuses-container-show{width:97%;margin:0 20px}.recent-statuses-container-show .el-timeline-item{margin-left:2px}.recent-statuses-container-show .recent-statuses{margin:20px 10px 15px 0}.recent-statuses-container-show .show-private-statuses,.show-private-statuses{margin:0 10px 20px 0}.user-page-header{padding:0;margin:7px 15px 20px 20px}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-7637.941c4edb.css b/priv/static/adminfe/chunk-7637.941c4edb.css deleted file mode 100644 index be1d183a9..000000000 --- a/priv/static/adminfe/chunk-7637.941c4edb.css +++ /dev/null @@ -1 +0,0 @@ -.moderation-log-container[data-v-103bba83]{margin:0 15px}h1[data-v-103bba83]{margin:0}.el-timeline[data-v-103bba83]{margin:25px 45px 0 0;padding:0}.moderation-log-date-panel[data-v-103bba83]{width:350px}.moderation-log-header-container[data-v-103bba83]{-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:10px 0 15px}.moderation-log-header-container[data-v-103bba83],.moderation-log-nav-container[data-v-103bba83]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.moderation-log-search[data-v-103bba83]{width:350px}.moderation-log-user-select[data-v-103bba83]{margin:0 0 20px;width:350px}.reboot-button[data-v-103bba83]{padding:10px;margin:0;width:145px}.search-container[data-v-103bba83]{text-align:right}.pagination[data-v-103bba83]{text-align:center}@media only screen and (max-width:480px){h1[data-v-103bba83]{font-size:24px}.moderation-log-date-panel[data-v-103bba83]{width:100%}.moderation-log-user-select[data-v-103bba83]{margin:0 0 10px;width:55%}.moderation-log-search[data-v-103bba83]{width:40%}}@media only screen and (max-width:801px) and (min-width:481px){.moderation-log-date-panel[data-v-103bba83]{width:55%}.moderation-log-user-select[data-v-103bba83]{margin:0 0 10px;width:55%}.moderation-log-search[data-v-103bba83]{width:40%}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-0778.d9e7180a.css b/priv/static/adminfe/chunk-7c6b.d9e7180a.css similarity index 100% rename from priv/static/adminfe/chunk-0778.d9e7180a.css rename to priv/static/adminfe/chunk-7c6b.d9e7180a.css diff --git a/priv/static/adminfe/chunk-7e30.f2b9674a.css b/priv/static/adminfe/chunk-7e30.f2b9674a.css deleted file mode 100644 index a4a56712e..000000000 --- a/priv/static/adminfe/chunk-7e30.f2b9674a.css +++ /dev/null @@ -1 +0,0 @@ -a{text-decoration:underline}.center-label label{text-align:center}.center-label label span{float:left}.code{background-color:rgba(173,190,214,.48);border-radius:3px;font-family:monospace;padding:0 3px}.delete-setting-button{margin-left:5px}.description>p{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700;line-height:20px;margin:0 0 14px}.description>p code{display:inline;padding:2px 3px;font-size:14px}.description-container{overflow-wrap:break-word;margin-bottom:0}.divider{margin:0 0 18px}.divider.thick-line{height:2px}.docs-search-container{float:right;margin-right:30px}.editable-keyword-container{width:100%}.el-form-item .rate-limit{margin-right:0}.el-input-group__prepend{padding-left:10px;padding-right:10px}.el-tabs__header{z-index:2002}.esshd-list{margin:0}.expl,.expl>p{color:#666;font-size:13px;line-height:22px;margin:5px 0 0;overflow-wrap:break-word;overflow:hidden;text-overflow:ellipsis}.expl>p code,.expl code{display:inline;line-height:22px;font-size:13px;padding:2px 3px}.follow-relay{width:350px;margin-right:7px}.form-container{margin-bottom:80px}.grouped-settings-header{margin:0 0 14px}.highlight{background-color:#e6e6e6}.icons-button-container{width:100%;margin-bottom:10px}.icons-button-desc{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;margin-left:5px}.icon-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:95%}.icon-values-container{display:-webkit-box;display:-ms-flexbox;display:flex;margin:0 10px 10px 0}.icon-key-input{width:30%;margin-right:8px}.icon-minus-button{width:36px;height:36px}.icon-value-input{width:70%;margin-left:8px}.icons-container,.input-container{display:-webkit-box;display:-ms-flexbox;display:flex}.input-container{-webkit-box-align:start;-ms-flex-align:start;align-items:start;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.input-container .el-form-item{margin-right:30px;width:100%}.input-container .el-select,.keyword-container{width:100%}label{overflow:hidden;text-overflow:ellipsis}.label-font{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700}.limit-button-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.limit-expl{margin-left:10px}.limit-input{width:47%;margin:0 0 5px 1%}.line{width:100%;height:0;border:1px solid #eee;margin-bottom:18px}.mascot{margin-bottom:15px}.mascot-container{width:100%}.mascot-input{margin-bottom:7px}.mascot-name-container{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:7px}.mascot-name-input{margin-right:10px}.multiple-select-container{width:100%}.name-input{width:30%;margin-right:8px}.pattern-input{width:20%;margin-right:8px}.proxy-url-input{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:10px;width:100%}.proxy-url-host-input{width:35%;margin-right:8px}.proxy-url-value-input{width:35%;margin-left:8px;margin-right:10px}.prune-options{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.prune-options .el-radio{margin-top:11px}.rate-limit .el-form-item__content{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.rate-limit-container,.rate-limit-content{width:100%}.rate-limit-label{float:right}.rate-limit-label-container{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700;height:36px;width:100%;margin-right:10px}.reboot-button{width:145px;text-align:left;padding:10px;float:right;margin:0 30px 0 0}.reboot-button-container{width:100%;position:fixed;top:60px;right:0;z-index:2000}.relays-container{margin:0 15px}.replacement-input{width:80%;margin-left:8px;margin-right:10px}.scale-input{width:47%;margin:0 1% 5px 0}.setting-input{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:10px}.settings-container{max-width:1824px;margin:auto}.settings-container .el-tabs{margin-top:20px}.settings-delete-button{margin-left:5px}.settings-docs-button{width:163px;text-align:left;padding:10px}.settings-header{margin:10px 15px 15px}.header-sidebar-opened{max-width:1585px}.header-sidebar-closed{max-width:1728px}.settings-header-container{height:87px}.settings-search-input{width:350px;margin-left:5px}.single-input{margin-right:10px}.socks5-checkbox{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700;margin-left:10px}.socks5-checkbox-container{width:40%;height:36px;margin-right:5px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ssl-tls-opts{margin:36px 0 0}.submit-button{float:right;margin:0 30px 22px 0}.submit-button-container{width:100%;position:fixed;bottom:0;right:0;z-index:2000}.switch-input{height:36px}.text{line-height:20px;margin-right:15px}.upload-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.value-input{width:70%;margin-left:8px;margin-right:10px}@media only screen and (min-width:1824px){.header-sidebar-closed{max-width:1772px}.header-sidebar-opened{max-width:1630px}.reboot-button-container{width:100%;max-width:inherit;margin-left:auto;margin-right:auto;right:auto}.reboot-sidebar-opened{max-width:1630px}.reboot-sidebar-closed{max-width:1772px}.sidebar-closed{max-width:1586px}.sidebar-opened{max-width:1442px}.submit-button-container{width:100%;max-width:inherit;margin-left:auto;margin-right:auto;right:auto}}@media only screen and (max-width:480px){.crontab,.crontab label{width:100%}.delete-setting-button{margin:4px 0 0 5px;height:28px}.delete-setting-button-container{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.description>p{line-height:18px;margin:0 5px 7px 15px}.description>p code{display:inline;line-height:18px;padding:2px 3px;font-size:14px}.divider{margin:0 0 10px}.divider .thick-line{height:2px}.follow-relay{width:70%;margin-right:5px}.follow-relay input{width:100%}.follow-relay-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}h1{font-size:24px}.input{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.input-container{width:100%}.input-container .el-form-item:first-child{margin:0;padding:0 15px 10px}.input-container .el-form-item.crontab-container:first-child{margin:0;padding:0}.input-container .el-form-item:first-child .mascot-form-item,.input-container .el-form-item:first-child .rate-limit{padding:0}.input-container .settings-delete-button{margin-top:4px;float:right}.input-row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.label-with-margin{margin-left:15px}.limit-input{width:45%}.nav-container{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:15px}.proxy-url-input{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin-bottom:0}.proxy-url-host-input{width:100%;margin-bottom:5px}.proxy-url-value-input{width:100%;margin-left:0}.prune-options{height:80px}.prune-options,.rate-limit .el-form-item__content{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.rate-limit-label{float:left}.reboot-button{margin:0 15px 0 0}.reboot-button-container{top:57px}.scale-input{width:45%}.setting-label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.settings-header{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;display:inline-block;margin:10px 15px 15px}.docs-search-container{float:right}.settings-search-input{width:100%;margin-left:0}.settings-search-input-container{margin:0 15px 15px}.settings-menu{width:163px;margin-right:5px}.socks5-checkbox-container{width:100%}.submit-button{margin:0 15px 22px 0}.el-input__inner{padding:0 5px}.el-form-item__label:not(.no-top-margin){padding-bottom:5px;line-height:22px;margin-top:7px;width:100%}.el-form-item__label:not(.no-top-margin) span{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.el-message{min-width:80%}.el-select__tags{overflow:hidden}.expl,.expl>p{line-height:16px}.icon-key-input{width:40%;margin-right:4px}.icon-minus-button{width:28px;height:28px;margin-top:4px}.icon-values-container{margin:0 7px 7px 0}.icon-value-input{width:60%;margin-left:4px}.icons-button-container{line-height:24px}.line{margin-bottom:10px}.mascot-form-item .el-form-item__label:not(.no-top-margin){margin:0;padding:0}.mascot-container{margin-bottom:5px}.name-input{width:40%;margin-right:5px}p.expl{line-height:20px}.pattern-input{width:40%;margin-right:4px}.relays-container{margin:0 10px}.replacement-input{width:60%;margin-left:4px;margin-right:5px}.settings-header-container{height:45px}.value-input{width:60%;margin-left:5px;margin-right:8px}}@media only screen and (max-width:818px) and (min-width:481px){.delete-setting-button{margin:4px 0 0 10px;height:28px}.delete-setting-button-container{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.description>p{line-height:18px;margin:0 15px 10px 0}.icon-minus-button{width:28px;height:28px;margin-top:4px}.input{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.input-container .el-form-item__label span{margin-left:10px}.input-row,.nav-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.nav-container{height:36px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:15px 30px 15px 15px}.rate-limit-label-container{width:250px}.settings-delete-button{float:right}.settings-header-container{height:36px}.settings-search-input{width:250px;margin:0 0 15px 15px}}a[data-v-2b61d370]{text-decoration:underline}.center-label label[data-v-2b61d370]{text-align:center}.center-label label span[data-v-2b61d370]{float:left}.code[data-v-2b61d370]{background-color:rgba(173,190,214,.48);border-radius:3px;font-family:monospace;padding:0 3px}.delete-setting-button[data-v-2b61d370]{margin-left:5px}.description>p[data-v-2b61d370]{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700;line-height:20px;margin:0 0 14px}.description>p code[data-v-2b61d370]{display:inline;padding:2px 3px;font-size:14px}.description-container[data-v-2b61d370]{overflow-wrap:break-word;margin-bottom:0}.divider[data-v-2b61d370]{margin:0 0 18px}.divider.thick-line[data-v-2b61d370]{height:2px}.docs-search-container[data-v-2b61d370]{float:right;margin-right:30px}.editable-keyword-container[data-v-2b61d370]{width:100%}.el-form-item .rate-limit[data-v-2b61d370]{margin-right:0}.el-input-group__prepend[data-v-2b61d370]{padding-left:10px;padding-right:10px}.el-tabs__header[data-v-2b61d370]{z-index:2002}.esshd-list[data-v-2b61d370]{margin:0}.expl>p[data-v-2b61d370],.expl[data-v-2b61d370]{color:#666;font-size:13px;line-height:22px;margin:5px 0 0;overflow-wrap:break-word;overflow:hidden;text-overflow:ellipsis}.expl>p code[data-v-2b61d370],.expl code[data-v-2b61d370]{display:inline;line-height:22px;font-size:13px;padding:2px 3px}.follow-relay[data-v-2b61d370]{width:350px;margin-right:7px}.form-container[data-v-2b61d370]{margin-bottom:80px}.grouped-settings-header[data-v-2b61d370]{margin:0 0 14px}.highlight[data-v-2b61d370]{background-color:#e6e6e6}.icons-button-container[data-v-2b61d370]{width:100%;margin-bottom:10px}.icons-button-desc[data-v-2b61d370]{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;margin-left:5px}.icon-container[data-v-2b61d370]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:95%}.icon-values-container[data-v-2b61d370]{display:-webkit-box;display:-ms-flexbox;display:flex;margin:0 10px 10px 0}.icon-key-input[data-v-2b61d370]{width:30%;margin-right:8px}.icon-minus-button[data-v-2b61d370]{width:36px;height:36px}.icon-value-input[data-v-2b61d370]{width:70%;margin-left:8px}.icons-container[data-v-2b61d370],.input-container[data-v-2b61d370]{display:-webkit-box;display:-ms-flexbox;display:flex}.input-container[data-v-2b61d370]{-webkit-box-align:start;-ms-flex-align:start;align-items:start;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.input-container .el-form-item[data-v-2b61d370]{margin-right:30px;width:100%}.input-container .el-select[data-v-2b61d370],.keyword-container[data-v-2b61d370]{width:100%}label[data-v-2b61d370]{overflow:hidden;text-overflow:ellipsis}.label-font[data-v-2b61d370]{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700}.limit-button-container[data-v-2b61d370]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.limit-expl[data-v-2b61d370]{margin-left:10px}.limit-input[data-v-2b61d370]{width:47%;margin:0 0 5px 1%}.line[data-v-2b61d370]{width:100%;height:0;border:1px solid #eee;margin-bottom:18px}.mascot[data-v-2b61d370]{margin-bottom:15px}.mascot-container[data-v-2b61d370]{width:100%}.mascot-input[data-v-2b61d370]{margin-bottom:7px}.mascot-name-container[data-v-2b61d370]{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:7px}.mascot-name-input[data-v-2b61d370]{margin-right:10px}.multiple-select-container[data-v-2b61d370]{width:100%}.name-input[data-v-2b61d370]{width:30%;margin-right:8px}.pattern-input[data-v-2b61d370]{width:20%;margin-right:8px}.proxy-url-input[data-v-2b61d370]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:10px;width:100%}.proxy-url-host-input[data-v-2b61d370]{width:35%;margin-right:8px}.proxy-url-value-input[data-v-2b61d370]{width:35%;margin-left:8px;margin-right:10px}.prune-options[data-v-2b61d370]{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.prune-options .el-radio[data-v-2b61d370]{margin-top:11px}.rate-limit .el-form-item__content[data-v-2b61d370]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.rate-limit-container[data-v-2b61d370],.rate-limit-content[data-v-2b61d370]{width:100%}.rate-limit-label[data-v-2b61d370]{float:right}.rate-limit-label-container[data-v-2b61d370]{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700;height:36px;width:100%;margin-right:10px}.reboot-button[data-v-2b61d370]{width:145px;text-align:left;padding:10px;float:right;margin:0 30px 0 0}.reboot-button-container[data-v-2b61d370]{width:100%;position:fixed;top:60px;right:0;z-index:2000}.relays-container[data-v-2b61d370]{margin:0 15px}.replacement-input[data-v-2b61d370]{width:80%;margin-left:8px;margin-right:10px}.scale-input[data-v-2b61d370]{width:47%;margin:0 1% 5px 0}.setting-input[data-v-2b61d370]{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:10px}.settings-container[data-v-2b61d370]{max-width:1824px;margin:auto}.settings-container .el-tabs[data-v-2b61d370]{margin-top:20px}.settings-delete-button[data-v-2b61d370]{margin-left:5px}.settings-docs-button[data-v-2b61d370]{width:163px;text-align:left;padding:10px}.settings-header[data-v-2b61d370]{margin:10px 15px 15px}.header-sidebar-opened[data-v-2b61d370]{max-width:1585px}.header-sidebar-closed[data-v-2b61d370]{max-width:1728px}.settings-header-container[data-v-2b61d370]{height:87px}.settings-search-input[data-v-2b61d370]{width:350px;margin-left:5px}.single-input[data-v-2b61d370]{margin-right:10px}.socks5-checkbox[data-v-2b61d370]{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700;margin-left:10px}.socks5-checkbox-container[data-v-2b61d370]{width:40%;height:36px;margin-right:5px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ssl-tls-opts[data-v-2b61d370]{margin:36px 0 0}.submit-button[data-v-2b61d370]{float:right;margin:0 30px 22px 0}.submit-button-container[data-v-2b61d370]{width:100%;position:fixed;bottom:0;right:0;z-index:2000}.switch-input[data-v-2b61d370]{height:36px}.text[data-v-2b61d370]{line-height:20px;margin-right:15px}.upload-container[data-v-2b61d370]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.value-input[data-v-2b61d370]{width:70%;margin-left:8px;margin-right:10px}@media only screen and (min-width:1824px){.header-sidebar-closed[data-v-2b61d370]{max-width:1772px}.header-sidebar-opened[data-v-2b61d370]{max-width:1630px}.reboot-button-container[data-v-2b61d370]{width:100%;max-width:inherit;margin-left:auto;margin-right:auto;right:auto}.reboot-sidebar-opened[data-v-2b61d370]{max-width:1630px}.reboot-sidebar-closed[data-v-2b61d370]{max-width:1772px}.sidebar-closed[data-v-2b61d370]{max-width:1586px}.sidebar-opened[data-v-2b61d370]{max-width:1442px}.submit-button-container[data-v-2b61d370]{width:100%;max-width:inherit;margin-left:auto;margin-right:auto;right:auto}}@media only screen and (max-width:480px){.crontab[data-v-2b61d370],.crontab label[data-v-2b61d370]{width:100%}.delete-setting-button[data-v-2b61d370]{margin:4px 0 0 5px;height:28px}.delete-setting-button-container[data-v-2b61d370]{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.description>p[data-v-2b61d370]{line-height:18px;margin:0 5px 7px 15px}.description>p code[data-v-2b61d370]{display:inline;line-height:18px;padding:2px 3px;font-size:14px}.divider[data-v-2b61d370]{margin:0 0 10px}.divider .thick-line[data-v-2b61d370]{height:2px}.follow-relay[data-v-2b61d370]{width:70%;margin-right:5px}.follow-relay input[data-v-2b61d370]{width:100%}.follow-relay-container[data-v-2b61d370]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}h1[data-v-2b61d370]{font-size:24px}.input[data-v-2b61d370]{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.input-container[data-v-2b61d370]{width:100%}.input-container .el-form-item[data-v-2b61d370]:first-child{margin:0;padding:0 15px 10px}.input-container .el-form-item.crontab-container[data-v-2b61d370]:first-child{margin:0;padding:0}.input-container .el-form-item:first-child .mascot-form-item[data-v-2b61d370],.input-container .el-form-item:first-child .rate-limit[data-v-2b61d370]{padding:0}.input-container .settings-delete-button[data-v-2b61d370]{margin-top:4px;float:right}.input-row[data-v-2b61d370]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.label-with-margin[data-v-2b61d370]{margin-left:15px}.limit-input[data-v-2b61d370]{width:45%}.nav-container[data-v-2b61d370]{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:15px}.proxy-url-input[data-v-2b61d370]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin-bottom:0}.proxy-url-host-input[data-v-2b61d370]{width:100%;margin-bottom:5px}.proxy-url-value-input[data-v-2b61d370]{width:100%;margin-left:0}.prune-options[data-v-2b61d370]{height:80px}.prune-options[data-v-2b61d370],.rate-limit .el-form-item__content[data-v-2b61d370]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.rate-limit-label[data-v-2b61d370]{float:left}.reboot-button[data-v-2b61d370]{margin:0 15px 0 0}.reboot-button-container[data-v-2b61d370]{top:57px}.scale-input[data-v-2b61d370]{width:45%}.setting-label[data-v-2b61d370]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.settings-header[data-v-2b61d370]{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;display:inline-block;margin:10px 15px 15px}.docs-search-container[data-v-2b61d370]{float:right}.settings-search-input[data-v-2b61d370]{width:100%;margin-left:0}.settings-search-input-container[data-v-2b61d370]{margin:0 15px 15px}.settings-menu[data-v-2b61d370]{width:163px;margin-right:5px}.socks5-checkbox-container[data-v-2b61d370]{width:100%}.submit-button[data-v-2b61d370]{margin:0 15px 22px 0}.el-input__inner[data-v-2b61d370]{padding:0 5px}.el-form-item__label[data-v-2b61d370]:not(.no-top-margin){padding-bottom:5px;line-height:22px;margin-top:7px;width:100%}.el-form-item__label:not(.no-top-margin) span[data-v-2b61d370]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.el-message[data-v-2b61d370]{min-width:80%}.el-select__tags[data-v-2b61d370]{overflow:hidden}.expl>p[data-v-2b61d370],.expl[data-v-2b61d370]{line-height:16px}.icon-key-input[data-v-2b61d370]{width:40%;margin-right:4px}.icon-minus-button[data-v-2b61d370]{width:28px;height:28px;margin-top:4px}.icon-values-container[data-v-2b61d370]{margin:0 7px 7px 0}.icon-value-input[data-v-2b61d370]{width:60%;margin-left:4px}.icons-button-container[data-v-2b61d370]{line-height:24px}.line[data-v-2b61d370]{margin-bottom:10px}.mascot-form-item .el-form-item__label[data-v-2b61d370]:not(.no-top-margin){margin:0;padding:0}.mascot-container[data-v-2b61d370]{margin-bottom:5px}.name-input[data-v-2b61d370]{width:40%;margin-right:5px}p.expl[data-v-2b61d370]{line-height:20px}.pattern-input[data-v-2b61d370]{width:40%;margin-right:4px}.relays-container[data-v-2b61d370]{margin:0 10px}.replacement-input[data-v-2b61d370]{width:60%;margin-left:4px;margin-right:5px}.settings-header-container[data-v-2b61d370]{height:45px}.value-input[data-v-2b61d370]{width:60%;margin-left:5px;margin-right:8px}}@media only screen and (max-width:818px) and (min-width:481px){.delete-setting-button[data-v-2b61d370]{margin:4px 0 0 10px;height:28px}.delete-setting-button-container[data-v-2b61d370]{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.description>p[data-v-2b61d370]{line-height:18px;margin:0 15px 10px 0}.icon-minus-button[data-v-2b61d370]{width:28px;height:28px;margin-top:4px}.input[data-v-2b61d370]{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.input-container .el-form-item__label span[data-v-2b61d370]{margin-left:10px}.input-row[data-v-2b61d370],.nav-container[data-v-2b61d370]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.nav-container[data-v-2b61d370]{height:36px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:15px 30px 15px 15px}.rate-limit-label-container[data-v-2b61d370]{width:250px}.settings-delete-button[data-v-2b61d370]{float:right}.settings-header-container[data-v-2b61d370]{height:36px}.settings-search-input[data-v-2b61d370]{width:250px;margin:0 0 15px 15px}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-970d.f59cca8c.css b/priv/static/adminfe/chunk-970d.f59cca8c.css deleted file mode 100644 index 15511f12f..000000000 --- a/priv/static/adminfe/chunk-970d.f59cca8c.css +++ /dev/null @@ -1 +0,0 @@ -a{text-decoration:underline}.note-header{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;height:40px}.note-actor{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.note-actor-name{margin:0;height:22px}.note-avatar-img{width:15px;height:15px;margin-right:5px}.note-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.note-card{margin-bottom:15px}.note-content{font-size:15px}.note-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:480px){.el-card__header{padding:10px 17px}.note-header{height:80px}.note-actor-container{margin-bottom:5px}.note-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.status-card{margin-bottom:10px}.status-card .account{text-decoration:underline;line-height:26px;font-size:13px}.status-card .image{width:20%}.status-card .image img{width:100%}.status-card .show-more-button{margin-left:5px}.status-card .status-account{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.status-card .status-avatar-img{display:inline-block;width:15px;height:15px;margin-right:5px}.status-card .status-account-name{display:inline-block;margin:0;height:22px}.status-card .status-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.status-card .status-checkbox{margin-right:7px}.status-card .status-content{font-size:15px;line-height:26px}.status-card .status-deleted{font-style:italic;margin-top:3px}.status-card .status-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.status-card .status-without-content{font-style:italic}@media only screen and (max-width:480px){.el-message{min-width:80%}.el-message-box{width:80%}.status-card .el-card__header{padding:10px 17px}.status-card .el-tag{margin:3px 4px 3px 0}.status-card .status-account-container{margin-bottom:5px}.status-card .status-actions-button{margin:3px 0}.status-card .status-actions{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.status-card .status-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.account{text-decoration:underline}.avatar-img{vertical-align:bottom;width:15px;height:15px;margin-left:5px}.divider{margin:15px 0}.deactivated{color:grey}.el-card__body{padding:17px}.el-card__header{background-color:#fafafa;padding:10px 20px}.el-collapse{border-bottom:none}.el-collapse-item__header{height:46px;font-size:14px}.el-collapse-item__content{padding-bottom:7px}.el-icon-arrow-right{margin-right:6px}.el-icon-close{padding:10px 5px 10px 10px;cursor:pointer}h4{margin:0;height:17px}.report .report-header-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;height:40px}.id{color:grey;margin-top:6px}.line{width:100%;height:0;border:.5px solid #ebeef5;margin:15px 0}.new-note p{font-size:14px;font-weight:500;height:17px;margin:13px 0 7px}.note{-webkit-box-shadow:0 2px 5px 0 rgba(0,0,0,.1);box-shadow:0 2px 5px 0 rgba(0,0,0,.1);margin-bottom:10px}.no-notes{font-style:italic;color:grey}.report-row-key{font-weight:500;font-size:14px}.report-title{margin:0}.report-note-form{margin:15px 0 0}.report-post-note{margin:5px 0 0;text-align:right}.reports-pagination{margin:25px 0;text-align:center}.reports-timeline{margin:30px 45px 45px 19px;padding:0}.statuses{margin-top:15px}.submit-button{display:block;margin:7px 0 17px auto}.timestamp{margin:0;font-style:italic;color:grey}@media only screen and (max-width:480px){.report .report-header-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;height:auto}.report .id{margin:6px 0 0}.report .report-actions-button,.report .report-tag{margin:3px 0 6px}.report .title-container{margin-bottom:7px}.reports-timeline{margin:20px 10px}.reports-timeline .el-timeline-item__wrapper{padding-left:20px}}.select-field[data-v-ecc36f5a]{width:350px}@media only screen and (max-width:480px){.select-field[data-v-ecc36f5a]{width:100%;margin-bottom:5px}}@media only screen and (max-width:801px) and (min-width:481px){.select-field[data-v-ecc36f5a]{width:50%}}.reports-container .reboot-button[data-v-fa601560]{padding:10px;margin:0;width:145px}.reports-container .reports-filter-container[data-v-fa601560]{margin:15px 45px 22px 15px;padding-bottom:0}.reports-container .reports-filter-container[data-v-fa601560],.reports-container .reports-header-container[data-v-fa601560]{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}.reports-container .reports-header-container[data-v-fa601560]{margin:10px 15px}.reports-container h1[data-v-fa601560]{margin:0}.reports-container .no-reports-message[data-v-fa601560]{color:grey;margin-left:19px}.reports-container .report-count[data-v-fa601560]{color:grey;font-size:28px}@media only screen and (max-width:480px){.reports-container h1[data-v-fa601560]{margin:7px 10px 15px}.reports-container .reboot-button[data-v-fa601560]{margin:0 0 5px 10px;width:145px}.reports-container .report-count[data-v-fa601560]{font-size:22px}.reports-container .reports-filter-container[data-v-fa601560]{margin:0 10px}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-3384.d50ed383.css b/priv/static/adminfe/chunk-c5f4.0827b1ce.css similarity index 76% rename from priv/static/adminfe/chunk-3384.d50ed383.css rename to priv/static/adminfe/chunk-c5f4.0827b1ce.css index 70ae2a26b..eb59ca31a 100644 --- a/priv/static/adminfe/chunk-3384.d50ed383.css +++ b/priv/static/adminfe/chunk-c5f4.0827b1ce.css @@ -1 +1 @@ -.copy-popover{width:330px}.copy-to-local-pack-button{margin-top:15px;float:right}.emoji-buttons{place-self:center;min-width:200px}.emoji-container-grid{display:grid;grid-template-columns:75px auto auto 200px;grid-column-gap:15px;margin-bottom:10px}.emoji-preview-img{max-width:100%;place-self:center}.emoji-info{place-self:center}.copy-pack-container{place-self:center stretch}.copy-pack-select{width:100%}.remote-emoji-container-grid{display:grid;grid-template-columns:75px auto auto 160px;grid-column-gap:15px;margin-bottom:10px}@media only screen and (max-width:480px){.emoji-container-flex{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;border:1px solid #dcdfe6;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:4px;padding:15px;margin:0 15px 15px 0}.emoji-info,.emoji-preview-img{margin-bottom:10px}.emoji-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;width:100%}.emoji-buttons button{padding:10px 5px;width:47%}}@media only screen and (max-width:801px) and (min-width:481px){.emoji-container-grid{grid-column-gap:10px}.emoji-buttons .el-button+.el-button{margin-left:5px}.remote-emoji-container-grid{grid-column-gap:10px}}.add-new-emoji{height:36px;font-size:14px;font-weight:700;color:#606266}.text{line-height:20px;margin-right:15px}.upload-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.upload-button{margin-left:10px}.upload-file-url{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:480px){.new-emoji-uploader-form label.el-form-item__label{padding:0}}.download-archive{width:250px}.download-pack-button-container{width:265px}.download-pack-button-container .el-link,.download-pack-button-container .el-link span,.download-pack-button-container .el-link span .download-archive{width:inherit}.download-shared-pack{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:10px}.download-shared-pack-button{margin-left:10px}.el-collapse-item__content{padding-bottom:0}.el-collapse-item__header{height:36px;font-size:14px;font-weight:700;color:#606266}.emoji-pack-card{margin-top:5px}.emoji-pack-metadata .el-form-item{margin-bottom:10px}.has-background .el-collapse-item__header{background:#f6f6f6}.no-background .el-collapse-item__header{background:#fff}.pack-button-container{margin:0 0 18px 120px}.save-pack-button-container{margin-bottom:8px;width:265px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:480px){.delete-pack-button{width:45%}.download-pack-button-container{width:100%}.download-shared-pack{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.download-shared-pack-button{margin-left:0;margin-top:10px;padding:10px}.pack-button-container{width:100%;margin:0 0 22px}.remote-pack-metadata .el-form-item__content{line-height:24px;margin-top:4px}.save-pack-button{width:54%}.save-pack-button-container{margin-bottom:8px;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.save-pack-button-container button{padding:10px 5px}.save-pack-button-container .el-button+.el-button{margin-left:3px}}.emoji-header-container{-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 15px 22px}.create-pack,.emoji-header-container,.emoji-packs-header-button-container{display:-webkit-box;display:-ms-flexbox;display:flex}.create-pack{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.create-pack-button{margin-left:10px}.emoji-packs-form{margin:0 30px}.emoji-packs-header{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:10px 15px 15px}.import-pack-button{margin-left:10px}h1{margin:0}.line{width:100%;height:0;border:1px solid #eee;margin-bottom:22px}.reboot-button{padding:10px;margin:0;width:145px}@media only screen and (min-width:1824px){.emoji-packs{max-width:1824px;margin:auto}}@media only screen and (max-width:480px){.create-pack{height:82px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.create-pack-button{margin-left:0}.divider{margin:15px 0}.el-message{min-width:80%}.el-message-box{width:80%}.emoji-header-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.emoji-packs-form{margin:0 7px}.emoji-packs-form label{padding-right:8px}.emoji-packs-form .el-form-item{margin-bottom:15px}.emoji-packs-header{margin:15px}.emoji-packs-header-button-container{height:82px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.emoji-packs-header-button-container .el-button+.el-button{margin:7px 0 0}.emoji-packs-header-button-container .el-button+.el-button,.reload-emoji-button{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}} \ No newline at end of file +.copy-popover{width:330px}.copy-to-local-pack-button{margin-top:15px;float:right}.emoji-buttons{place-self:center;min-width:200px}.emoji-container-grid{display:grid;grid-template-columns:75px auto auto 200px;grid-column-gap:15px;margin-bottom:10px}.emoji-preview-img{max-width:100%;place-self:center}.emoji-info{place-self:center}.copy-pack-container{place-self:center stretch}.copy-pack-select{width:100%}.remote-emoji-container-grid{display:grid;grid-template-columns:75px auto auto 160px;grid-column-gap:15px;margin-bottom:10px}@media only screen and (max-width:480px){.emoji-container-flex{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;border:1px solid #dcdfe6;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:4px;padding:15px;margin:0 15px 15px 0}.emoji-info,.emoji-preview-img{margin-bottom:10px}.emoji-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;width:100%}.emoji-buttons button{padding:10px 5px;width:47%}}@media only screen and (max-width:801px) and (min-width:481px){.emoji-container-grid{grid-column-gap:10px}.emoji-buttons .el-button+.el-button{margin-left:5px}.remote-emoji-container-grid{grid-column-gap:10px}}.add-new-emoji{height:36px;font-size:14px;font-weight:700;color:#606266}.text{line-height:20px;margin-right:15px}.upload-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.upload-button{margin-left:10px}.upload-file-url{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:480px){.new-emoji-uploader-form label.el-form-item__label{padding:0}}.download-archive{width:250px}.download-pack-button-container{width:265px}.download-pack-button-container .el-link,.download-pack-button-container .el-link span,.download-pack-button-container .el-link span .download-archive{width:inherit}.download-shared-pack{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:10px}.download-shared-pack-button{margin-left:10px}.el-collapse-item__content{padding-bottom:0}.el-collapse-item__header{height:36px;font-size:14px;font-weight:700;color:#606266}.emoji-pack-card{margin-top:5px}.emoji-pack-metadata .el-form-item{margin-bottom:10px}.has-background .el-collapse-item__header{background:#f6f6f6}.no-background .el-collapse-item__header{background:#fff}.pack-button-container{margin:0 0 18px 120px}.save-pack-button-container{margin-bottom:8px;width:265px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:480px){.delete-pack-button{width:45%}.download-pack-button-container{width:100%}.download-shared-pack{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.download-shared-pack-button{margin-left:0;margin-top:10px;padding:10px}.pack-button-container{width:100%;margin:0 0 22px}.remote-pack-metadata .el-form-item__content{line-height:24px;margin-top:4px}.save-pack-button{width:54%}.save-pack-button-container{margin-bottom:8px;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.save-pack-button-container button{padding:10px 5px}.save-pack-button-container .el-button+.el-button{margin-left:3px}}.emoji-header-container{-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 15px 22px}.create-pack,.emoji-header-container,.emoji-packs-header-button-container{display:-webkit-box;display:-ms-flexbox;display:flex}.create-pack{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.create-pack-button{margin-left:10px}.emoji-packs-form{margin:0 30px}.emoji-packs-header{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:10px 15px 15px}.import-pack-button{margin-left:10px;width:30%;max-width:700px}h1{margin:0}.line{width:100%;height:0;border:1px solid #eee;margin-bottom:22px}.reboot-button{padding:10px;margin:0;width:145px}@media only screen and (min-width:1824px){.emoji-packs{max-width:1824px;margin:auto}}@media only screen and (max-width:480px){.create-pack{height:82px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.create-pack-button{margin-left:0}.divider{margin:15px 0}.el-message{min-width:80%}.el-message-box{width:80%}.emoji-header-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.emoji-packs-form{margin:0 7px}.emoji-packs-form label{padding-right:8px}.emoji-packs-form .el-form-item{margin-bottom:15px}.emoji-packs-header{margin:15px}.emoji-packs-header-button-container{height:82px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.emoji-packs-header-button-container .el-button+.el-button{margin:7px 0 0;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.import-pack-button{width:90%}.reload-emoji-button{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-commons.7f6d2d11.css b/priv/static/adminfe/chunk-commons.7f6d2d11.css new file mode 100644 index 000000000..42f5e0ee9 --- /dev/null +++ b/priv/static/adminfe/chunk-commons.7f6d2d11.css @@ -0,0 +1 @@ +.status-card{margin-bottom:10px;cursor:pointer}.status-card .account{line-height:26px;font-size:13px;color:#606266}.status-card .account:hover{text-decoration:underline}.status-card .deactivated{color:grey;line-height:28px;vertical-align:middle}.status-card .image{width:20%}.status-card .image img{width:100%}.status-card .router-link{text-decoration:none}.status-card .show-more-button{margin-left:5px}.status-card .status-account{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.status-card .status-avatar-img{display:inline-block;width:15px;height:15px;margin-right:5px}.status-card .status-account-name{display:inline-block;margin:0;font-size:15px;font-weight:500}.status-card .status-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.status-card .status-card-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.status-card .status-checkbox{margin-right:7px}.status-card .status-content{font-size:15px;line-height:26px}.status-card .status-created-at{font-size:13px;color:#606266}.status-card .status-deleted{font-style:italic;margin-top:3px}.status-card .status-footer,.status-card .status-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.status-card .status-tags{display:inline}.status-card .status-without-content{font-style:italic}@media only screen and (max-width:480px){.el-message{min-width:80%}.el-message-box{width:80%}.status-card .el-card__header{padding:10px 17px}.status-card .el-tag{margin:3px 0}.status-card .status-account-container{margin-bottom:5px}.status-card .status-actions-button{margin:3px 0}.status-card .status-actions{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.status-card .status-footer{margin-top:10px}.status-card .status-footer,.status-card .status-header{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.status-card .status-header{display:-webkit-box;display:-ms-flexbox;display:flex}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-d38a.cabdc22e.css b/priv/static/adminfe/chunk-d38a.cabdc22e.css deleted file mode 100644 index 4a2bf472b..000000000 --- a/priv/static/adminfe/chunk-d38a.cabdc22e.css +++ /dev/null @@ -1 +0,0 @@ -.select-field[data-v-4bc96860]{width:350px}@media only screen and (max-width:480px){.select-field[data-v-4bc96860]{width:100%;margin-bottom:5px}}.el-dialog__body{padding:20px}.create-account-form-item{margin-bottom:20px}.create-account-form-item-without-margin{margin-bottom:0}@media only screen and (max-width:480px){.create-user-dialog{width:85%}.create-account-form-item{margin-bottom:20px}.el-dialog__body{padding:20px}}.moderate-user-button{text-align:left;width:350px;padding:10px}.moderate-user-button-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:480px){.moderate-user-button{width:100%}}.actions-button{text-align:left;width:350px;padding:10px}.actions-container{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0 15px 10px}.actions-container .el-dropdown{margin-left:10px}.active-tag{color:#409eff;font-weight:700}.active-tag .el-icon-check{color:#409eff;float:right;margin:7px 0 0 15px}.el-dropdown-link:hover{cursor:pointer;color:#409eff}.create-account>.el-icon-plus{margin-right:5px}.users-header-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}.password-reset-token{margin:0 0 14px}.password-reset-token-dialog{width:50%}.reset-password-link{text-decoration:underline}.users-container h1{margin:10px 0 0 15px;height:40px}.users-container .pagination{margin:25px 0;text-align:center}.users-container .reboot-button{margin:0 15px 0 0;padding:10px;width:145px}.users-container .search{width:350px;float:right;margin-left:10px}.users-container .filter-container{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:15px}.users-container .user-count{color:grey;font-size:28px}@media only screen and (max-width:480px){.password-reset-token-dialog{width:85%}.users-container h1{margin:0}.users-container .actions-button{width:100%}.users-container .actions-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:0 10px 7px}.users-container .el-icon-arrow-down{font-size:12px}.users-container .search{width:100%;margin-left:0}.users-container .filter-container{display:-webkit-box;display:-ms-flexbox;display:flex;height:82px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:0 10px}.users-container .el-tag{width:30px;display:inline-block;margin-bottom:4px;font-weight:700}.users-container .el-tag.el-tag--danger,.users-container .el-tag.el-tag--success{padding-left:8px}.users-container .reboot-button{margin:0}.users-container .users-header-container{margin:7px 10px 12px}.users-container .user-count{color:grey;font-size:22px}}@media only screen and (max-width:801px) and (min-width:481px){.actions-button,.search{width:49%}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-e404.a56021ae.css b/priv/static/adminfe/chunk-e404.a56021ae.css new file mode 100644 index 000000000..7d8596ef6 --- /dev/null +++ b/priv/static/adminfe/chunk-e404.a56021ae.css @@ -0,0 +1 @@ +a{text-decoration:underline}.note-header{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;height:40px}.note-actor{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.note-actor-name{margin:0;height:28px}.note-avatar-img{width:15px;height:15px;margin-right:5px}.note-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.note-card{margin-bottom:15px}.note-content,.note-header{font-size:15px}.note-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:28px;font-weight:500}@media only screen and (max-width:480px){.el-card__header{padding:10px 17px}.note-header{height:65px}.note-actor{margin-bottom:5px}.note-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}}h4{margin:0;height:17px}.account{line-height:26px;font-size:13px;color:#606266}.account:hover{text-decoration:underline}.avatar-img{vertical-align:bottom;width:15px;height:15px}.divider{margin:15px 0}.deactivated{color:grey}.el-card__body{padding:17px}.el-card__header{background-color:#fafafa;padding:10px 20px}.el-collapse{border-bottom:none}.el-collapse-item__header{height:46px;font-size:14px}.el-collapse-item__content{padding-bottom:7px}.el-icon-arrow-right{margin-right:6px}.el-icon-close{padding:10px 5px 10px 10px;cursor:pointer}.id{color:grey;margin-top:6px}.line{width:100%;height:0;border:.5px solid #ebeef5;margin:15px 0}.new-note p{font-size:14px;font-weight:500;height:17px;margin:13px 0 7px}.note{-webkit-box-shadow:0 2px 5px 0 rgba(0,0,0,.1);box-shadow:0 2px 5px 0 rgba(0,0,0,.1);margin-bottom:10px}.no-notes{font-style:italic;color:grey}.report .report-header-container{height:40px}.report-account,.report .report-header-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.report-account{-webkit-box-flex:2;-ms-flex-positive:2;flex-grow:2}.report-account-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.report-account-name{font-size:15px;font-weight:500}.report-row-key{font-size:14px;font-weight:500;padding-right:5px}.report-title{margin:0}.report-note-form{margin:15px 0 0}.report-post-note{margin:5px 0 0;text-align:right}.reports-pagination{margin:25px 0;text-align:center}.reports-timeline{margin:30px 45px 45px 19px;padding:0}.router-link{text-decoration:none}.reported-statuses{margin-top:15px}.submit-button{display:block;margin:7px 0 17px auto}.timestamp{margin:0;font-style:italic;color:grey}@media only screen and (max-width:480px){.report .report-header-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;height:auto}.report .id{margin:6px 0 0}.report .report-actions-button,.report .report-tag{margin:3px 0 6px}.report .title-container{margin-bottom:7px}.reports-timeline{margin:20px 10px}.reports-timeline .el-timeline-item__wrapper{padding-left:20px}}.select-field[data-v-ecc36f5a]{width:350px}@media only screen and (max-width:480px){.select-field[data-v-ecc36f5a]{width:100%;margin-bottom:5px}}@media only screen and (max-width:801px) and (min-width:481px){.select-field[data-v-ecc36f5a]{width:50%}}.reports-container .reboot-button[data-v-fa601560]{padding:10px;margin:0;width:145px}.reports-container .reports-filter-container[data-v-fa601560]{margin:15px 45px 22px 15px;padding-bottom:0}.reports-container .reports-filter-container[data-v-fa601560],.reports-container .reports-header-container[data-v-fa601560]{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}.reports-container .reports-header-container[data-v-fa601560]{margin:10px 15px}.reports-container h1[data-v-fa601560]{margin:0}.reports-container .no-reports-message[data-v-fa601560]{color:grey;margin-left:19px}.reports-container .report-count[data-v-fa601560]{color:grey;font-size:28px}@media only screen and (max-width:480px){.reports-container h1[data-v-fa601560]{margin:7px 10px 15px}.reports-container .reboot-button[data-v-fa601560]{margin:0 0 5px 10px;width:145px}.reports-container .report-count[data-v-fa601560]{font-size:22px}.reports-container .reports-filter-container[data-v-fa601560]{margin:0 10px}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-e458.6c0703cb.css b/priv/static/adminfe/chunk-e458.6c0703cb.css deleted file mode 100644 index 6d2a5d996..000000000 --- a/priv/static/adminfe/chunk-e458.6c0703cb.css +++ /dev/null @@ -1 +0,0 @@ -.status-card{margin-bottom:10px}.status-card .account{text-decoration:underline;line-height:26px;font-size:13px}.status-card .image{width:20%}.status-card .image img{width:100%}.status-card .show-more-button{margin-left:5px}.status-card .status-account{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.status-card .status-avatar-img{display:inline-block;width:15px;height:15px;margin-right:5px}.status-card .status-account-name{display:inline-block;margin:0;height:22px}.status-card .status-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.status-card .status-checkbox{margin-right:7px}.status-card .status-content{font-size:15px;line-height:26px}.status-card .status-deleted{font-style:italic;margin-top:3px}.status-card .status-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.status-card .status-without-content{font-style:italic}@media only screen and (max-width:480px){.el-message{min-width:80%}.el-message-box{width:80%}.status-card .el-card__header{padding:10px 17px}.status-card .el-tag{margin:3px 4px 3px 0}.status-card .status-account-container{margin-bottom:5px}.status-card .status-actions-button{margin:3px 0}.status-card .status-actions{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.status-card .status-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.statuses-container{padding:0 15px}.statuses-container h1{margin:10px 0 15px}.statuses-container .status-container{margin:0 0 10px}.statuses-header-container .el-button.is-plain:focus,.statuses-header-container .el-button.is-plain:hover{border-color:#dcdfe6;color:#606266;cursor:default}.checkbox-container{margin-bottom:15px}.filter-container{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:22px 0 15px}.reboot-button{padding:10px;margin:0;width:145px}.select-instance{width:396px}.statuses-header,.statuses-header-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}.statuses-pagination{padding:15px 0;text-align:center}@media only screen and (max-width:480px){.checkbox-container{margin-bottom:10px}.filter-container{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:10px 0}.select-field{width:100%;margin-bottom:5px}.select-instance{width:100%}.statuses-header-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.statuses-header-container .el-button-group{width:100%}.statuses-header-container .el-button{padding:10px 6.5px;width:50%}.statuses-header-container .el-button-group>.el-button:first-child{border-bottom-left-radius:0}.statuses-header-container .el-button-group>.el-button:not(:first-child):not(:last-child).private-button{border-top-right-radius:4px}.statuses-header-container .el-button-group>.el-button:not(:first-child):not(:last-child).public-button{border-bottom-left-radius:4px;border-top:#fff}.statuses-header-container .el-button-group>.el-button:last-child{border-top-right-radius:0;border-top:#fff}.statuses-header-container .reboot-button{margin:10px 0 0}} \ No newline at end of file diff --git a/priv/static/adminfe/index.html b/priv/static/adminfe/index.html index 73e680115..c8f62d0c7 100644 --- a/priv/static/adminfe/index.html +++ b/priv/static/adminfe/index.html @@ -1 +1 @@ -Admin FE
\ No newline at end of file +Admin FE
\ No newline at end of file diff --git a/priv/static/adminfe/static/js/app.0146039c.js b/priv/static/adminfe/static/js/app.0146039c.js deleted file mode 100644 index ab08475ad..000000000 --- a/priv/static/adminfe/static/js/app.0146039c.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["app"],{"+aF5":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-pdf",use:"icon-pdf-usage",viewBox:"0 0 1024 1024",content:''});o.a.add(i);t.default=i},"0Fbn":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-people",use:"icon-people-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},"1+ww":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-eye-open",use:"icon-eye-open-usage",viewBox:"0 0 1024 1024",content:''});o.a.add(i);t.default=i},"18BR":function(e,t,n){"use strict";var a=n("CzPo");n.n(a).a},"28eg":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-exit-fullscreen",use:"icon-exit-fullscreen-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},"3PhE":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-nested",use:"icon-nested-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},"5TQQ":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-theme",use:"icon-theme-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},"6xvN":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-form",use:"icon-form-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},"94Jb":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-dashboard",use:"icon-dashboard-usage",viewBox:"0 0 128 100",content:''});o.a.add(i);t.default=i},"9i3r":function(e,t,n){"use strict";n.d(t,"a",function(){return a});var a=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"localhost";return e.match(/https?:\/\//)?e:function(e){return e.startsWith("localhost:")||e.startsWith("127.0.0.1:")}(e)?"http://".concat(e):"https://".concat(e)}},CzPo:function(e,t,n){},EqXK:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-shopping",use:"icon-shopping-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},F3lI:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-bug",use:"icon-bug-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},"F9+T":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-international",use:"icon-international-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},FDDl:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-qq",use:"icon-qq-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},GPBF:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-link",use:"icon-link-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},HIWW:function(e,t,n){"use strict";var a=n("MoCq");n.n(a).a},Hnev:function(e,t,n){"use strict";var a=n("UqWv");n.n(a).a},ICep:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-guide 2",use:"icon-guide 2-usage",viewBox:"0 0 1000 1000",content:''});o.a.add(i);t.default=i},JYDz:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-language",use:"icon-language-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},Kcm3:function(e,t,n){},Kj24:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-password",use:"icon-password-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},LxGF:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-peoples",use:"icon-peoples-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},MEYL:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-money",use:"icon-money-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},MMMJ:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-example",use:"icon-example-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},MoCq:function(e,t,n){},MokB:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-list",use:"icon-list-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},P8iQ:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-settings",use:"icon-settings-usage",viewBox:"0 0 490.2 490.2",content:'\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n'});o.a.add(i);t.default=i},"R/8a":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-message",use:"icon-message-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},"R/Hx":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-table",use:"icon-table-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},SZWj:function(e,t,n){"use strict";var a=n("Xm3t");n.n(a).a},TfVu:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-eye",use:"icon-eye-usage",viewBox:"0 0 128 64",content:''});o.a.add(i);t.default=i},Tfa4:function(e,t,n){},"Uf/o":function(e,t,n){var a={"./404.svg":"oUrx","./bug.svg":"F3lI","./chart.svg":"yCkv","./clipboard.svg":"vDVG","./component.svg":"VtY+","./dashboard.svg":"94Jb","./documentation.svg":"kPu2","./drag.svg":"m7++","./edit.svg":"qkZ8","./email.svg":"y7eQ","./example.svg":"MMMJ","./excel.svg":"ZZmv","./exit-fullscreen.svg":"28eg","./eye-open.svg":"1+ww","./eye.svg":"TfVu","./form.svg":"6xvN","./fullscreen.svg":"mSHS","./guide 2.svg":"ICep","./guide.svg":"ZoO1","./icon.svg":"nZHn","./international.svg":"F9+T","./language.svg":"JYDz","./link.svg":"GPBF","./list.svg":"MokB","./lock.svg":"qwAt","./message.svg":"R/8a","./money.svg":"MEYL","./nested.svg":"3PhE","./password.svg":"Kj24","./pdf.svg":"+aF5","./people.svg":"0Fbn","./peoples.svg":"LxGF","./qq.svg":"FDDl","./search.svg":"jo2x","./settings.svg":"P8iQ","./shopping.svg":"EqXK","./size.svg":"hkRB","./star.svg":"cIpu","./tab.svg":"j7e1","./table.svg":"R/Hx","./theme.svg":"5TQQ","./tree.svg":"k80C","./user.svg":"s7Vf","./wechat.svg":"gNoN","./zip.svg":"iqZD"};function r(e){var t=s(e);return n(t)}function s(e){if(!n.o(a,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return a[e]}r.keys=function(){return Object.keys(a)},r.resolve=s,e.exports=r,r.id="Uf/o"},UqWv:function(e,t,n){},"VtY+":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-component",use:"icon-component-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},Vtdi:function(e,t,n){"use strict";n.r(t);var a={};n.r(a),n.d(a,"parseTime",function(){return me}),n.d(a,"formatTime",function(){return fe}),n.d(a,"timeAgo",function(){return ta}),n.d(a,"numberFormatter",function(){return na}),n.d(a,"toThousandFilter",function(){return aa});var r=n("Kw5r"),s=n("p46w"),o=n.n(s),i=(n("9d8Q"),n("XJYT")),c=n.n(i),u=(n("D66Q"),n("sg+I"),{name:"App"}),l=n("KHd+"),p=Object(l.a)(u,function(){var e=this.$createElement,t=this._self._c||e;return t("div",{attrs:{id:"app"}},[t("router-view")],1)},[],!1,null,null,null);p.options.__file="App.vue";var d=p.exports,h=n("L2JU"),m=n("o0o1"),f=n.n(m),v=n("yXPU"),g=n.n(v),w=n("t3Un"),b=n("X4fA"),y=n("9i3r");function x(e,t){return T.apply(this,arguments)}function T(){return(T=g()(f.a.mark(function e(t,n){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(t),url:"/api/pleroma/admin/need_reboot",method:"get",headers:S(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function E(e,t){return k.apply(this,arguments)}function k(){return(k=g()(f.a.mark(function e(t,n){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(t),url:"/api/pleroma/admin/restart",method:"get",headers:S(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var S=function(e){return e?{Authorization:"Bearer ".concat(Object(b.b)())}:{}},_={state:{sidebar:{opened:!o.a.get("sidebarStatus")||!!+o.a.get("sidebarStatus"),withoutAnimation:!1},device:"desktop",language:o.a.get("language")||"en",needReboot:!1,size:o.a.get("size")||"medium",invitesEnabled:!1},mutations:{TOGGLE_SIDEBAR:function(e){e.sidebar.opened=!e.sidebar.opened,e.sidebar.withoutAnimation=!1,e.sidebar.opened?o.a.set("sidebarStatus",1):o.a.set("sidebarStatus",0)},CLOSE_SIDEBAR:function(e,t){o.a.set("sidebarStatus",0),e.sidebar.opened=!1,e.sidebar.withoutAnimation=t},TOGGLE_DEVICE:function(e,t){e.device=t},SET_INVITES_ENABLED:function(e,t){e.invitesEnabled=t},SET_LANGUAGE:function(e,t){e.language=t,o.a.set("language",t)},TOGGLE_REBOOT:function(e,t){e.needReboot=t},SET_SIZE:function(e,t){e.size=t,o.a.set("size",t)}},actions:{closeSideBar:function(e,t){(0,e.commit)("CLOSE_SIDEBAR",t.withoutAnimation)},NeedReboot:function(){var e=g()(f.a.mark(function e(t){var n,a,r;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.commit,a=t.getters,e.next=3,x(a.authHost,a.token);case 3:r=e.sent,n("TOGGLE_REBOOT",r.data.need_reboot);case 5:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),RestartApplication:function(){var e=g()(f.a.mark(function e(t){var n,a;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.commit,a=t.getters,e.next=3,E(a.authHost,a.token);case 3:n("TOGGLE_REBOOT",!1);case 4:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),SetInvitesEnabled:function(e,t){(0,e.commit)("SET_INVITES_ENABLED",t)},setLanguage:function(e,t){(0,e.commit)("SET_LANGUAGE",t)},setSize:function(e,t){(0,e.commit)("SET_SIZE",t)},toggleDevice:function(e,t){(0,e.commit)("TOGGLE_DEVICE",t)},toggleSideBar:function(e){(0,e.commit)("TOGGLE_SIDEBAR")}}},O={state:{logs:[]},mutations:{ADD_ERROR_LOG:function(e,t){e.logs.push(t)}},actions:{addErrorLog:function(e,t){(0,e.commit)("ADD_ERROR_LOG",t)}}},L=n("MVZn"),A=n.n(L),I=n("LvDl"),C=n.n(I);function R(e,t,n){return D.apply(this,arguments)}function D(){return(D=g()(f.a.mark(function e(t,n,a){var r,s,o=arguments;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=o.length>3&&void 0!==o[3]?o[3]:1,s=new URLSearchParams(C.a.omitBy(A()({},a,{page:r}),C.a.isUndefined)).toString(),e.next=4,Object(w.a)({baseURL:Object(y.a)(t),url:"/api/pleroma/admin/moderation_log?".concat(s),method:"get",headers:M(n)});case 4:return e.abrupt("return",e.sent);case 5:case"end":return e.stop()}},e)}))).apply(this,arguments)}function V(e,t){return j.apply(this,arguments)}function j(){return(j=g()(f.a.mark(function e(t,n){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(t),url:"/api/pleroma/admin/users?filters=is_admin",method:"get",headers:M(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function P(e,t){return z.apply(this,arguments)}function z(){return(z=g()(f.a.mark(function e(t,n){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(t),url:"/api/pleroma/admin/users?filters=is_moderator",method:"get",headers:M(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var M=function(e){return e?{Authorization:"Bearer ".concat(Object(b.b)())}:{}},B={state:{fetchedLog:[],logItemsCount:0,admins:[],moderators:[],logLoading:!0,adminsLoading:!0},mutations:{SET_LOG_LOADING:function(e,t){e.logLoading=t},SET_ADMINS_LOADING:function(e,t){e.adminsLoading=t},SET_MODERATION_LOG:function(e,t){e.fetchedLog=t},SET_MODERATION_LOG_COUNT:function(e,t){e.logItemsCount=t},SET_ADMINS:function(e,t){e.admins=t},SET_MODERATORS:function(e,t){e.moderators=t}},actions:{FetchModerationLog:function(){var e=g()(f.a.mark(function e(t){var n,a,r,s,o=arguments;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.commit,a=t.getters,r=o.length>1&&void 0!==o[1]?o[1]:{},e.next=4,R(a.authHost,a.token,r);case 4:s=e.sent,n("SET_MODERATION_LOG",s.data.items),n("SET_MODERATION_LOG_COUNT",s.data.total),n("SET_LOG_LOADING",!1);case 8:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),FetchAdmins:function(){var e=g()(f.a.mark(function e(t){var n,a,r,s;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.commit,a=t.getters,e.next=3,V(a.authHost,a.token);case 3:return r=e.sent,e.next=6,P(a.authHost,a.token);case 6:s=e.sent,n("SET_ADMINS",r.data),n("SET_MODERATORS",s.data),n("SET_ADMINS_LOADING",!1);case 10:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}()}};function H(e,t,n,a){return U.apply(this,arguments)}function U(){return(U=g()(f.a.mark(function e(t,n,a,r){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/users/invite_token",method:"post",headers:K(r),data:n&&n.length>0?{max_use:t,expires_at:n}:{max_use:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function N(e,t,n,a){return F.apply(this,arguments)}function F(){return(F=g()(f.a.mark(function e(t,n,a,r){var s;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return s=n.length>0?{email:t,name:n}:{email:t},e.next=3,Object(w.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/users/email_invite",method:"post",headers:K(r),data:s});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}function G(e,t){return Y.apply(this,arguments)}function Y(){return(Y=g()(f.a.mark(function e(t,n){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(t),url:"/api/pleroma/admin/users/invites",method:"get",headers:K(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function $(e,t,n){return q.apply(this,arguments)}function q(){return(q=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/revoke_invite",method:"post",headers:K(a),data:{token:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var K=function(e){return e?{Authorization:"Bearer ".concat(Object(b.b)())}:{}},W=n("mSNy"),Z={state:{inviteTokens:[],loading:!1,newToken:{}},mutations:{SET_LOADING:function(e,t){e.loading=t},SET_NEW_TOKEN:function(e,t){e.newToken=t},SET_TOKENS:function(e,t){e.inviteTokens=t}},actions:{FetchInviteTokens:function(){var e=g()(f.a.mark(function e(t){var n,a,r;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.commit,a=t.getters,n("SET_LOADING",!0),e.next=4,G(a.authHost,a.token);case 4:r=e.sent,n("SET_TOKENS",r.data.invites.reverse()),n("SET_LOADING",!1);case 7:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),GenerateInviteToken:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.dispatch,s=t.getters,o=n.maxUse,i=n.expiresAt,e.prev=2,e.next=5,H(o,i,s.authHost,s.token);case 5:c=e.sent,u=c.data,a("SET_NEW_TOKEN",{token:u.token,maxUse:u.max_use,expiresAt:u.expires_at}),e.next=13;break;case 10:return e.prev=10,e.t0=e.catch(2),e.abrupt("return");case 13:r("FetchInviteTokens");case 14:case"end":return e.stop()}},e,null,[[2,10]])}));return function(t,n){return e.apply(this,arguments)}}(),InviteUserViaEmail:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t.commit,t.dispatch,a=t.getters,r=n.email,s=n.name,e.prev=2,e.next=5,N(r,s,a.authHost,a.token);case 5:e.next=10;break;case 7:return e.prev=7,e.t0=e.catch(2),e.abrupt("return");case 10:Object(i.Message)({message:W.a.t("invites.emailSent"),type:"success",duration:5e3});case 11:case"end":return e.stop()}},e,null,[[2,7]])}));return function(t,n){return e.apply(this,arguments)}}(),RemoveNewToken:function(e){(0,e.commit)("SET_NEW_TOKEN",{})},RevokeToken:function(){var e=g()(f.a.mark(function e(t,n){var a,r;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t.commit,a=t.dispatch,r=t.getters,e.prev=1,e.next=4,$(n,r.authHost,r.token);case 4:e.next=9;break;case 6:return e.prev=6,e.t0=e.catch(1),e.abrupt("return");case 9:a("FetchInviteTokens");case 10:case"end":return e.stop()}},e,null,[[1,6]])}));return function(t,n){return e.apply(this,arguments)}}()}},J=n("RIqP"),Q=n.n(J);function X(e,t){return ee.apply(this,arguments)}function ee(){return(ee=g()(f.a.mark(function e(t,n){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(t),url:"/api/v1/instance/peers",method:"get",headers:te(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var te=function(e){return e?{Authorization:"Bearer ".concat(Object(b.b)())}:{}},ne={state:{fetchedPeers:[],loading:!0},mutations:{SET_PEERS:function(e,t){e.fetchedPeers=t},SET_LOADING:function(e,t){e.loading=t}},actions:{FetchPeers:function(){var e=g()(f.a.mark(function e(t){var n,a,r;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.commit,a=t.getters,e.next=3,X(a.authHost,a.token);case 3:r=e.sent,n("SET_PEERS",Q()(r.data).sort()),n("SET_LOADING",!1);case 6:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}()}},ae=n("jE9Z"),re={name:"Hamburger",props:{isActive:{type:Boolean,default:!1},toggleClick:{type:Function,default:null}}},se=(n("18BR"),Object(l.a)(re,function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticStyle:{padding:"0 15px"},on:{click:this.toggleClick}},[t("svg",{staticClass:"hamburger",class:{"is-active":this.isActive},attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg",width:"64",height:"64"}},[t("path",{attrs:{d:"M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM142.4 642.1L298.7 519a8.84 8.84 0 0 0 0-13.9L142.4 381.9c-5.8-4.6-14.4-.5-14.4 6.9v246.3a8.9 8.9 0 0 0 14.4 7z"}})])])},[],!1,null,"69c6c5c4",null));se.options.__file="index.vue";var oe={components:{Hamburger:se.exports},computed:A()({},Object(h.b)(["sidebar","name","avatar","device"])),methods:{toggleSideBar:function(){this.$store.dispatch("toggleSideBar")},logout:function(){this.$store.dispatch("LogOut").then(function(){location.reload()})}}},ie=(n("fhHp"),Object(l.a)(oe,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"navbar"},[n("hamburger",{staticClass:"hamburger-container",attrs:{"toggle-click":e.toggleSideBar,"is-active":e.sidebar.opened}}),e._v(" "),n("div",{staticClass:"right-menu"},[n("el-dropdown",{staticClass:"avatar-container right-menu-item hover-effect",attrs:{trigger:"click"}},[n("div",{staticClass:"avatar-wrapper"},[n("img",{staticClass:"user-avatar",attrs:{src:e.avatar+"?imageView2/1/w/80/h/80"}})]),e._v(" "),n("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[n("el-dropdown-item",[n("span",{staticStyle:{display:"block"},on:{click:e.logout}},[e._v(e._s(e.$t("navbar.logOut")))])])],1)],1)],1)],1)},[],!1,null,"28de7ff2",null));ie.options.__file="Navbar.vue";var ce=ie.exports,ue=n("33yf"),le=n.n(ue);function pe(e){return this.$te("route."+e)?this.$t("route."+e):e}var de=n("cDf5"),he=n.n(de);function me(e,t){if(0===arguments.length)return null;var n,a=t||"{y}-{m}-{d} {h}:{i}:{s}";"object"===he()(e)?n=e:("string"==typeof e&&/^[0-9]+$/.test(e)&&(e=parseInt(e)),"number"==typeof e&&10===e.toString().length&&(e*=1e3),n=new Date(e));var r={y:n.getFullYear(),m:n.getMonth()+1,d:n.getDate(),h:n.getHours(),i:n.getMinutes(),s:n.getSeconds(),a:n.getDay()};return a.replace(/{(y|m|d|h|i|s|a)+}/g,function(e,t){var n=r[t];return"a"===t?["日","一","二","三","四","五","六"][n]:(e.length>0&&n<10&&(n="0"+n),n||0)})}function fe(e,t){e=1e3*+e;var n=new Date(e),a=(Date.now()-n)/1e3;return a<30?"刚刚":a<3600?Math.ceil(a/60)+"分钟前":a<86400?Math.ceil(a/3600)+"小时前":a<172800?"1天前":t?me(e,t):n.getMonth()+1+"月"+n.getDate()+"日"+n.getHours()+"时"+n.getMinutes()+"分"}function ve(e){return/^(https?:|mailto:|tel:)/.test(e)}var ge={name:"MenuItem",functional:!0,props:{icon:{type:String,default:""},title:{type:String,default:""}},render:function(e,t){var n=t.props,a=n.icon,r=n.title,s=[];return a&&s.push(e("svg-icon",{attrs:{"icon-class":a}})),r&&s.push(e("span",{slot:"title"},[r])),s}},we=Object(l.a)(ge,void 0,void 0,!1,null,null,null);we.options.__file="Item.vue";var be=we.exports,ye={props:{to:{type:String,required:!0}},methods:{linkProps:function(e){return ve(e)?{is:"a",href:e,target:"_blank",rel:"noopener"}:{is:"router-link",to:e}}}},xe=Object(l.a)(ye,function(){var e=this.$createElement;return(this._self._c||e)("component",this._b({},"component",this.linkProps(this.to),!1),[this._t("default")],2)},[],!1,null,null,null);xe.options.__file="Link.vue";var Te={name:"SidebarItem",components:{Item:be,AppLink:xe.exports},mixins:[{computed:{device:function(){return this.$store.state.app.device}},mounted:function(){this.fixBugIniOS()},methods:{fixBugIniOS:function(){var e=this,t=this.$refs.subMenu;if(t){var n=t.handleMouseleave;t.handleMouseleave=function(t){"mobile"!==e.device&&n(t)}}}}}],props:{item:{type:Object,required:!0},isNest:{type:Boolean,default:!1},basePath:{type:String,default:""}},data:function(){return{onlyOneChild:null}},computed:{invitesEnabled:function(){return"/invites"!==this.basePath||this.$store.state.app.invitesEnabled}},methods:{hasOneShowingChild:function(e,t){var n=this,a=e.filter(function(e){return!e.hidden&&(n.onlyOneChild=e,!0)});return 1===a.length||0===a.length&&(this.onlyOneChild=A()({},t,{path:"",noShowingChildren:!0}),!0)},resolvePath:function(e){return this.isExternalLink(e)?e:le.a.resolve(this.basePath,e)},isExternalLink:function(e){return ve(e)},generateTitle:pe}},Ee=Object(l.a)(Te,function(){var e=this,t=e.$createElement,n=e._self._c||t;return!e.item.hidden&&e.item.children&&e.invitesEnabled?n("div",{staticClass:"menu-wrapper"},[!e.hasOneShowingChild(e.item.children,e.item)||e.onlyOneChild.children&&!e.onlyOneChild.noShowingChildren||e.item.alwaysShow?n("el-submenu",{ref:"subMenu",attrs:{index:e.resolvePath(e.item.path)}},[n("template",{slot:"title"},[e.item.meta?n("item",{attrs:{icon:e.item.meta.icon,title:e.generateTitle(e.item.meta.title)}}):e._e()],1),e._v(" "),e._l(e.item.children,function(t){return[t.hidden?e._e():[t.children&&t.children.length>0?n("sidebar-item",{key:t.path,staticClass:"nest-menu",attrs:{"is-nest":!0,item:t,"base-path":e.resolvePath(t.path)}}):n("app-link",{key:t.name,attrs:{to:e.resolvePath(t.path)}},[n("el-menu-item",{attrs:{index:e.resolvePath(t.path)}},[t.meta?n("item",{attrs:{icon:t.meta.icon,title:e.generateTitle(t.meta.title)}}):e._e()],1)],1)]]})],2):[n("app-link",{attrs:{to:e.resolvePath(e.onlyOneChild.path)}},[n("el-menu-item",{class:{"submenu-title-noDropdown":!e.isNest},attrs:{index:e.resolvePath(e.onlyOneChild.path)}},[e.onlyOneChild.meta?n("item",{attrs:{icon:e.onlyOneChild.meta.icon||e.item.meta.icon,title:e.generateTitle(e.onlyOneChild.meta.title)}}):e._e()],1)],1)]],2):e._e()},[],!1,null,null,null);Ee.options.__file="SidebarItem.vue";var ke=Ee.exports,Se=n("zx4i"),_e=n.n(Se),Oe={components:{SidebarItem:ke},computed:A()({},Object(h.b)(["permission_routers","sidebar"]),{variables:function(){return _e.a},isCollapse:function(){return!this.sidebar.opened}})},Le=Object(l.a)(Oe,function(){var e=this.$createElement,t=this._self._c||e;return t("el-scrollbar",{attrs:{"wrap-class":"scrollbar-wrapper"}},[t("el-menu",{attrs:{"default-active":this.$route.path,collapse:this.isCollapse,"background-color":this.variables.menuBg,"text-color":this.variables.menuText,"active-text-color":this.variables.menuActiveText,mode:"vertical"}},this._l(this.permission_routers,function(e){return t("sidebar-item",{key:e.path,attrs:{item:e,"base-path":e.path}})}),1)],1)},[],!1,null,null,null);Le.options.__file="index.vue";var Ae=Le.exports,Ie={name:"ScrollPane",data:function(){return{left:0}},methods:{handleScroll:function(e){var t=e.wheelDelta||40*-e.deltaY,n=this.$refs.scrollContainer.$refs.wrap;n.scrollLeft=n.scrollLeft+t/4},moveToTarget:function(e){var t=this.$refs.scrollContainer.$el.offsetWidth,n=this.$refs.scrollContainer.$refs.wrap,a=this.$parent.$refs.tag,r=null,s=null;if(a.length>0&&(r=a[0],s=a[a.length-1]),r===e)n.scrollLeft=0;else if(s===e)n.scrollLeft=n.scrollWidth-t;else{var o=a.findIndex(function(t){return t===e}),i=a[o-1],c=a[o+1],u=c.$el.offsetLeft+c.$el.offsetWidth+4,l=i.$el.offsetLeft-4;u>n.scrollLeft+t?n.scrollLeft=u-t:l1&&void 0!==arguments[1]?arguments[1]:"/",a=[];return e.forEach(function(e){if(e.meta&&e.meta.affix&&a.push({path:le.a.resolve(n,e.path),name:e.name,meta:A()({},e.meta)}),e.children){var r=t.filterAffixTags(e.children,e.path);r.length>=1&&(a=[].concat(Q()(a),Q()(r)))}}),a},initTags:function(){var e=this.affixTags=this.filterAffixTags(this.routers),t=!0,n=!1,a=void 0;try{for(var r,s=e[Symbol.iterator]();!(t=(r=s.next()).done);t=!0){var o=r.value;o.name&&this.$store.dispatch("addVisitedView",o)}}catch(e){n=!0,a=e}finally{try{t||null==s.return||s.return()}finally{if(n)throw a}}},addTags:function(){return this.$route.name&&this.$store.dispatch("addView",this.$route),!1},moveToCurrentTag:function(){var e=this,t=this.$refs.tag;this.$nextTick(function(){var n=!0,a=!1,r=void 0;try{for(var s,o=t[Symbol.iterator]();!(n=(s=o.next()).done);n=!0){var i=s.value;if(i.to.path===e.$route.path){e.$refs.scrollPane.moveToTarget(i),i.to.fullPath!==e.$route.fullPath&&e.$store.dispatch("updateVisitedView",e.$route);break}}}catch(e){a=!0,r=e}finally{try{n||null==o.return||o.return()}finally{if(a)throw r}}})},refreshSelectedTag:function(e){var t=this;this.$store.dispatch("delCachedView",e).then(function(){var n=e.fullPath;t.$nextTick(function(){t.$router.replace({path:"/redirect"+n})})})},closeSelectedTag:function(e){var t=this;this.$store.dispatch("delView",e).then(function(n){var a=n.visitedViews;t.isActive(e)&&t.toLastView(a)})},closeOthersTags:function(){var e=this;this.$router.push(this.selectedTag),this.$store.dispatch("delOthersViews",this.selectedTag).then(function(){e.moveToCurrentTag()})},closeAllTags:function(e){var t=this;this.$store.dispatch("delAllViews").then(function(n){var a=n.visitedViews;t.affixTags.some(function(t){return t.path===e.path})||t.toLastView(a)})},toLastView:function(e){var t=e.slice(-1)[0];t?this.$router.push(t):this.$router.push("/")},openMenu:function(e,t){var n=this.$el.getBoundingClientRect().left,a=this.$el.offsetWidth-105,r=t.clientX-n+15;this.left=r>a?a:r,this.top=t.clientY,this.visible=!0,this.selectedTag=e},closeMenu:function(){this.visible=!1}}},De=(n("Hnev"),n("Yymj"),Object(l.a)(Re,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"tags-view-container"},[n("scroll-pane",{ref:"scrollPane",staticClass:"tags-view-wrapper"},e._l(e.visitedViews,function(t){return n("router-link",{key:t.path,ref:"tag",refInFor:!0,staticClass:"tags-view-item",class:e.isActive(t)?"active":"",attrs:{to:{path:t.path,query:t.query,fullPath:t.fullPath},tag:"span"},nativeOn:{mouseup:function(n){return"button"in n&&1!==n.button?null:e.closeSelectedTag(t)},contextmenu:function(n){return n.preventDefault(),e.openMenu(t,n)}}},[e._v("\n "+e._s(e.generateTitle(t.title))+"\n "),t.meta.affix?e._e():n("span",{staticClass:"el-icon-close",on:{click:function(n){return n.preventDefault(),n.stopPropagation(),e.closeSelectedTag(t)}}})])}),1),e._v(" "),n("ul",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"contextmenu",style:{left:e.left+"px",top:e.top+"px"}},[n("li",{on:{click:function(t){return e.refreshSelectedTag(e.selectedTag)}}},[e._v(e._s(e.$t("tagsView.refresh")))]),e._v(" "),e.selectedTag.meta&&e.selectedTag.meta.affix?e._e():n("li",{on:{click:function(t){return e.closeSelectedTag(e.selectedTag)}}},[e._v(e._s(e.$t("tagsView.close")))]),e._v(" "),n("li",{on:{click:e.closeOthersTags}},[e._v(e._s(e.$t("tagsView.closeOthers")))]),e._v(" "),n("li",{on:{click:function(t){return e.closeAllTags(e.selectedTag)}}},[e._v(e._s(e.$t("tagsView.closeAll")))])])],1)},[],!1,null,"e1cdb714",null));De.options.__file="TagsView.vue";var Ve=De.exports,je={name:"AppMain",computed:{cachedViews:function(){return this.$store.state.tagsView.cachedViews},key:function(){return this.$route.fullPath}}},Pe=(n("Z+gY"),Object(l.a)(je,function(){var e=this.$createElement,t=this._self._c||e;return t("section",{staticClass:"app-main"},[t("transition",{attrs:{name:"fade-transform",mode:"out-in"}},[t("keep-alive",{attrs:{include:this.cachedViews}},[t("router-view",{key:this.key})],1)],1)],1)},[],!1,null,"f852c4f2",null));Pe.options.__file="AppMain.vue";var ze=Pe.exports,Me=document.body,Be={name:"Layout",components:{Navbar:ce,Sidebar:Ae,AppMain:ze,TagsView:Ve},mixins:[{watch:{$route:function(e){"mobile"===this.device&&this.sidebar.opened&&Wn.dispatch("closeSideBar",{withoutAnimation:!1})}},beforeMount:function(){window.addEventListener("resize",this.resizeHandler)},mounted:function(){var e=this.isMobile(),t=this.isTablet();(e||t)&&(Wn.dispatch("toggleDevice",e?"mobile":"tablet"),Wn.dispatch("closeSideBar",{withoutAnimation:!0}))},methods:{isMobile:function(){return Me.getBoundingClientRect().width-3<480},isTablet:function(){var e=Me.getBoundingClientRect();return e.width-3<801&&e.width-3>480},resizeHandler:function(){if(!document.hidden){var e=this.isMobile(),t=this.isTablet();e||t?(Wn.dispatch("toggleDevice",e?"mobile":"tablet"),Wn.dispatch("closeSideBar",{withoutAnimation:!0})):Wn.dispatch("toggleDevice","desktop")}}}}],computed:{sidebar:function(){return this.$store.state.app.sidebar},device:function(){return this.$store.state.app.device},classObj:function(){return{hideSidebar:!this.sidebar.opened,openSidebar:this.sidebar.opened,withoutAnimation:this.sidebar.withoutAnimation,mobile:"mobile"===this.device}}},methods:{handleClickOutside:function(){this.$store.dispatch("closeSideBar",{withoutAnimation:!1})}}},He=(n("SZWj"),Object(l.a)(Be,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"app-wrapper",class:e.classObj},["mobile"===e.device&&e.sidebar.opened?n("div",{staticClass:"drawer-bg",on:{click:e.handleClickOutside}}):e._e(),e._v(" "),n("sidebar",{staticClass:"sidebar-container"}),e._v(" "),n("div",{staticClass:"main-container"},[n("navbar"),e._v(" "),n("app-main")],1)],1)},[],!1,null,"767d264f",null));He.options.__file="Layout.vue";var Ue=He.exports;r.default.use(ae.a);var Ne=[""]||!1,Fe=Ne.includes("settings"),Ge={path:"/settings",component:Ue,children:[{path:"index",component:function(){return Promise.all([n.e("chunk-7f9e"),n.e("chunk-7e30")]).then(n.bind(null,"YcIK"))},name:"Settings",meta:{title:"Settings",icon:"settings",noCache:!0}}]},Ye=Ne.includes("statuses"),$e={path:"/statuses",component:Ue,children:[{path:"index",component:function(){return Promise.all([n.e("chunk-df62"),n.e("ZhIB"),n.e("chunk-6b68"),n.e("chunk-e458")]).then(n.bind(null,"FtQ1"))},name:"Statuses",meta:{title:"Statuses",icon:"form",noCache:!0}}]},qe=Ne.includes("reports"),Ke={path:"/reports",component:Ue,children:[{path:"index",component:function(){return Promise.all([n.e("chunk-df62"),n.e("ZhIB"),n.e("chunk-970d")]).then(n.bind(null,"cEOe"))},name:"Reports",meta:{title:"Reports",icon:"documentation",noCache:!0}}]},We=Ne.includes("invites"),Ze={path:"/invites",component:Ue,children:[{path:"index",component:function(){return n.e("chunk-0778").then(n.bind(null,"HMof"))},name:"Invites",meta:{title:"Invites",icon:"guide",noCache:!0}}]},Je=Ne.includes("emoji-packs"),Qe={path:"/emoji_packs",component:Ue,children:[{path:"index",component:function(){return n.e("chunk-3384").then(n.bind(null,"26YS"))},name:"Emoji Packs",meta:{title:"Emoji Packs",icon:"eye-open",noCache:!0}}]},Xe=Ne.includes("moderation-log"),et={path:"/moderation_log",component:Ue,children:[{path:"index",component:function(){return Promise.all([n.e("chunk-df62"),n.e("chunk-7637")]).then(n.bind(null,"CmY0"))},name:"Moderation Log",meta:{title:"moderationLog",icon:"list",noCache:!0}}]},tt=[{path:"/redirect",component:Ue,hidden:!0,children:[{path:"/redirect/:path*",component:function(){return n.e("7zzA").then(n.bind(null,"7zzA"))}}]},{path:"/login-pleroma",component:function(){return Promise.all([n.e("oAJy"),n.e("chunk-16d0")]).then(n.bind(null,"iRgq"))},hidden:!0},{path:"/login",component:function(){return Promise.all([n.e("oAJy"),n.e("chunk-0961")]).then(n.bind(null,"ntYl"))},hidden:!0},{path:"/auth-redirect",component:function(){return n.e("JEtC").then(n.bind(null,"JEtC"))},hidden:!0},{path:"/404",component:function(){return n.e("chunk-0558").then(n.bind(null,"/eX4"))},hidden:!0},{path:"/401",component:function(){return n.e("chunk-6e81").then(n.bind(null,"UUO+"))},hidden:!0},{path:"",component:Ue,redirect:"/users/index"}],nt=new ae.a({scrollBehavior:function(){return{y:0}},routes:tt}),at=[{path:"/users",component:Ue,children:[{path:"index",component:function(){return Promise.all([n.e("ZhIB"),n.e("chunk-6b68"),n.e("chunk-d38a")]).then(n.bind(null,"RGjw"))},name:"Users",meta:{title:"users",icon:"peoples",noCache:!0}}]}].concat(Q()(Ye?[]:[$e]),Q()(qe?[]:[Ke]),Q()(We?[]:[Ze]),Q()(Je?[]:[Qe]),Q()(Xe?[]:[et]),Q()(Fe?[]:[Ge]),[{path:"/users/:id",component:Ue,children:[{path:"",name:"UsersShow",component:function(){return Promise.all([n.e("chunk-df62"),n.e("chunk-22d2")]).then(n.bind(null,"4bFr"))}}],hidden:!0},{path:"*",redirect:"/404",hidden:!0}]);var rt={state:{routers:[],addRouters:[]},mutations:{SET_ROUTERS:function(e,t){e.addRouters=t,e.routers=tt.concat(t)}},actions:{GenerateRoutes:function(e,t){var n=e.commit;return new Promise(function(e){var a,r=t.roles;a=r.includes("admin")?at:function e(t,n){var a=[];return t.forEach(function(t){var r=A()({},t);(function(e,t){return!t.meta||!t.meta.roles||e.some(function(e){return t.meta.roles.includes(e)})})(n,r)&&(r.children&&(r.children=e(r.children,n)),a.push(r))}),a}(at,r),n("SET_ROUTERS",a),e()})}}};function st(e,t){return ot.apply(this,arguments)}function ot(){return(ot=g()(f.a.mark(function e(t,n){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(t),url:"/api/pleroma/admin/relay",method:"get",headers:pt(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function it(e,t,n){return ct.apply(this,arguments)}function ct(){return(ct=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/relay",method:"post",headers:pt(a),data:{relay_url:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function ut(e,t,n){return lt.apply(this,arguments)}function lt(){return(lt=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/relay",method:"delete",headers:pt(a),data:{relay_url:"https://".concat(t,"/actor")}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var pt=function(e){return e?{Authorization:"Bearer ".concat(Object(b.b)())}:{}},dt={state:{fetchedRelays:[],loading:!0},mutations:{SET_LOADING:function(e,t){e.loading=t},SET_RELAYS:function(e,t){e.fetchedRelays=t},ADD_RELAY:function(e,t){e.fetchedRelays=[].concat(Q()(e.fetchedRelays),[t])},DELETE_RELAY:function(e,t){e.fetchedRelays=e.fetchedRelays.filter(function(e){return e!==t})}},actions:{FetchRelays:function(){var e=g()(f.a.mark(function e(t){var n,a,r;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.commit,a=t.getters,n("SET_LOADING",!0),e.next=4,st(a.authHost,a.token);case 4:r=e.sent,n("SET_RELAYS",r.data.relays),n("SET_LOADING",!1);case 7:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),AddRelay:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.dispatch,s=t.getters,a("ADD_RELAY",n),e.prev=2,e.next=5,it(n,s.authHost,s.token);case 5:e.next=10;break;case 7:return e.prev=7,e.t0=e.catch(2),e.abrupt("return");case 10:return e.prev=10,r("FetchRelays"),e.finish(10);case 13:case"end":return e.stop()}},e,null,[[2,7,10,13]])}));return function(t,n){return e.apply(this,arguments)}}(),DeleteRelay:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.dispatch,s=t.getters,a("DELETE_RELAY",n),e.prev=2,e.next=5,ut(n,s.authHost,s.token);case 5:e.next=10;break;case 7:return e.prev=7,e.t0=e.catch(2),e.abrupt("return");case 10:return e.prev=10,r("FetchRelays"),e.finish(10);case 13:case"end":return e.stop()}},e,null,[[2,7,10,13]])}));return function(t,n){return e.apply(this,arguments)}}()}};function ht(e,t,n){return mt.apply(this,arguments)}function mt(){return(mt=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/reports",method:"patch",headers:bt(a),data:{reports:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function ft(e,t,n,a,r){return vt.apply(this,arguments)}function vt(){return(vt=g()(f.a.mark(function e(t,n,a,r,s){var o;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return o=t.length>0?"/api/pleroma/admin/reports?state=".concat(t,"&page=").concat(n,"&page_size=").concat(a):"/api/pleroma/admin/reports?page=".concat(n,"&page_size=").concat(a),e.next=3,Object(w.a)({baseURL:Object(y.a)(r),url:o,method:"get",headers:bt(s)});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}function gt(){return(gt=g()(f.a.mark(function e(t,n,a,r){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/reports/".concat(n,"/notes"),method:"post",headers:bt(r),data:{content:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function wt(){return(wt=g()(f.a.mark(function e(t,n,a,r){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/reports/".concat(n,"/notes/").concat(t),method:"delete",headers:bt(r)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var bt=function(e){return e?{Authorization:"Bearer ".concat(Object(b.b)())}:{}},yt={state:{fetchedReports:[],totalReportsCount:0,currentPage:1,pageSize:50,stateFilter:"",loading:!0},mutations:{SET_LAST_REPORT_ID:function(e,t){e.idOfLastReport=t},SET_LOADING:function(e,t){e.loading=t},SET_PAGE:function(e,t){e.currentPage=t},SET_REPORTS:function(e,t){e.fetchedReports=t},SET_REPORTS_COUNT:function(e,t){e.totalReportsCount=t},SET_REPORTS_FILTER:function(e,t){e.stateFilter=t}},actions:{ChangeReportState:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.commit,r=t.getters,s=t.state,ht(n,r.authHost,r.token),o=s.fetchedReports.map(function(e){return n.map(function(e){return e.id}).includes(e.id)?A()({},e,{state:n[0].state}):e}),a("SET_REPORTS",o);case 4:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),ClearFetchedReports:function(e){(0,e.commit)("SET_REPORTS",[])},FetchReports:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,s=t.state,a("SET_LOADING",!0),e.next=4,ft(s.stateFilter,n,s.pageSize,r.authHost,r.token);case 4:o=e.sent,i=o.data,a("SET_REPORTS",i.reports),a("SET_REPORTS_COUNT",i.total),a("SET_PAGE",n),a("SET_LOADING",!1);case 10:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),SetFilter:function(e,t){(0,e.commit)("SET_REPORTS_FILTER",t)},CreateReportNote:function(e,t){var n=e.commit,a=e.getters,r=e.state,s=e.rootState,o=t.content,i=t.reportID;!function(e,t,n,a){gt.apply(this,arguments)}(o,i,a.authHost,a.token);var c={user:{avatar:s.user.avatar,display_name:s.user.name,url:"".concat(s.user.authHost,"/").concat(s.user.name),acct:s.user.name},content:o,created_at:(new Date).getTime()};n("SET_REPORTS",r.fetchedReports.map(function(e){return e.id===i&&(e.notes=[].concat(Q()(e.notes),[c])),e}))},DeleteReportNote:function(e,t){var n=e.commit,a=e.getters,r=e.state,s=t.noteID,o=t.reportID;!function(e,t,n,a){wt.apply(this,arguments)}(s,o,a.authHost,a.token),n("SET_REPORTS",r.fetchedReports.map(function(e){return e.id===o&&(e.notes=e.notes.filter(function(e){return e.id!==s})),e}))}}},xt=n("lSNA"),Tt=n.n(xt),Et=n("QILm"),kt=n.n(Et);function St(e,t){return _t.apply(this,arguments)}function _t(){return(_t=g()(f.a.mark(function e(t,n){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(t),url:"/api/pleroma/admin/config/descriptions",method:"get",headers:Dt(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Ot(e,t){return Lt.apply(this,arguments)}function Lt(){return(Lt=g()(f.a.mark(function e(t,n){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(t),url:"/api/pleroma/admin/config",method:"get",headers:Dt(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function At(e,t,n){return It.apply(this,arguments)}function It(){return(It=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/config",method:"post",headers:Dt(a),data:{configs:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Ct(e,t,n){return Rt.apply(this,arguments)}function Rt(){return(Rt=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/config",method:"post",headers:Dt(a),data:{configs:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var Dt=function(e){return e?{Authorization:"Bearer ".concat(Object(b.b)())}:{}},Vt=n("h74u");function jt(e){var t=function(e,t){if("object"!==he()(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var a=n.call(e,t||"default");if("object"!==he()(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===he()(t)?t:String(t)}var Pt={state:{activeTab:"instance",configDisabled:!0,db:{},description:[],loading:!0,searchData:{},settings:{},updatedSettings:{}},mutations:{CLEAR_UPDATED_SETTINGS:function(e){e.updatedSettings={}},REMOVE_SETTING_FROM_UPDATED:function(e,t){var n=t.group,a=t.key,r=t.subkeys;if(C.a.get(e.updatedSettings,[n,a,r[0]])){var s=e.updatedSettings[n][a],o=(s[r[0]],kt()(s,[r[0]].map(jt)));e.updatedSettings=o}},SET_ACTIVE_TAB:function(e,t){e.activeTab=t},SET_DESCRIPTION:function(e,t){e.description=t},SET_LOADING:function(e,t){e.loading=t},SET_SEARCH:function(e,t){e.searchData=t},SET_SETTINGS:function(e,t){var n=t.reduce(function(e,t){var n=t.group,a=t.key,r=t.value,s=Object(Vt.g)(a,r)?{value:Object(Vt.d)(a,r)}:Object(Vt.e)(r,a);return e[n]=e[n]?A()({},e[n],Tt()({},a,s)):Tt()({},a,s),e},{}),a=t.reduce(function(e,t){var n=t.group,a=t.key,r=t.db;return r&&(e[n]=e[n]?A()({},e[n],Tt()({},a,r)):Tt()({},a,r)),e},{});e.settings=n,e.db=a},TOGGLE_TABS:function(e,t){e.configDisabled=t},UPDATE_SETTINGS:function(e,t){var n=t.group,a=t.key,r=t.input,s=t.value,o=t.type,i=!e.updatedSettings[n]||"Pleroma.Emails.Mailer"===a&&":adapter"===r?Tt()({},a,Tt()({},r,[o,s])):Tt()({},a,A()({},e.updatedSettings[n][a],Tt()({},r,[o,s])));e.updatedSettings[n]=A()({},e.updatedSettings[n],i)},UPDATE_STATE:function(e,t){var n=t.group,a=t.key,r=t.input,s=t.value,o="Pleroma.Emails.Mailer"===a&&":adapter"===r?Tt()({},a,Tt()({},r,s)):Tt()({},a,A()({},e.settings[n][a],Tt()({},r,s)));e.settings[n]=A()({},e.settings[n],o)}},actions:{FetchSettings:function(){var e=g()(f.a.mark(function e(t){var n,a,r,s,o;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.commit,a=t.getters,n("SET_LOADING",!0),e.prev=2,e.next=5,Ot(a.authHost,a.token);case 5:return r=e.sent,e.next=8,St(a.authHost,a.token);case 8:s=e.sent,n("SET_DESCRIPTION",s.data),o=Object(Vt.b)(s.data),n("SET_SEARCH",o),n("SET_SETTINGS",r.data.configs),e.next=21;break;case 15:return e.prev=15,e.t0=e.catch(2),n("TOGGLE_TABS",!0),n("SET_ACTIVE_TAB","relays"),n("SET_LOADING",!1),e.abrupt("return");case 21:n("TOGGLE_TABS",!1),n("SET_LOADING",!1);case 23:case"end":return e.stop()}},e,null,[[2,15]])}));return function(t){return e.apply(this,arguments)}}(),RemoveSetting:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,e.next=3,Ct(n,r.authHost,r.token);case 3:return e.next=5,Ot(r.authHost,r.token);case 5:s=e.sent,o=n[0],i=o.group,c=o.key,u=o.subkeys,a("SET_SETTINGS",s.data.configs),a("TOGGLE_REBOOT",s.data.need_reboot),a("REMOVE_SETTING_FROM_UPDATED",{group:i,key:c,subkeys:u||[]});case 10:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),SetActiveTab:function(e,t){(0,e.commit)("SET_ACTIVE_TAB",t)},SubmitChanges:function(){var e=g()(f.a.mark(function e(t){var n,a,r,s,o,i;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.getters,a=t.commit,r=t.state,s=Object(Vt.a)(r.settings,r.updatedSettings,r.description),o=Object.keys(s).reduce(function(e,t){return[].concat(Q()(e),Q()(Object(Vt.h)(t,s[t],r.settings)))},[]),e.next=5,At(o,n.authHost,n.token);case 5:return e.next=7,Ot(n.authHost,n.token);case 7:i=e.sent,a("SET_SETTINGS",i.data.configs),a("TOGGLE_REBOOT",i.data.need_reboot),a("CLEAR_UPDATED_SETTINGS");case 11:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),UpdateSettings:function(e,t){var n=e.commit,a=t.group,r=t.key,s=t.input,o=t.value,i=t.type;n("UPDATE_SETTINGS",r?{group:a,key:r,input:s,value:o,type:i}:{group:a,key:s,input:"_value",value:o,type:i})},UpdateState:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u,l,p;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(a=t.commit,r=t.getters,s=t.state,o=n.group,i=n.key,c=n.input,u=n.value,"Pleroma.Emails.Mailer"!==i||":adapter"!==c){e.next=8;break}return l=Object.keys(s.settings[o][i]).filter(function(e){return":adapter"!==e}),e.next=6,Ct([{group:o,key:i,delete:!0,subkeys:l}],r.authHost,r.token);case 6:e.next=12;break;case 8:if("Pleroma.Upload"!==i||":uploader"!==c){e.next=12;break}return p="Pleroma.Uploaders.Local"===u?"Pleroma.Uploaders.S3":"Pleroma.Uploaders.Local",e.next=12,Ct([{group:o,key:p,delete:!0}],r.authHost,r.token);case 12:a("UPDATE_STATE",i?{group:o,key:i,input:c,value:u}:{group:o,key:c,input:"value",value:u});case 13:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}()}};function zt(e,t,n,a,r){return Mt.apply(this,arguments)}function Mt(){return(Mt=g()(f.a.mark(function e(t,n,a,r,s){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(r),url:"/api/pleroma/admin/statuses/".concat(t),method:"put",headers:qt(s),data:{sensitive:n,visibility:a}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Bt(e,t,n){return Ht.apply(this,arguments)}function Ht(){return(Ht=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/statuses/".concat(t),method:"delete",headers:qt(a)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Ut(e){return Nt.apply(this,arguments)}function Nt(){return(Nt=g()(f.a.mark(function e(t){var n,a,r,s,o,i;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.godmode,a=t.localOnly,r=t.authHost,s=t.token,o=t.pageSize,i=t.page,e.next=3,Object(w.a)({baseURL:Object(y.a)(r),url:"/api/pleroma/admin/statuses?godmode=".concat(n,"&local_only=").concat(a,"&page=").concat(i,"&page_size=").concat(o),method:"get",headers:qt(s)});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Ft(e,t,n){return Gt.apply(this,arguments)}function Gt(){return(Gt=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:t?"/api/pleroma/admin/stats?instance=".concat(t):"/api/pleroma/admin/stats",method:"get",headers:qt(a)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Yt(e){return $t.apply(this,arguments)}function $t(){return($t=g()(f.a.mark(function e(t){var n,a,r,s,o;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.instance,a=t.authHost,r=t.token,s=t.pageSize,o=t.page,e.next=3,Object(w.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/instances/".concat(n,"/statuses?page=").concat(o,"&page_size=").concat(s),method:"get",headers:qt(r)});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}var qt=function(e){return e?{Authorization:"Bearer ".concat(Object(b.b)())}:{}},Kt={state:{fetchedStatuses:[],loading:!1,statusesByInstance:{selectedInstance:"",showLocal:!1,showPrivate:!1,page:1,pageSize:20,buttonLoading:!1,allLoaded:!1},statusVisibility:{}},mutations:{CHANGE_GODMODE_CHECKBOX_VALUE:function(e,t){e.statusesByInstance.showPrivate=t},CHANGE_LOCAL_CHECKBOX_VALUE:function(e,t){e.statusesByInstance.showLocal=t},CHANGE_PAGE:function(e,t){e.statusesByInstance.page=t},CHANGE_SELECTED_INSTANCE:function(e,t){e.statusesByInstance.selectedInstance=t},SET_STATUSES_BY_INSTANCE:function(e,t){e.fetchedStatuses=t},PUSH_STATUSES:function(e,t){e.fetchedStatuses=[].concat(Q()(e.fetchedStatuses),Q()(t))},SET_ALL_LOADED:function(e,t){e.statusesByInstance.allLoaded=t},SET_BUTTON_LOADING:function(e,t){e.statusesByInstance.buttonLoading=t},SET_LOADING:function(e,t){e.loading=t},SET_STATUS_VISIBILITY:function(e,t){e.statusVisibility=t}},actions:{ChangeStatusScope:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u,l,p;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.dispatch,r=t.getters,s=n.statusId,o=n.isSensitive,i=n.visibility,c=n.reportCurrentPage,u=n.userId,l=n.godmode,p=n.fetchStatusesByInstance,e.next=4,zt(s,o,i,r.authHost,r.token);case 4:0!==c?a("FetchReports",c):u.length>0?a("FetchUserStatuses",{userId:u,godmode:l}):p&&a("FetchStatusesByInstance");case 5:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),ClearState:function(e){var t=e.commit;t("CHANGE_SELECTED_INSTANCE",""),t("SET_STATUSES_BY_INSTANCE",[]),t("CHANGE_LOCAL_CHECKBOX_VALUE",!1),t("CHANGE_GODMODE_CHECKBOX_VALUE",!1),t("SET_ALL_LOADED",!1),t("CHANGE_PAGE",1)},DeleteStatus:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.dispatch,r=t.getters,s=n.statusId,o=n.reportCurrentPage,i=n.userId,c=n.godmode,u=n.fetchStatusesByInstance,e.next=4,Bt(s,r.authHost,r.token);case 4:0!==o?a("FetchReports",o):i.length>0?a("FetchUserStatuses",{userId:i,godmode:c}):u&&a("FetchStatusesByInstance");case 5:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),FetchStatusesCount:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,a("SET_LOADING",!0),e.next=4,Ft(n,r.authHost,r.token);case 4:s=e.sent,o=s.data,a("SET_STATUS_VISIBILITY",o.status_visibility),a("SET_LOADING",!1);case 8:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),FetchStatusesByInstance:function(){var e=g()(f.a.mark(function e(t){var n,a,r,s,o,i;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.commit,a=t.dispatch,r=t.getters,s=t.state,o=t.rootState,n("SET_LOADING",!0),a("FetchStatusesCount",s.statusesByInstance.selectedInstance),""!==s.statusesByInstance.selectedInstance){e.next=7;break}n("SET_STATUSES_BY_INSTANCE",[]),e.next=19;break;case 7:if(s.statusesByInstance.selectedInstance!==o.user.authHost){e.next=13;break}return e.next=10,Ut({godmode:s.statusesByInstance.showPrivate,localOnly:s.statusesByInstance.showLocal,authHost:r.authHost,token:r.token,pageSize:s.statusesByInstance.pageSize,page:s.statusesByInstance.page});case 10:e.t0=e.sent,e.next=16;break;case 13:return e.next=15,Yt({instance:s.statusesByInstance.selectedInstance,authHost:r.authHost,token:r.token,pageSize:s.statusesByInstance.pageSize,page:s.statusesByInstance.page});case 15:e.t0=e.sent;case 16:i=e.t0,n("SET_STATUSES_BY_INSTANCE",i.data),i.data.lengthThis user doesn`t have admin rights. Try another credentials or see the docs to find out how to make this user an admin'),t("SET_NAME",r.username),t("SET_ID",r.id),t("SET_AVATAR",r.avatar),t("SET_INTRODUCTION",""),e(n)}).catch(function(e){a(e)})})},LogOut:function(e){var t=e.commit;t("SET_TOKEN",""),t("SET_ROLES",[]),Object(b.d)(),Object(b.c)()},FedLogOut:function(e){var t=e.commit;return new Promise(function(e){t("SET_TOKEN",""),Object(b.d)(),Object(b.c)(),e()})},LoginByPleromaFE:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.commit,r=t.dispatch,s=n.token,a("SET_TOKEN",s),Object(b.f)(s),a("SET_AUTH_HOST",window.location.host),Object(b.e)(window.location.host),r("GetUserInfo");case 7:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}()}};function rn(e,t,n){return sn.apply(this,arguments)}function sn(){return(sn=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/activate",method:"patch",headers:Un(a),data:{nicknames:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function on(e,t,n,a){return cn.apply(this,arguments)}function cn(){return(cn=g()(f.a.mark(function e(t,n,a,r){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/users/permission_group/".concat(n),method:"post",headers:Un(r),data:{nicknames:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function un(e,t,n,a,r){return ln.apply(this,arguments)}function ln(){return(ln=g()(f.a.mark(function e(t,n,a,r,s){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(r),url:"/api/pleroma/admin/users",method:"post",headers:Un(s),data:{users:[{nickname:t,email:n,password:a}]}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function pn(e,t,n){return dn.apply(this,arguments)}function dn(){return(dn=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/deactivate",method:"patch",headers:Un(a),data:{nicknames:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function hn(e,t,n,a){return mn.apply(this,arguments)}function mn(){return(mn=g()(f.a.mark(function e(t,n,a,r){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/users/permission_group/".concat(n),method:"delete",headers:Un(r),data:{nicknames:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function fn(e,t,n){return vn.apply(this,arguments)}function vn(){return(vn=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users",method:"delete",headers:Un(a),data:{nicknames:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function gn(e,t,n){return wn.apply(this,arguments)}function wn(){return(wn=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/".concat(t),method:"get",headers:Un(a)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function bn(e,t,n){return yn.apply(this,arguments)}function yn(){return(yn=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/".concat(t,"/credentials"),method:"get",headers:Un(a)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function xn(e,t,n,a){return Tn.apply(this,arguments)}function Tn(){return(Tn=g()(f.a.mark(function e(t,n,a,r){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/users/".concat(t,"/credentials"),method:"patch",headers:Un(r),data:n});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function En(e,t,n){return kn.apply(this,arguments)}function kn(){return(kn=g()(f.a.mark(function e(t,n,a){var r,s=arguments;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=s.length>3&&void 0!==s[3]?s[3]:1,e.next=3,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users?page=".concat(r,"&filters=").concat(t),method:"get",headers:Un(a)});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Sn(e,t,n){return _n.apply(this,arguments)}function _n(){return(_n=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/".concat(t,"/password_reset"),method:"get",headers:Un(a)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function On(e,t,n){return Ln.apply(this,arguments)}function Ln(){return(Ln=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/force_password_reset",method:"patch",headers:Un(a),data:{nicknames:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function An(e,t,n,a){return In.apply(this,arguments)}function In(){return(In=g()(f.a.mark(function e(t,n,a,r){var s,o=arguments;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return s=o.length>4&&void 0!==o[4]?o[4]:1,e.next=3,Object(w.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/users?query=".concat(t,"&page=").concat(s,"&filters=").concat(n),method:"get",headers:Un(r)});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Cn(e,t,n,a){return Rn.apply(this,arguments)}function Rn(){return(Rn=g()(f.a.mark(function e(t,n,a,r){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/users/tag",method:"put",headers:Un(r),data:{nicknames:t,tags:n}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Dn(e,t,n,a){return Vn.apply(this,arguments)}function Vn(){return(Vn=g()(f.a.mark(function e(t,n,a,r){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/users/tag",method:"delete",headers:Un(r),data:{nicknames:t,tags:n}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function jn(e,t,n,a){return Pn.apply(this,arguments)}function Pn(){return(Pn=g()(f.a.mark(function e(t,n,a,r){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/".concat(t,"/statuses?godmode=").concat(a),method:"get",headers:Un(r)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function zn(e,t,n){return Mn.apply(this,arguments)}function Mn(){return(Mn=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/confirm_email",method:"patch",headers:Un(a),data:{nicknames:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Bn(e,t,n){return Hn.apply(this,arguments)}function Hn(){return(Hn=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/resend_confirmation_email",method:"patch",headers:Un(a),data:{nicknames:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var Un=function(e){return e?{Authorization:"Bearer ".concat(Object(b.b)())}:{}},Nn={state:{statuses:[],statusesLoading:!0,user:{},userCredentials:{},userProfileLoading:!0},mutations:{SET_STATUSES:function(e,t){e.statuses=t},SET_STATUSES_LOADING:function(e,t){e.statusesLoading=t},SET_USER:function(e,t){e.user=t},SET_USER_PROFILE_LOADING:function(e,t){e.userProfileLoading=t},SET_USER_CREDENTIALS:function(e,t){e.userCredentials=t}},actions:{FetchUserProfile:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.dispatch,s=t.getters,o=n.userId,i=n.godmode,a("SET_USER_PROFILE_LOADING",!0),e.next=5,gn(o,s.authHost,s.token);case 5:c=e.sent,a("SET_USER",c.data),a("SET_USER_PROFILE_LOADING",!1),r("FetchUserStatuses",{userId:o,godmode:i});case 9:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),FetchUserStatuses:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,s=n.userId,o=n.godmode,a("SET_STATUSES_LOADING",!0),e.next=5,jn(s,r.authHost,o,r.token);case 5:i=e.sent,a("SET_STATUSES",i.data),a("SET_STATUSES_LOADING",!1);case 8:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),FetchUserCredentials:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,s=n.nickname,e.next=4,bn(s,r.authHost,r.token);case 4:o=e.sent,a("SET_USER_CREDENTIALS",o.data);case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),UpdateUserCredentials:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.dispatch,r=t.getters,s=n.nickname,o=n.credentials,e.next=4,xn(s,o,r.authHost,r.token);case 4:a("FetchUserCredentials",{nickname:s});case 5:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}()}},Fn={state:{fetchedUsers:[],loading:!0,searchQuery:"",totalUsersCount:0,currentPage:1,filters:{local:!1,external:!1,active:!1,deactivated:!1},passwordResetToken:{token:"",link:""}},mutations:{SET_USERS:function(e,t){e.fetchedUsers=t},SET_LOADING:function(e,t){e.loading=t},SWAP_USERS:function(e,t){var n=t.reduce(function(e,t){return e.filter(function(e){return e.id!==t.id})},e.fetchedUsers);0!==e.fetchedUsers.length&&(e.fetchedUsers=[].concat(Q()(n),Q()(t)).sort(function(e,t){return e.nickname.localeCompare(t.nickname)}))},SET_COUNT:function(e,t){e.totalUsersCount=t},SET_PAGE:function(e,t){e.currentPage=t},SET_PAGE_SIZE:function(e,t){e.pageSize=t},SET_PASSWORD_RESET_TOKEN:function(e,t){var n=t.token,a=t.link;e.passwordResetToken.token=n,e.passwordResetToken.link=a},SET_SEARCH_QUERY:function(e,t){e.searchQuery=t},SET_USERS_FILTERS:function(e,t){e.filters=t},SET_USER_PROFILE:function(e,t){e.userProfile=t}},actions:{ActivateUsers:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.dispatch,r=t.getters,s=n.users,o=n._userId,i=s.map(function(e){return A()({},e,{deactivated:!1})}),c=s.map(function(e){return e.nickname}),a("ApplyChanges",{updatedUsers:i,callApiFn:function(){var e=g()(f.a.mark(function e(){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,rn(c,r.authHost,r.token);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(){return e.apply(this,arguments)}}(),userId:o});case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),ApplyChanges:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.dispatch,s=t.state,o=n.updatedUsers,i=n.callApiFn,c=n.userId,a("SWAP_USERS",o),e.prev=3,e.next=6,i();case 6:e.next=11;break;case 8:return e.prev=8,e.t0=e.catch(3),e.abrupt("return");case 11:return e.prev=11,r("SearchUsers",{query:s.searchQuery,page:s.currentPage}),e.finish(11);case 14:c&&r("FetchUserProfile",{userId:c,godmode:!1}),r("SuccessMessage");case 16:case"end":return e.stop()}},e,null,[[3,8,11,14]])}));return function(t,n){return e.apply(this,arguments)}}(),AddRight:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.dispatch,r=t.getters,s=n.users,o=n.right,i=n._userId,c=s.map(function(e){return e.local?A()({},e,{roles:A()({},e.roles,Tt()({},o,!0))}):e}),u=s.map(function(e){return e.nickname}),a("ApplyChanges",{updatedUsers:c,callApiFn:function(){var e=g()(f.a.mark(function e(){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,on(u,o,r.authHost,r.token);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(){return e.apply(this,arguments)}}(),userId:i});case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),AddTag:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.dispatch,r=t.getters,s=n.users,o=n.tag,i=n._userId,c=s.map(function(e){return A()({},e,{tags:[].concat(Q()(e.tags),[o])})}),u=s.map(function(e){return e.nickname}),a("ApplyChanges",{updatedUsers:c,callApiFn:function(){var e=g()(f.a.mark(function e(){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Cn(u,[o],r.authHost,r.token);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(){return e.apply(this,arguments)}}(),userId:i});case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),ClearFilters:function(){var e=g()(f.a.mark(function e(t){var n,a,r;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:n=t.commit,a=t.dispatch,r=t.state,n("CLEAR_USERS_FILTERS"),a("SearchUsers",{query:r.searchQuery,page:1});case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),CreateNewAccount:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.dispatch,r=t.getters,s=t.state,o=n.nickname,i=n.email,c=n.password,e.prev=2,e.next=5,un(o,i,c,r.authHost,r.token);case 5:e.next=10;break;case 7:return e.prev=7,e.t0=e.catch(2),e.abrupt("return");case 10:return e.prev=10,a("SearchUsers",{query:s.searchQuery,page:s.currentPage}),e.finish(10);case 13:a("SuccessMessage");case 14:case"end":return e.stop()}},e,null,[[2,7,10,13]])}));return function(t,n){return e.apply(this,arguments)}}(),DeactivateUsers:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.dispatch,r=t.getters,s=n.users,o=n._userId,i=s.map(function(e){return A()({},e,{deactivated:!0})}),c=s.map(function(e){return e.nickname}),a("ApplyChanges",{updatedUsers:i,callApiFn:function(){var e=g()(f.a.mark(function e(){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,pn(c,r.authHost,r.token);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(){return e.apply(this,arguments)}}(),userId:o});case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),ConfirmUsersEmail:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.dispatch,r=t.getters,s=n.users,o=n._userId,i=s.map(function(e){return A()({},e,{confirmation_pending:!1})}),c=s.map(function(e){return e.nickname}),a("ApplyChanges",{updatedUsers:i,callApiFn:function(){var e=g()(f.a.mark(function e(){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,zn(c,r.authHost,r.token);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(){return e.apply(this,arguments)}}(),userId:o});case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),ResendConfirmationEmail:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.dispatch,r=t.getters,s=n.map(function(e){return e.nickname}),e.prev=2,e.next=5,Bn(s,r.authHost,r.token);case 5:e.next=10;break;case 7:return e.prev=7,e.t0=e.catch(2),e.abrupt("return");case 10:a("SuccessMessage");case 11:case"end":return e.stop()}},e,null,[[2,7]])}));return function(t,n){return e.apply(this,arguments)}}(),DeleteRight:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.dispatch,r=t.getters,s=n.users,o=n.right,i=n._userId,c=s.map(function(e){return e.local?A()({},e,{roles:A()({},e.roles,Tt()({},o,!1))}):e}),u=s.map(function(e){return e.nickname}),a("ApplyChanges",{updatedUsers:c,callApiFn:function(){var e=g()(f.a.mark(function e(){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,hn(u,o,r.authHost,r.token);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(){return e.apply(this,arguments)}}(),userId:i});case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),DeleteUsers:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u,l,p;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.dispatch,s=t.getters,o=t.state,i=n.users,c=n._userId,u=i.map(function(e){return e.nickname}),e.prev=3,e.next=6,fn(u,s.authHost,s.token);case 6:e.next=11;break;case 8:return e.prev=8,e.t0=e.catch(3),e.abrupt("return");case 11:l=i.map(function(e){return e.id}),p=o.fetchedUsers.filter(function(e){return!l.includes(e.id)}),a("SET_USERS",p),r("FetchUserProfile",{userId:c,godmode:!1}),r("SuccessMessage");case 16:case"end":return e.stop()}},e,null,[[3,8]])}));return function(t,n){return e.apply(this,arguments)}}(),FetchUsers:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.dispatch,s=t.getters,o=t.state,i=n.page,a("SET_LOADING",!0),c=Object.keys(o.filters).filter(function(e){return o.filters[e]}).join(),e.next=6,En(c,s.authHost,s.token,i);case 6:return u=e.sent,e.next=9,r("GetNodeInfo");case 9:Gn(a,i,u.data);case 10:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),GetPasswordResetToken:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,e.next=3,Sn(n,r.authHost,r.token);case 3:s=e.sent,o=s.data,a("SET_PASSWORD_RESET_TOKEN",o);case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),RemovePasswordToken:function(e){(0,e.commit)("SET_PASSWORD_RESET_TOKEN",{link:"",token:""})},RemoveTag:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.dispatch,r=t.getters,s=n.users,o=n.tag,i=n._userId,c=s.map(function(e){return A()({},e,{tags:e.tags.filter(function(e){return e!==o})})}),u=s.map(function(e){return e.nickname}),a("ApplyChanges",{updatedUsers:c,callApiFn:function(){var e=g()(f.a.mark(function e(){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Dn(u,[o],r.authHost,r.token);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(){return e.apply(this,arguments)}}(),userId:i});case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),RequirePasswordReset:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.dispatch,r=t.getters,s=n.map(function(e){return e.nickname}),e.prev=2,e.next=5,On(s,r.authHost,r.token);case 5:e.next=10;break;case 7:return e.prev=7,e.t0=e.catch(2),e.abrupt("return");case 10:a("SuccessMessage");case 11:case"end":return e.stop()}},e,null,[[2,7]])}));return function(t,n){return e.apply(this,arguments)}}(),SearchUsers:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u,l;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(a=t.commit,r=t.dispatch,s=t.state,o=t.getters,i=n.query,c=n.page,0!==i.length){e.next=7;break}a("SET_SEARCH_QUERY",i),r("FetchUsers",{page:c}),e.next=14;break;case 7:return a("SET_LOADING",!0),a("SET_SEARCH_QUERY",i),u=Object.keys(s.filters).filter(function(e){return s.filters[e]}).join(),e.next=12,An(i,u,o.authHost,o.token,c);case 12:l=e.sent,Gn(a,c,l.data);case 14:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),SuccessMessage:function(){i.Message.success({message:W.a.t("users.completed"),duration:5e3})},ToggleUsersFilter:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.commit,r=t.dispatch,s=t.state,o={local:!1,external:!1,active:!1,deactivated:!1},i=A()({},o,n),a("SET_USERS_FILTERS",i),r("SearchUsers",{query:s.searchQuery,page:1});case 5:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}()}},Gn=function(e,t,n){var a=n.users,r=n.count,s=n.page_size;e("SET_USERS",a),e("SET_COUNT",r),e("SET_PAGE",t),e("SET_PAGE_SIZE",s),e("SET_LOADING",!1)},Yn=Fn,$n={sidebar:function(e){return e.app.sidebar},language:function(e){return e.app.language},size:function(e){return e.app.size},device:function(e){return e.app.device},visitedViews:function(e){return e.tagsView.visitedViews},cachedViews:function(e){return e.tagsView.cachedViews},token:function(e){return e.user.token},avatar:function(e){return e.user.avatar},name:function(e){return e.user.name},introduction:function(e){return e.user.introduction},status:function(e){return e.user.status},roles:function(e){return e.user.roles},setting:function(e){return e.user.setting},permission_routers:function(e){return e.permission.routers},addRouters:function(e){return e.permission.addRouters},errorLogs:function(e){return e.errorLog.logs},users:function(e){return e.users.fetchedUsers},authHost:function(e){return e.user.authHost},settings:function(e){return e.settings}},qn=n("mm8V"),Kn={state:{activeCollapseItems:[],localPacks:{},remoteInstance:"",remotePacks:{}},mutations:{SET_ACTIVE_COLLAPSE_ITEMS:function(e,t){e.activeCollapseItems=t},SET_LOCAL_PACKS:function(e,t){e.localPacks=t},SET_REMOTE_INSTANCE:function(e,t){e.remoteInstance=t},SET_REMOTE_PACKS:function(e,t){e.remotePacks=t},UPDATE_LOCAL_PACK_VAL:function(e,t){var n=t.name,a=t.key,s=t.value;r.default.set(e.localPacks[n].pack,a,s)},UPDATE_LOCAL_PACK_PACK:function(e,t){var n=t.name,a=t.pack;e.localPacks[n].pack=a},UPDATE_LOCAL_PACK_FILES:function(e,t){var n=t.name,a=t.files;r.default.set(e.localPacks[n],"files",a)}},actions:{AddNewEmojiFile:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,c,u,l;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,s=n.packName,o=n.file,c=n.shortcode,u=n.filename,e.prev=2,e.next=5,Object(qn.a)(s,o,c,u,r.authHost,r.token);case 5:l=e.sent,e.next=11;break;case 8:return e.prev=8,e.t0=e.catch(2),e.abrupt("return");case 11:Object(i.Message)({message:"".concat(W.a.t("settings.successfullyUpdated")," ").concat(s," ").concat(W.a.t("settings.metadatLowerCase")),type:"success",duration:5e3}),a("UPDATE_LOCAL_PACK_FILES",{name:s,files:l.data});case 13:case"end":return e.stop()}},e,null,[[2,8]])}));return function(t,n){return e.apply(this,arguments)}}(),DeleteEmojiFile:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,c;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,s=n.packName,o=n.shortcode,e.prev=2,e.next=5,Object(qn.d)(s,o,r.authHost,r.token);case 5:c=e.sent,e.next=11;break;case 8:return e.prev=8,e.t0=e.catch(2),e.abrupt("return");case 11:Object(i.Message)({message:"".concat(W.a.t("settings.successfullyUpdated")," ").concat(s," ").concat(W.a.t("settings.metadatLowerCase")),type:"success",duration:5e3}),a("UPDATE_LOCAL_PACK_FILES",{name:s,files:c.data});case 13:case"end":return e.stop()}},e,null,[[2,8]])}));return function(t,n){return e.apply(this,arguments)}}(),CreatePack:function(){var e=g()(f.a.mark(function e(t,n){var a,r;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.getters,r=n.name,e.next=4,Object(qn.c)(a.authHost,a.token,r);case 4:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),DeletePack:function(){var e=g()(f.a.mark(function e(t,n){var a,r;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.getters,r=n.name,e.next=4,Object(qn.e)(a.authHost,a.token,r);case 4:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),DownloadFrom:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.getters,r=n.instanceAddress,s=n.packName,o=n.as,e.next=4,Object(qn.f)(a.authHost,r,s,o,a.token);case 4:"ok"===e.sent.data&&Object(i.Message)({message:"".concat(W.a.t("settings.successfullyDownloaded")," ").concat(s),type:"success",duration:5e3});case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),ImportFromFS:function(){var e=g()(f.a.mark(function e(t){var n,a,r;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.getters,e.next=3,Object(qn.g)(n.authHost,n.token);case 3:200===(a=e.sent).status&&(r=a.data.length>0?"".concat(W.a.t("settings.successfullyImported")," ").concat(a.data):W.a.t("settings.nowNewPacksToImport"),Object(i.Message)({message:r,type:"success",duration:5e3}));case 5:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),ReloadEmoji:function(){var e=g()(f.a.mark(function e(t){var n;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.getters,e.next=3,Object(qn.j)(n.authHost,n.token);case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),SavePackMetadata:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,c;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,s=t.state,o=n.packName,e.next=4,Object(qn.k)(r.authHost,r.token,o,s.localPacks[o].pack);case 4:200===(c=e.sent).status&&(Object(i.Message)({message:"".concat(W.a.t("settings.successfullyUpdated")," ").concat(o," ").concat(W.a.t("settings.metadatLowerCase")),type:"success",duration:5e3}),a("UPDATE_LOCAL_PACK_PACK",{name:o,pack:c.data}));case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),SetActiveCollapseItems:function(e,t){var n=e.commit;e.state;n("SET_ACTIVE_COLLAPSE_ITEMS",t)},SetLocalEmojiPacks:function(){var e=g()(f.a.mark(function e(t){var n,a,r,s;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.commit,a=t.getters,e.next=3,Object(qn.h)(a.authHost);case 3:r=e.sent,s=r.data,n("SET_LOCAL_PACKS",s);case 6:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),SetRemoteEmojiPacks:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,s=n.remoteInstance,e.next=4,Object(qn.i)(r.authHost,r.token,s);case 4:o=e.sent,i=o.data,a("SET_REMOTE_INSTANCE",s),a("SET_REMOTE_PACKS",i);case 8:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),SetRemoteInstance:function(e,t){(0,e.commit)("SET_REMOTE_INSTANCE",t)},UpdateEmojiFile:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,c,u,l,p;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,s=n.packName,o=n.shortcode,c=n.newShortcode,u=n.newFilename,l=n.force,e.prev=2,e.next=5,Object(qn.l)(s,o,c,u,l,r.authHost,r.token);case 5:p=e.sent,e.next=11;break;case 8:return e.prev=8,e.t0=e.catch(2),e.abrupt("return");case 11:Object(i.Message)({message:"".concat(W.a.t("settings.successfullyUpdated")," ").concat(s," ").concat(W.a.t("settings.metadatLowerCase")),type:"success",duration:5e3}),a("UPDATE_LOCAL_PACK_FILES",{name:s,files:p.data});case 13:case"end":return e.stop()}},e,null,[[2,8]])}));return function(t,n){return e.apply(this,arguments)}}(),UpdateLocalPackVal:function(){var e=g()(f.a.mark(function e(t,n){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:(0,t.commit)("UPDATE_LOCAL_PACK_VAL",n);case 2:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}()}};r.default.use(h.a);var Wn=new h.a.Store({modules:{app:_,errorLog:O,moderationLog:B,invites:Z,peers:ne,permission:rt,relays:dt,reports:yt,settings:Pt,status:Kt,tagsView:Jt,user:an,userProfile:Nn,users:Yn,emojiPacks:Kn},getters:$n}),Zn=n("zT9a");r.default.component("svg-icon",Zn.a);!function(e){e.keys().map(e)}(n("Uf/o")),r.default.config.errorHandler=function(e,t,n,a){r.default.nextTick(function(){Wn.dispatch("addErrorLog",{err:e,vm:t,info:n,url:window.location.href}),console.error(e,n)})};var Jn=n("Mj6V"),Qn=n.n(Jn);n("pdi6");Qn.a.configure({showSpinner:!1});var Xn=["/login","/auth-redirect","/login-pleroma"];function ea(e,t){return 1===e?e+t:e+t+"s"}function ta(e){var t=Date.now()/1e3-Number(e);return t<3600?ea(~~(t/60)," minute"):t<86400?ea(~~(t/3600)," hour"):ea(~~(t/86400)," day")}function na(e,t){for(var n=[{value:1e18,symbol:"E"},{value:1e15,symbol:"P"},{value:1e12,symbol:"T"},{value:1e9,symbol:"G"},{value:1e6,symbol:"M"},{value:1e3,symbol:"k"}],a=0;a=n[a].value)return(e/n[a].value+.1).toFixed(t).replace(/\.0+$|(\.[0-9]*[1-9])0+$/,"$1")+n[a].symbol;return e.toString()}function aa(e){return(+e||0).toString().replace(/^-?\d+/g,function(e){return e.replace(/(?=(?!\b)(\d{3})+$)/g,",")})}nt.beforeEach(function(e,t,n){Qn.a.start(),Object(b.b)()?"/login"===e.path?(n({path:"/"}),Qn.a.done()):0===Wn.getters.roles.length?Wn.dispatch("GetUserInfo").then(function(t){var a=t.data.pleroma.is_admin?["admin"]:[];Wn.dispatch("GenerateRoutes",{roles:a}).then(function(){nt.addRoutes(Wn.getters.addRouters),n(A()({},e,{replace:!0}))})}).catch(function(e){Wn.dispatch("FedLogOut").then(function(){Object(i.Message)({dangerouslyUseHTMLString:!0,message:e,type:"error",duration:1e4}),n({path:"/"})})}):function(e,t){return e.indexOf("admin")>=0||!t||e.some(function(e){return t.indexOf(e)>=0})}(Wn.getters.roles,e.meta.roles)?n():n({path:"/401",replace:!0,query:{noGoBack:!0}}):-1!==Xn.indexOf(e.path)?n():(n("/login?redirect=".concat(e.path)),Qn.a.done())}),nt.afterEach(function(){Qn.a.done()}),r.default.use(c.a,{size:o.a.get("size")||"medium",i18n:function(e,t){return W.a.t(e,t)}}),Object.keys(a).forEach(function(e){r.default.filter(e,a[e])}),r.default.config.productionTip=!1,new r.default({el:"#app",router:nt,store:Wn,i18n:W.a,render:function(e){return e(d)}})},X4fA:function(e,t,n){"use strict";n.d(t,"b",function(){return i}),n.d(t,"f",function(){return c}),n.d(t,"d",function(){return u}),n.d(t,"a",function(){return l}),n.d(t,"e",function(){return p}),n.d(t,"c",function(){return d});var a=n("p46w"),r=n.n(a),s="Admin-Token",o="Auth-Host";function i(){return r.a.get(s)}function c(e){return r.a.set(s,e)}function u(){return r.a.remove(s)}function l(){return r.a.get(o)}function p(e){return r.a.set(o,e)}function d(){return r.a.remove(o)}},Xm3t:function(e,t,n){},Yymj:function(e,t,n){"use strict";var a=n("jf83");n.n(a).a},"Z+gY":function(e,t,n){"use strict";var a=n("Kcm3");n.n(a).a},ZZmv:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-excel",use:"icon-excel-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},ZoO1:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-guide",use:"icon-guide-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},cIpu:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-star",use:"icon-star-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},fhHp:function(e,t,n){"use strict";var a=n("lt0h");n.n(a).a},gNoN:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-wechat",use:"icon-wechat-usage",viewBox:"0 0 128 110",content:''});o.a.add(i);t.default=i},h74u:function(e,t,n){"use strict";n.d(t,"c",function(){return g}),n.d(t,"a",function(){return w}),n.d(t,"d",function(){return y}),n.d(t,"e",function(){return x}),n.d(t,"f",function(){return S}),n.d(t,"g",function(){return O}),n.d(t,"h",function(){return L}),n.d(t,"b",function(){return I});var a=n("RIqP"),r=n.n(a),s=n("cDf5"),o=n.n(s),i=n("lSNA"),c=n.n(i),u=n("MVZn"),l=n.n(u),p=n("J4zp"),d=n.n(p),h=n("SA+Z"),m=n.n(h),f=n("LvDl"),v=n.n(f),g=function(e){return"true"===e||"false"!==e&&e},w=function(e,t,n){return Object.keys(t).reduce(function(a,r){return a[r]=Object.keys(t[r]).reduce(function(a,s){if(!k(r,s)){var o=Object.keys(e[r][s]).reduce(function(t,a){var o=n.find(function(e){return e.group===r&&e.key===s}).children.find(function(e){return e.key===a}),i=o?o.type:"";return t[a]=[i,e[r][s][a]],t},{});return a[s]=o,a}return a[s]=t[r][s],a},{}),a},{})},b=function(e,t,n){if("state"===e)return v.a.get(t,n);var a=m()(n),r=a[0],s=a.slice(1),o=t[r];if(0!==s.length&&o){return function e(t,n){var a=m()(n),r=a[0],s=a.slice(1);return 0===n.length?t:e(t[1][r],s)}(o,s)}return o||!1},y=function(e,t){if(":backends"===e){var n=t.findIndex(function(e){return"object"===o()(e)&&e.tuple.includes(":ex_syslogger")});return t.map(function(e,t){return t===n?":ex_syslogger":e})}if(":args"===e){if("string"==typeof t)return[t];var a=t.findIndex(function(e){return"object"===o()(e)&&e.tuple.includes("implode")});return t.map(function(e,t){return t===a?"implode":e})}return t},x=function e(t,n){return t.reduce(function(t,a){return":rate_limit"===n?t[a.tuple[0]]=Array.isArray(a.tuple[1])?a.tuple[1].map(function(e){return e.tuple}):a.tuple[1].tuple:":mascots"===a.tuple[0]?t[a.tuple[0]]=a.tuple[1].reduce(function(e,t){return[].concat(r()(e),[c()({},t.tuple[0],l()({},t.tuple[1],{id:"f".concat((~~(1e8*Math.random())).toString(16))}))])},[]):!Array.isArray(a.tuple[1])||":groups"!==a.tuple[0]&&":replace"!==a.tuple[0]&&":retries"!==a.tuple[0]?":crontab"===a.tuple[0]?t[a.tuple[0]]=a.tuple[1].reduce(function(e,t){return l()({},e,c()({},t.tuple[1],t.tuple[0]))},{}):":match_actor"===a.tuple[0]?t[a.tuple[0]]=Object.keys(a.tuple[1]).reduce(function(e,t){return[].concat(r()(e),[c()({},t,{value:a.tuple[1][t],id:"f".concat((~~(1e8*Math.random())).toString(16))})])},[]):":icons"===a.tuple[0]?t[a.tuple[0]]=a.tuple[1].map(function(e){return Object.keys(e).map(function(t){return{key:t,value:e[t],id:"f".concat((~~(1e8*Math.random())).toString(16))}})},[]):":prune"===a.tuple[0]?t[a.tuple[0]]=":disabled"===a.tuple[1]?[a.tuple[1]]:a.tuple[1].tuple:":proxy_url"===a.tuple[0]?t[a.tuple[0]]=E(a.tuple[1]):":args"===a.tuple[0]?t[a.tuple[0]]=y(a.tuple[0],a.tuple[1]):Array.isArray(a.tuple[1])&&"object"===o()(a.tuple[1][0])&&!Array.isArray(a.tuple[1][0])&&a.tuple[1][0].tuple?t[a.tuple[0]]=e(a.tuple[1],a.tuple[0]):Array.isArray(a.tuple[1])?t[a.tuple[0]]=a.tuple[1]:":ip"===a.tuple[0]?t[a.tuple[0]]=a.tuple[1].tuple.join("."):a.tuple[1]&&"object"===o()(a.tuple[1])?t[a.tuple[0]]=T(a.tuple[1]):t[a.tuple[0]]=a.tuple[1]:t[a.tuple[0]]=a.tuple[1].reduce(function(e,t){return[].concat(r()(e),[c()({},t.tuple[0],{value:t.tuple[1],id:"f".concat((~~(1e8*Math.random())).toString(16))})])},[]),t},{})},T=function(e){return Object.keys(e).reduce(function(t,n){return t[n]=e[n],t},{})},E=function(e){if(e&&!Array.isArray(e)&&"object"===o()(e)&&3===e.tuple.length&&":socks5"===e.tuple[0]){var t=d()(e.tuple,3);return{socks5:!0,host:t[1],port:t[2]}}if("string"==typeof e){var n=e.split(":"),a=d()(n,2);return{socks5:!1,host:a[0],port:a[1]}}return{socks5:!1,host:null,port:null}},k=function(e,t){return!(":auto_linker"===e&&":opts"===t)},S=function e(t,n,a,s,o,i,u){var p=m()(o),d=p[0],h=d.key,f=d.type,v=p.slice(1),g=[a,s].concat(r()(o.reverse().map(function(e){return e.key}).slice(0,-1))),w=_("state",i,g)?l()({},b("state",i[a][s],o.map(function(e){return e.key}).slice(0,-1)),c()({},h,t)):c()({},h,t),y=_("updatedSettings",u,g)?l()({},b("updatedSettings",u[a][s],o.map(function(e){return e.key}).slice(0,-1))[1],c()({},h,[f,n])):c()({},h,[f,n]);return":mime"===a&&":types"===o[0].key&&(w=i[a][o[0].key]?l()({},i[a][o[0].key].value,w):w,y=i[a][o[0].key]?l()({},Object.keys(i[a][o[0].key].value).reduce(function(e,t){return l()({},e,c()({},t,[f,i[a][o[0].key].value[t]]))},{}),y):y),1===v.length?{valueForState:w,valueForUpdatedSettings:y,setting:v[0]}:e(w,y,a,s,v,i,u)},_=function(e,t,n){if("state"===e)return v.a.get(t,n);var a=m()(n),r=a[0],s=a[1],o=a[2],i=a.slice(3),c=v.a.get(t,[r,s,o]);if(0!==i.length&&c){return function e(t,n){if(0===n.length)return!0;var a=m()(n),r=a[0],s=a.slice(1);return!!t[1][r]&&e(t[1][r],s)}(c,i)}return c||!1},O=function(e,t){var n=Array.isArray(t)&&t.length>0&&t.every(function(e){return"object"!==o()(e)});return":meta"===e||":types"===e||":backends"===e||":compiled_template_engines"===e||":compiled_format_encoders"===e||"string"==typeof t||"number"==typeof t||"boolean"==typeof t||null===t||n},L=function(e,t,n){return Object.keys(t).map(function(a){return t[a]._value?{group:e,key:a,value:function(e,t){var n=d()(t,2),a=n[0],r=n[1];if("atom"===a&&r.length>1)return":".concat(r);if(":backends"===e){var s=r.findIndex(function(e){return":ex_syslogger"===e}),o=r.slice();return-1!==s&&(o[s]={tuple:["ExSyslogger",":ex_syslogger"]}),o}return":types"===e?Object.keys(r).reduce(function(e,t){return l()({},e,c()({},t,r[t][1]))},{}):r}(a,t[a]._value)}:{group:e,key:a,value:A(t[a],n[e][a])}})},A=function e(t,n){return Object.keys(t).map(function(a){var r=d()(t[a],2),s=r[0],o=r[1];if("keyword"===s||s.includes("keyword")||s.includes("tuple")&&s.includes("list")||":replace"===a)return{tuple:[a,e(o,n)]};if("atom"===s&&o.length>0)return{tuple:[a,":".concat(o)]};if(s.includes("tuple")&&(s.includes("string")||s.includes("atom")))return"string"==typeof o?{tuple:[a,o]}:{tuple:[a,{tuple:o}]};if("reversed_tuple"===s)return{tuple:[o,a]};if("map"===s){var i=Object.keys(o).reduce(function(e,t){return e[t]=":match_actor"===a?o[t]:o[t][1],e},{}),u=":match_actor"===a?n[a].reduce(function(e,t){return l()({},e,c()({},Object.keys(t)[0],Object.values(t)[0].value))},{}):n[a];return{tuple:[a,l()({},u,i)]}}if(":ip"===a){var p=o.split(".").map(function(e){return parseInt(e,10)});return{tuple:[a,{tuple:p}]}}if(":args"===a){var h=o.findIndex(function(e){return"implode"===e}),m=o.slice();return-1!==h&&(m[h]={tuple:["implode","1"]}),{tuple:[a,m]}}return{tuple:[a,o]}})},I=function(e){return e.reduce(function(e,t){var n=v.a.compact([t.key,t.label,t.description]).map(function(e){return e.toLowerCase()}),a={label:t.label,key:t.key||t.group,groupKey:t.key||t.group,groupLabel:t.label,search:n};if(t.children){var s=t.key||":pleroma"!==t.group?[].concat(r()(e),[a]):e;return[].concat(r()(s),r()(function e(t,n,a){return t.reduce(function(t,s){var o=v.a.compact([s.key,s.label,s.description]).map(function(e){return e.toLowerCase()}),i={label:s.label,key:s.key||s.group,groupKey:a,groupLabel:n,search:o};if(s.children){var c=[].concat(r()(t),[i]);return[].concat(r()(c),r()(e(s.children,n,a)))}return[].concat(r()(t),[i])},[])}(t.children,t.label,t.key||t.group)))}return t.key||":pleroma"!==t.group?[].concat(r()(e),[a]):e},[])}},hkRB:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-size",use:"icon-size-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},iqZD:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-zip",use:"icon-zip-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},j7e1:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-tab",use:"icon-tab-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},jf83:function(e,t,n){},jo2x:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-search",use:"icon-search-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},k80C:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-tree",use:"icon-tree-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},kPu2:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-documentation",use:"icon-documentation-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},lt0h:function(e,t,n){},"m7++":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-drag",use:"icon-drag-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},mDMp:function(e,t,n){"use strict";var a=n("Tfa4");n.n(a).a},mSHS:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-fullscreen",use:"icon-fullscreen-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},mSNy:function(e,t,n){"use strict";var a=n("MVZn"),r=n.n(a),s=n("Kw5r"),o=n("qSUR"),i=n("p46w"),c=n.n(i),u=n("stYL"),l=n.n(u),p=n("8NkQ"),d=n.n(p),h=n("PtZe"),m=n.n(h);s.default.use(o.a);var f={en:r()({},{route:{dashboard:"Dashboard",introduction:"Introduction",documentation:"Documentation",guide:"Guide",permission:"Permission",pagePermission:"Page Permission",directivePermission:"Directive Permission",icons:"Icons",components:"Components",componentIndex:"Introduction",markdown:"Markdown",jsonEditor:"JSON Editor",dndList:"Dnd List",splitPane:"SplitPane",avatarUpload:"Avatar Upload",dropzone:"Dropzone",sticky:"Sticky",countTo:"CountTo",componentMixin:"Mixin",backToTop:"BackToTop",dragDialog:"Drag Dialog",dragSelect:"Drag Select",dragKanban:"Drag Kanban",charts:"Charts",keyboardChart:"Keyboard Chart",lineChart:"Line Chart",mixChart:"Mix Chart",example:"Example",nested:"Nested Routes",menu1:"Menu 1","menu1-1":"Menu 1-1","menu1-2":"Menu 1-2","menu1-2-1":"Menu 1-2-1","menu1-2-2":"Menu 1-2-2","menu1-3":"Menu 1-3",menu2:"Menu 2",Table:"Table",dynamicTable:"Dynamic Table",dragTable:"Drag Table",inlineEditTable:"Inline Edit",complexTable:"Complex Table",treeTable:"Tree Table",customTreeTable:"Custom TreeTable",tab:"Tab",form:"Form",createArticle:"Create Article",editArticle:"Edit Article",articleList:"Article List",errorPages:"Error Pages",page401:"401",page404:"404",errorLog:"Error Log",excel:"Excel",exportExcel:"Export Excel",selectExcel:"Export Selected",uploadExcel:"Upload Excel",zip:"Zip",pdf:"PDF",exportZip:"Export Zip",theme:"Theme",clipboardDemo:"Clipboard",i18n:"I18n",externalLink:"External Link",users:"Users",reports:"Reports",settings:"Settings",moderationLog:"Moderation Log","emoji-packs":"Emoji packs"},navbar:{logOut:"Log Out",dashboard:"Dashboard",github:"Github",theme:"Theme",size:"Global Size"},login:{title:"Login Form",logIn:"Log in",logInViaPleromaFE:"Log in via PleromaFE",username:"username@host",password:"password",omitHostname:"omit hostname if Pleroma is located on this domain",errorMessage:"Username must contain username and host, e.g. john@pleroma.social",any:"any",thirdparty:"Or connect with",pleromaFELoginFailed:"Failed to login via PleromaFE, please login with username/password",pleromaFELoginSucceed:"Logged in via PleromaFE"},documentation:{documentation:"Documentation",github:"Github Repository"},permission:{roles:"Your roles",switchRoles:"Switch roles",tips:"In some cases it is not suitable to use v-permission, such as element Tab component or el-table-column and other asynchronous rendering dom cases which can only be achieved by manually setting the v-if."},guide:{description:"The guide page is useful for some people who entered the project for the first time. You can briefly introduce the features of the project. Demo is based on ",button:"Show Guide"},components:{documentation:"Documentation",dropzoneTips:"Because my business has special needs, and has to upload images to qiniu, so instead of a third party, I chose encapsulate it by myself. It is very simple, you can see the detail code in @/components/element-ui/Dropzone.",stickyTips:"when the page is scrolled to the preset position will be sticky on the top.",backToTopTips1:"When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner",backToTopTips2:"You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally",imageUploadTips:"Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version."},table:{dynamicTips1:"Fixed header, sorted by header order",dynamicTips2:"Not fixed header, sorted by click order",dragTips1:"The default order",dragTips2:"The after dragging order",title:"Title",importance:"Imp",type:"Type",remark:"Remark",search:"Search",add:"Add",export:"Export",reviewer:"reviewer",id:"ID",date:"Date",author:"Author",readings:"Readings",status:"Status",actions:"Actions",edit:"Edit",publish:"Publish",draft:"Draft",delete:"Delete",cancel:"Cancel",confirm:"Confirm"},errorLog:{tips:"Please click the bug icon in the upper right corner",description:"Now the management system are basically the form of the spa, it enhances the user experience, but it also increases the possibility of page problems, a small negligence may lead to the entire page deadlock. Fortunately Vue provides a way to catch handling exceptions, where you can handle errors or report exceptions.",documentation:"Document introduction"},excel:{export:"Export",selectedExport:"Export Selected Items",placeholder:"Please enter the file name(default excel-list)"},zip:{export:"Export",placeholder:"Please enter the file name(default file)"},pdf:{tips:"Here we use window.print() to implement the feature of downloading pdf."},theme:{change:"Change Theme",documentation:"Theme documentation",tips:"Tips: It is different from the theme-pick on the navbar is two different skinning methods, each with different application scenarios. Refer to the documentation for details."},tagsView:{refresh:"Refresh",close:"Close",closeOthers:"Close Others",closeAll:"Close All"},users:{users:"Users",localUsersOnly:"Local users only",search:"Search",id:"ID",name:"Name",status:"Status",local:"local",external:"external",deactivated:"deactivated",active:"active",unconfirmed:"unconfirmed",actions:"Actions",activate:"Activate",deactivate:"Deactivate",admin:"admin",moderator:"moderator",moderation:"Moderation",revokeAdmin:"Revoke Admin",grantAdmin:"Grant Admin",revokeModerator:"Revoke Moderator",grantModerator:"Grant Moderator",activateAccount:"Activate Account",activateAccounts:"Activate Accounts",deactivateAccount:"Deactivate Account",deactivateAccounts:"Deactivate Accounts",deleteAccount:"Delete Account",deleteAccounts:"Delete Accounts",forceNsfw:"Force posts to be NSFW",stripMedia:"Force posts to not have media",forceUnlisted:"Force posts to be unlisted",sandbox:"Force posts to be followers-only",disableRemoteSubscription:"Disallow following user from remote instances",disableRemoteSubscriptionForMultiple:"Disallow following users from remote instances",disableAnySubscription:"Disallow following user at all",disableAnySubscriptionForMultiple:"Disallow following users at all",requirePasswordReset:"Require password reset on next login",selectUsers:"Select users to apply actions to multiple users",moderateUser:"Moderate user",moderateUsers:"Moderate multiple users",createAccount:"Create new account",apply:"apply",remove:"remove",grantRightConfirmation:"Are you sure you want to grant {right} rights to all selected users?",revokeRightConfirmation:"Are you sure you want to revoke {right} rights from all selected users?",activateMultipleUsersConfirmation:"Are you sure you want to activate accounts of all selected users?",deactivateMultipleUsersConfirmation:"Are you sure you want to deactivate accounts of all selected users?",deleteMultipleUsersConfirmation:"Are you sure you want to delete accounts of all selected users?",addTagForMultipleUsersConfirmation:"Are you sure you want to apply tag to all selected users?",removeTagFromMultipleUsersConfirmation:"Are you sure you want to remove tag from all selected users?",requirePasswordResetConfirmation:"Are you sure you want to require password reset for all selected users?",confirmAccountsConfirmation:"Are you sure you want to confirm emails for all selected users?",resendEmailConfirmation:"Are you sure you want to resend confirmation email for all selected users?",mailerMustBeEnabled:"To require user's password reset you must enable mailer.",ok:"Okay",completed:"Completed",cancel:"Cancel",canceled:"Canceled",username:"Username",email:"E-mail",password:"Password",create:"Create",submitFormError:"There are invalid values in the form. Please fix them before continuing.",emptyEmailError:"Please input the e-mail",invalidEmailError:"Please input valid e-mail",emptyPasswordError:"Please input the password",emptyNicknameError:"Please input the username",invalidNicknameError:'Username can include "a-z", "A-Z" and "0-9" characters',getPasswordResetToken:"Get password reset token",passwordResetTokenCreated:"Password reset token was created",accountCreated:"New account was created!",unconfirmedEmail:"User didn't confirm the email",confirmAccount:"Confirm account",confirmAccounts:"Confirm accounts",resendConfirmation:"Resend confirmation email"},statuses:{statuses:"Statuses",instanceFilter:"Instance filter",loadMore:"Load more",noInstances:"No other instances found",onlyLocalStatuses:"Show only local statuses",showPrivateStatuses:"Show private statuses",direct:"Direct",private:"Private",public:"Public",unlisted:"Unlisted"},userProfile:{tags:"Tags",moderator:"Moderator",admin:"Admin",local:"local",external:"external",localUppercase:"Local",nickname:"Nickname",recentStatuses:"Recent Statuses",roles:"Roles",activeUppercase:"Active",active:"active",deactivated:"deactivated",noStatuses:"No statuses to show",securitySettings:{email:"Email",password:"Password",securitySettings:"Security settings",passwordChangeWarning1:"Setting a new password will cause the user to be signed out from any client they have used before.",passwordChangeWarning2:"When the user signs in with this password, they will be asked to set a new one.",passwordLengthNotice:"Make sure it's at least {minLength} characters long.",inputNewEmail:"Input new email",inputNewPassword:"Input new password",passwordUpdated:"The password has been updated",emailUpdated:"The email has been updated",success:"Success",submit:"Submit",close:"Close"}},usersFilter:{inputPlaceholder:"Select filter",byUserType:"By user type",local:"Local",external:"External",byStatus:"By status",active:"Active",deactivated:"Deactivated"},reports:{reports:"Reports",report:"Report",reply:"Reply",from:"From",showNotes:"Show notes",newNote:"New note",submit:"Submit",confirmMsg:"Are you sure you want to delete this note?",delete:"Delete",cancel:"Cancel",deleteCompleted:"Delete comleted",deleteCanceled:"Delete canceled",noNotes:"No notes to display",changeState:"Change report's state",changeAllReports:"Change all reports",changeScope:"Change scope",moderateUser:"Moderate user",resolve:"Resolve",reopen:"Reopen",close:"Close",resolveAll:"Resolve all",reopenAll:"Reopen all",closeAll:"Close all",addSensitive:"Add Sensitive flag",removeSensitive:"Remove Sensitive flag",public:"Make status public",private:"Make status private",unlisted:"Make status unlisted",sensitive:"Sensitive",deleteStatus:"Delete status",reportOn:"Report on",reportsOn:"Reports on",id:"ID",account:"Account",actor:"Actor",actors:"Actors",content:"Content",reportedStatus:"Reported status",statusDeleted:"This status has been deleted",leaveNote:"Leave a note",postNote:"Send",deleteNote:"Delete",notFound:"account not found"},reportsFilter:{inputPlaceholder:"Select filter",open:"Open",closed:"Closed",resolved:"Resolved"},moderationLog:{moderationLog:"Moderation Log"},settings:{settings:"Settings",instance:"Instance",upload:"Upload",mailer:"Mailer",logger:"Logger",activityPub:"ActivityPub",auth:"Authentication",autoLinker:"Auto Linker",captcha:"Captcha",frontend:"Frontend",http:"HTTP",mrf:"MRF",mediaProxy:"Media Proxy",metadata:"Metadata",gopher:"Gopher",jobQueue:"Job queue",webPush:"Web push encryption",esshd:"BBS / SSH access",rateLimiters:"Rate limiters",other:"Other",relays:"Relays",follow:"Follow",followRelay:"Follow new relay",instanceUrl:"Instance URL",success:"Settings changed successfully!",description:"Description",removeFromDB:"Remove setting from the DB",successfullyDownloaded:"Successfully downloaded",successfullyImported:"Successfully imported",nowNewPacksToImport:"No new packs to import",successfullyUpdated:"Successfully updated",metadatLowerCase:"metadata",files:"files",successfullyRemoved:"Setting removed successfully!",seeDocs:"See Documentation",assets:"Assets",emoji:"Emoji",markup:"Markup settings",corsPlug:"CORS plug config",instanceReboot:"Reboot Instance",restartApp:"You must restart the instance to apply settings",restartSuccess:"Instance rebooted successfully!",removeSettingConfirmation:"Are you sure you want to remove this setting's value from the database?"},invites:{inviteTokens:"Invite tokens",createInviteToken:"Generate invite token",pickDate:"Pick a date",maxUse:"Max use",expiresAt:"Expires at",tokenCreated:"Invite token was created",token:"Token",inviteLink:"Invite link",uses:"Uses",used:"Used",cancel:"Cancel",create:"Create",revoke:"Revoke",id:"ID",actions:"Actions",active:"Active",inviteUserViaEmail:"Invite user via email",sendRegistration:"Send registration invite via email",email:"Email",name:"Name",emptyEmailError:"Please input the e-mail",invalidEmailError:"Please input valid e-mail",emailSent:"Invite was sent",submitFormError:"There are invalid values in the form. Please fix them before continuing.",inviteViaEmailAlert:"To send invite via email make sure to enable `invites_enabled` and disable `registrations_open`"},emoji:{emojiPacks:"Emoji packs",reloaded:"Emoji reloaded successfully!",refreshed:"Emoji refreshed successfully!",importEmojiTooltip:"Importing from the filesystem will scan the directories and import those without pack.json but with emoji.txt or without neither",reloadEmoji:"Reload emoji",importPacks:"Import packs from the server filesystem",localPacks:"Local packs",refreshLocalPacks:"Refresh local packs",createLocalPack:"Create a new local pack",remotePacks:"Remote packs",remoteInstanceAddress:"Remote instance address",refreshRemote:"Refresh remote packs",sharePack:"Share pack",required:"required",homepage:"Homepage",description:"Description",packs:"Packs",license:"License",shortcode:"Shortcode",fallbackSrc:"Fallback source",fallbackSrcSha:"Fallback source SHA",saveMetadata:"Save metadata",deletePack:"Delete pack",downloadPack:"Download pack",downloadPackArchive:"Download pack archive",addNewEmoji:"Add new emoji to the pack",manageEmoji:"Manage existing emoji",thisWillDownload:"This will download the",downloadToCurrentInstance:"pack to the current instance under the name",canBeChanged:"can be changed below",willBeUsable:"It will then be usable and shareable from the current instance",downloadAsOptional:"Download as (optional)",downloadSharedPack:"Download shared pack to current instance",downloadSharedPackMobile:"Download pack to instance",optional:"optional",uploadFile:"Upload a file",url:"URL",clickToUpload:"Click to upload",upload:"Upload",customFilename:"Custom filename",customFilenameDesc:"Custom file name (optional)",file:"File",localPack:"Local pack",leaveEmptyShortcode:"leave empty to use the same shortcode",leaveEmptyFilename:"leave empty to use the same filename",update:"Update",remove:"Remove",selectLocalPack:"Select the local pack to copy to",specifyShortcode:"Specify a custom shortcode",specifyFilename:"Specify a custom filename",copy:"Copy",copyToLocalPack:"Copy to local pack"}},l.a),zh:r()({},{route:{dashboard:"首页",introduction:"简述",documentation:"文档",guide:"引导页",permission:"权限测试页",pagePermission:"页面权限",directivePermission:"指令权限",icons:"图标",components:"组件",componentIndex:"介绍",markdown:"Markdown",jsonEditor:"JSON编辑器",dndList:"列表拖拽",splitPane:"Splitpane",avatarUpload:"头像上传",dropzone:"Dropzone",sticky:"Sticky",countTo:"CountTo",componentMixin:"小组件",backToTop:"返回顶部",dragDialog:"拖拽 Dialog",dragSelect:"拖拽 Select",dragKanban:"可拖拽看板",charts:"图表",keyboardChart:"键盘图表",lineChart:"折线图",mixChart:"混合图表",example:"综合实例",nested:"路由嵌套",menu1:"菜单1","menu1-1":"菜单1-1","menu1-2":"菜单1-2","menu1-2-1":"菜单1-2-1","menu1-2-2":"菜单1-2-2","menu1-3":"菜单1-3",menu2:"菜单2",Table:"Table",dynamicTable:"动态Table",dragTable:"拖拽Table",inlineEditTable:"Table内编辑",complexTable:"综合Table",treeTable:"树形表格",customTreeTable:"自定义树表",tab:"Tab",form:"表单",createArticle:"创建文章",editArticle:"编辑文章",articleList:"文章列表",errorPages:"错误页面",page401:"401",page404:"404",errorLog:"错误日志",excel:"Excel",exportExcel:"Export Excel",selectExcel:"Export Selected",uploadExcel:"Upload Excel",zip:"Zip",pdf:"PDF",exportZip:"Export Zip",theme:"换肤",clipboardDemo:"Clipboard",i18n:"国际化",externalLink:"外链"},navbar:{logOut:"退出登录",dashboard:"首页",github:"项目地址",theme:"换肤",size:"布局大小"},login:{title:"系统登录",logIn:"登录",username:"账号",password:"密码",any:"随便填",thirdparty:"第三方登录",thirdpartyTips:"本地不能模拟,请结合自己业务进行模拟!!!"},documentation:{documentation:"文档",github:"Github 地址"},permission:{roles:"你的权限",switchRoles:"切换权限",tips:"在某些情况下,不适合使用 v-permission。例如:Element-UI 的 Tab 组件或 el-table-column 以及其它动态渲染 dom 的场景。你只能通过手动设置 v-if 来实现。"},guide:{description:"引导页对于一些第一次进入项目的人很有用,你可以简单介绍下项目的功能。本 Demo 是基于",button:"打开引导"},components:{documentation:"文档",dropzoneTips:"由于我司业务有特殊需求,而且要传七牛 所以没用第三方,选择了自己封装。代码非常的简单,具体代码你可以在这里看到 @/components/element-ui/Dropzone",stickyTips:"当页面滚动到预设的位置会吸附在顶部",backToTopTips1:"页面滚动到指定位置会在右下角出现返回顶部按钮",backToTopTips2:"可自定义按钮的样式、show/hide、出现的高度、返回的位置 如需文字提示,可在外部使用Element的el-tooltip元素",imageUploadTips:"由于我在使用时它只有vue@1版本,而且和mockjs不兼容,所以自己改造了一下,如果大家要使用的话,优先还是使用官方版本。"},table:{dynamicTips1:"固定表头, 按照表头顺序排序",dynamicTips2:"不固定表头, 按照点击顺序排序",dragTips1:"默认顺序",dragTips2:"拖拽后顺序",title:"标题",importance:"重要性",type:"类型",remark:"点评",search:"搜索",add:"添加",export:"导出",reviewer:"审核人",id:"序号",date:"时间",author:"作者",readings:"阅读数",status:"状态",actions:"操作",edit:"编辑",publish:"发布",draft:"草稿",delete:"删除",cancel:"取 消",confirm:"确 定"},errorLog:{tips:"请点击右上角bug小图标",description:"现在的管理后台基本都是spa的形式了,它增强了用户体验,但同时也会增加页面出问题的可能性,可能一个小小的疏忽就导致整个页面的死锁。好在 Vue 官网提供了一个方法来捕获处理异常,你可以在其中进行错误处理或者异常上报。",documentation:"文档介绍"},excel:{export:"导出",selectedExport:"导出已选择项",placeholder:"请输入文件名(默认excel-list)"},zip:{export:"导出",placeholder:"请输入文件名(默认file)"},pdf:{tips:"这里使用 window.print() 来实现下载pdf的功能"},theme:{change:"换肤",documentation:"换肤文档",tips:"Tips: 它区别于 navbar 上的 theme-pick, 是两种不同的换肤方法,各自有不同的应用场景,具体请参考文档。"},tagsView:{refresh:"刷新",close:"关闭",closeOthers:"关闭其它",closeAll:"关闭所有"}},d.a),es:r()({},{route:{dashboard:"Panel de control",introduction:"Introducción",documentation:"Documentación",guide:"Guía",permission:"Permisos",pagePermission:"Permisos de la página",directivePermission:"Permisos de la directiva",icons:"Iconos",components:"Componentes",componentIndex:"Introducción",markdown:"Markdown",jsonEditor:"Editor JSON",dndList:"Lista Dnd",splitPane:"Panel dividido",avatarUpload:"Subir avatar",dropzone:"Subir ficheros",sticky:"Sticky",countTo:"CountTo",componentMixin:"Mixin",backToTop:"Ir arriba",dragDialog:"Drag Dialog",dragSelect:"Drag Select",dragKanban:"Drag Kanban",charts:"Gráficos",keyboardChart:"Keyboard Chart",lineChart:"Gráfico de líneas",mixChart:"Mix Chart",example:"Ejemplo",nested:"Rutas anidadass",menu1:"Menu 1","menu1-1":"Menu 1-1","menu1-2":"Menu 1-2","menu1-2-1":"Menu 1-2-1","menu1-2-2":"Menu 1-2-2","menu1-3":"Menu 1-3",menu2:"Menu 2",Table:"Tabla",dynamicTable:"Tabla dinámica",dragTable:"Arrastrar tabla",inlineEditTable:"Editor",complexTable:"Complex Table",treeTable:"Tree Table",customTreeTable:"Custom TreeTable",tab:"Pestaña",form:"Formulario",createArticle:"Crear artículo",editArticle:"Editar artículo",articleList:"Listado de artículos",errorPages:"Páginas de error",page401:"401",page404:"404",errorLog:"Registro de errores",excel:"Excel",exportExcel:"Exportar a Excel",selectExcel:"Export seleccionado",uploadExcel:"Subir Excel",zip:"Zip",pdf:"PDF",exportZip:"Exportar a Zip",theme:"Tema",clipboardDemo:"Clipboard",i18n:"I18n",externalLink:"Enlace externo"},navbar:{logOut:"Salir",dashboard:"Panel de control",github:"Github",theme:"Tema",size:"Tamaño global"},login:{title:"Formulario de acceso",logIn:"Acceso",username:"Usuario",password:"Contraseña",any:"nada",thirdparty:"Conectar con",thirdpartyTips:"No se puede simular en local, así que combine su propia simulación de negocios. ! !"},documentation:{documentation:"Documentación",github:"Repositorio Github"},permission:{roles:"Tus permisos",switchRoles:"Cambiar permisos",tips:"In some cases it is not suitable to use v-permission, such as element Tab component or el-table-column and other asynchronous rendering dom cases which can only be achieved by manually setting the v-if."},guide:{description:"The guide page is useful for some people who entered the project for the first time. You can briefly introduce the features of the project. Demo is based on ",button:"Ver guía"},components:{documentation:"Documentación",dropzoneTips:"Because my business has special needs, and has to upload images to qiniu, so instead of a third party, I chose encapsulate it by myself. It is very simple, you can see the detail code in @/components/element-ui/Dropzone.",stickyTips:"when the page is scrolled to the preset position will be sticky on the top.",backToTopTips1:"When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner",backToTopTips2:"You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally",imageUploadTips:"Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version."},table:{dynamicTips1:"Fixed header, sorted by header order",dynamicTips2:"Not fixed header, sorted by click order",dragTips1:"Orden por defecto",dragTips2:"The after dragging order",title:"Título",importance:"Importancia",type:"Tipo",remark:"Remark",search:"Buscar",add:"Añadir",export:"Exportar",reviewer:"reviewer",id:"ID",date:"Fecha",author:"Autor",readings:"Lector",status:"Estado",actions:"Acciones",edit:"Editar",publish:"Publicar",draft:"Draft",delete:"Eliminar",cancel:"Cancelar",confirm:"Confirmar"},errorLog:{tips:"Please click the bug icon in the upper right corner",description:"Now the management system are basically the form of the spa, it enhances the user experience, but it also increases the possibility of page problems, a small negligence may lead to the entire page deadlock. Fortunately Vue provides a way to catch handling exceptions, where you can handle errors or report exceptions.",documentation:"Documento de introducción"},excel:{export:"Exportar",selectedExport:"Exportar seleccionados",placeholder:"Por favor escribe un nombre de fichero"},zip:{export:"Exportar",placeholder:"Por favor escribe un nombre de fichero"},pdf:{tips:"Here we use window.print() to implement the feature of downloading pdf."},theme:{change:"Cambiar tema",documentation:"Documentación del tema",tips:"Tips: It is different from the theme-pick on the navbar is two different skinning methods, each with different application scenarios. Refer to the documentation for details."},tagsView:{refresh:"Actualizar",close:"Cerrar",closeOthers:"Cerrar otros",closeAll:"Cerrar todos"}},m.a),oc:r()({},{route:{dashboard:"Tablèu de bòrd",introduction:"Introduccion",documentation:"Documentacion",guide:"Guida",permission:"Autorizacions",pagePermission:"Pagina d’autorizacion",directivePermission:"Politica d’autorizacion",icons:"Icònas",components:"Compausants",componentIndex:"Introduccion",markdown:"Markdown",jsonEditor:"JSON Editor",dndList:"Dnd List",splitPane:"SplitPane",avatarUpload:"Mandadís d’avatar",dropzone:"Dropzone",sticky:"Sticky",countTo:"CountTo",componentMixin:"Mixin",backToTop:"BackToTop",dragDialog:"Drag Dialog",dragSelect:"Drag Select",dragKanban:"Drag Kanban",charts:"Charts",keyboardChart:"Keyboard Chart",lineChart:"Line Chart",mixChart:"Mix Chart",example:"Exemple",nested:"Rotas imbricadas",menu1:"Menú 1","menu1-1":"Menu 1-1","menu1-2":"Menu 1-2","menu1-2-1":"Menu 1-2-1","menu1-2-2":"Menu 1-2-2","menu1-3":"Menu 1-3",menu2:"Menú 2",Table:"Tablèu",dynamicTable:"Tablèu dinamic",dragTable:"Drag Table",inlineEditTable:"Inline Edit",complexTable:"Tablèu complèx",treeTable:"Arborescéncia",customTreeTable:"Arborescéncia personalizada",tab:"Onglet",form:"Formulari",createArticle:"Crear un article",editArticle:"Modificar l’article",articleList:"Lista d’articles",errorPages:"Paginas d’error",page401:"401",page404:"404",errorLog:"Jornal d’error",excel:"Excel",exportExcel:"Exportacion Excel",selectExcel:"Exportar los seleccionats",uploadExcel:"Importacion Excel",zip:"Zip",pdf:"PDF",exportZip:"Exportacion Zip",theme:"Tèma",clipboardDemo:"Clipboard",i18n:"I18n",externalLink:"Ligams extèrnes",users:"Utilizaires"},navbar:{logOut:"Desconnexion",dashboard:"Tablèu de bòrd",github:"Github",theme:"Tèma",size:"Talha totala"},login:{title:"Formulari de connexion",logIn:"Se connectar",username:"Nom d’’utilizaire",password:"Senhal",any:"qual que siá",thirdparty:"O se connectar amb",thirdpartyTips:"Pòt pas èsser simulat en local, doncas montatz vòstra pròpria simulacion ! ! !"},documentation:{documentation:"Documentacion",github:"Repertòri Github"},permission:{roles:"Vòstres ròtles",switchRoles:"Cambiar de ròtle",tips:"Dins qualques cases es pas de bon far d’utilizar v-permission, coma element d’onglet compausant, el-table-column o d’autres renduts dom asincròns que pòdon pas que foncionar amb un parametratge manual de v-if."},guide:{description:"La pagina de guida es utila pel monde que dintran dins lo projècte pel primièr còp. Podètz presentar en un mot las foncionalitats del projèctes. La demo es fondada sus ",button:"Mostrar la guida"},components:{documentation:"Documentacion",dropzoneTips:"Because my business has special needs, and has to upload images to qiniu, so instead of a third party, I chose encapsulate it by myself. It is very simple, you can see the detail code in @/components/element-ui/Dropzone.",stickyTips:"when the page is scrolled to the preset position will be sticky on the top.",backToTopTips1:"When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner",backToTopTips2:"You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally",imageUploadTips:"Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version."},table:{dynamicTips1:"Bandièra fixa, triada per òrdre de bandièra",dynamicTips2:"Bandièra pas fixa, triada per òrdre de clic",dragTips1:"L’’òrdre per defaut",dragTips2:"L’’òrdre aprèp lisar-depausar",title:"Títol",importance:"Imp",type:"Tipe",remark:"Remarca",search:"Recercar",add:"Ajustar",export:"Exportar",reviewer:"examinator",id:"ID",date:"Data",author:"Autor",readings:"Lecturas",status:"Estatuts",actions:"Accions",edit:"Modificar",publish:"Publicar",draft:"Ensag",delete:"Suprimir",cancel:"Anullar",confirm:"Confirmar"},errorLog:{tips:"Mercés de clicar l’’icòna del babau amont a man drecha",description:"Ara que lo sistèma de gestion es coma un spa, melhora l’experiéncia dels utilizaire mas aumenta tanben lo risc de problèmas sus la pagina, una pichona negligéncia pòt menar a un blocatge complèt de la pagina. Urosament Vue fornís de manièras per gerir las excepcions, trobar las errors o senhalar las excepcions.",documentation:"Presentacion del document"},excel:{export:"Exportar",selectedExport:"Exportar los elements seleccionats",placeholder:"Mercés de picar lo nom de fichièr (per defaut excel-list)"},zip:{export:"Exportar",placeholder:"Mercés de picar lo nom de fichièr (per defaut file)"},pdf:{tips:"Aquí utilizam window.print() per prepausar lo telecargament de pdf."},theme:{change:"Cambiar lo tèma",documentation:"Documentacion dels tèmas",tips:"Astúcia : es diferent del theme-pick de la barra de navigacion, i a dos metòdes de personalizacion, caduna amb un biais de far diferent. Referiscam a la documentacion per mai de detalhs."},tagsView:{refresh:"Actualizar",close:"Tampar",closeOthers:"Tampar los autres",closeAll:"Los tampar totes"}})},v=new o.a({locale:c.a.get("language")||"en",messages:f});t.a=v},mm8V:function(e,t,n){"use strict";n.d(t,"a",function(){return l}),n.d(t,"b",function(){return d}),n.d(t,"c",function(){return h}),n.d(t,"d",function(){return f}),n.d(t,"e",function(){return g}),n.d(t,"f",function(){return b}),n.d(t,"g",function(){return x}),n.d(t,"h",function(){return E}),n.d(t,"i",function(){return S}),n.d(t,"j",function(){return O}),n.d(t,"k",function(){return A}),n.d(t,"l",function(){return C});var a=n("o0o1"),r=n.n(a),s=n("yXPU"),o=n.n(s),i=n("t3Un"),c=n("X4fA"),u=n("9i3r");function l(e,t,n,a,r,s){return p.apply(this,arguments)}function p(){return(p=o()(r.a.mark(function e(t,n,a,s,o,c){var l;return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return l=new FormData,""!==s.trim()&&l.set("filename",s),""!==a.trim()&&l.set("shortcode",a),l.set("file",n),e.next=6,Object(i.a)({baseURL:Object(u.a)(o),url:"/api/pleroma/emoji/packs/".concat(t,"/files"),method:"post",headers:D(c),data:l});case 6:return e.abrupt("return",e.sent);case 7:case"end":return e.stop()}},e)}))).apply(this,arguments)}function d(e,t,n){return"".concat(Object(u.a)(e),"/emoji/").concat(t,"/").concat(n)}function h(e,t,n){return m.apply(this,arguments)}function m(){return(m=o()(r.a.mark(function e(t,n,a){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(t),url:"/api/pleroma/emoji/packs/".concat(a),method:"post",headers:D(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function f(e,t,n,a){return v.apply(this,arguments)}function v(){return(v=o()(r.a.mark(function e(t,n,a,s){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(a),url:"/api/pleroma/emoji/packs/".concat(t,"/files"),method:"delete",headers:D(s),data:{shortcode:n}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function g(e,t,n){return w.apply(this,arguments)}function w(){return(w=o()(r.a.mark(function e(t,n,a){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(t),url:"/api/pleroma/emoji/packs/".concat(a),method:"delete",headers:D(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function b(e,t,n,a,r){return y.apply(this,arguments)}function y(){return(y=o()(r.a.mark(function e(t,n,a,s,o){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return""===s.trim()&&(s=null),e.next=3,Object(i.a)({baseURL:Object(u.a)(t),url:"/api/pleroma/emoji/packs/download",method:"post",headers:D(o),data:{url:Object(u.a)(n),name:a,as:s},timeout:0});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}function x(e,t){return T.apply(this,arguments)}function T(){return(T=o()(r.a.mark(function e(t,n){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(t),url:"/api/pleroma/emoji/packs/import",method:"get",headers:D(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function E(e){return k.apply(this,arguments)}function k(){return(k=o()(r.a.mark(function e(t){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(t),url:"/api/pleroma/emoji/packs/",method:"get"});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function S(e,t,n){return _.apply(this,arguments)}function _(){return(_=o()(r.a.mark(function e(t,n,a){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(t),url:"/api/pleroma/emoji/packs/remote?url=".concat(Object(u.a)(a)),method:"get",headers:D(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function O(e,t){return L.apply(this,arguments)}function L(){return(L=o()(r.a.mark(function e(t,n){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(t),url:"/api/pleroma/admin/reload_emoji",method:"post",headers:D(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function A(e,t,n,a){return I.apply(this,arguments)}function I(){return(I=o()(r.a.mark(function e(t,n,a,s){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(t),url:"/api/pleroma/emoji/packs/".concat(a),method:"patch",headers:D(n),data:{metadata:s},timeout:0});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function C(e,t,n,a,r,s,o){return R.apply(this,arguments)}function R(){return(R=o()(r.a.mark(function e(t,n,a,s,o,c,l){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(c),url:"/api/pleroma/emoji/packs/".concat(t,"/files"),method:"patch",headers:D(l),data:{shortcode:n,new_shortcode:a,new_filename:s,force:o}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var D=function(e){return e?{Authorization:"Bearer ".concat(Object(c.b)())}:{}}},nZHn:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-icon",use:"icon-icon-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},oUrx:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-404",use:"icon-404-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},qkZ8:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-edit",use:"icon-edit-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},qwAt:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-lock",use:"icon-lock-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},s7Vf:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-user",use:"icon-user-usage",viewBox:"0 0 130 130",content:''});o.a.add(i);t.default=i},"sg+I":function(e,t,n){e.exports={menuText:"#bfcbd9",menuActiveText:"#409EFF",subMenuActiveText:"#f4f4f5",menuBg:"#304156",menuHover:"#263445",subMenuBg:"#1f2d3d",subMenuHover:"#001528",sideBarWidth:"180px"}},t3Un:function(e,t,n){"use strict";var a=n("vDqi"),r=n.n(a),s=n("XJYT"),o=r.a.create({timeout:6e4});o.interceptors.response.use(function(e){return e},function(e){var t;if(console.log("Error ".concat(e)),e.response){var n=e.response.data.error?e.response.data.error:e.response.data;t=e.response.headers["content-type"].includes("application/json")?"".concat(e.message," - ").concat(n):"".concat(e.message)}else t=e;return Object(s.Message)({message:t,type:"error",duration:5e3}),Promise.reject(e)}),t.a=o},vDVG:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-clipboard",use:"icon-clipboard-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},y7eQ:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-email",use:"icon-email-usage",viewBox:"0 0 128 96",content:''});o.a.add(i);t.default=i},yCkv:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-chart",use:"icon-chart-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},zT9a:function(e,t,n){"use strict";var a={name:"SvgIcon",props:{iconClass:{type:String,required:!0},className:{type:String,default:""}},computed:{iconName:function(){return"#icon-".concat(this.iconClass)},svgClass:function(){return this.className?"svg-icon "+this.className:"svg-icon"}}},r=(n("mDMp"),n("KHd+")),s=Object(r.a)(a,function(){var e=this.$createElement,t=this._self._c||e;return t("svg",this._g({class:this.svgClass,attrs:{"aria-hidden":"true"}},this.$listeners),[t("use",{attrs:{"xlink:href":this.iconName}})])},[],!1,null,"17178ffc",null);s.options.__file="index.vue";t.a=s.exports},zx4i:function(e,t,n){e.exports={menuText:"#bfcbd9",menuActiveText:"#409EFF",subMenuActiveText:"#f4f4f5",menuBg:"#304156",menuHover:"#263445",subMenuBg:"#1f2d3d",subMenuHover:"#001528",sideBarWidth:"180px"}}},[["Vtdi","runtime","chunk-elementUI","chunk-libs"]]]); -//# sourceMappingURL=app.0146039c.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/app.0146039c.js.map b/priv/static/adminfe/static/js/app.0146039c.js.map deleted file mode 100644 index 178715dc6..000000000 --- a/priv/static/adminfe/static/js/app.0146039c.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./src/icons/svg/pdf.svg","webpack:///./src/icons/svg/people.svg","webpack:///./src/icons/svg/eye-open.svg","webpack:///./src/components/element-ui/Hamburger/index.vue?8f92","webpack:///./src/icons/svg/exit-fullscreen.svg","webpack:///./src/icons/svg/nested.svg","webpack:///./src/icons/svg/theme.svg","webpack:///./src/icons/svg/form.svg","webpack:///./src/icons/svg/dashboard.svg","webpack:///./src/api/utils.js","webpack:///./src/icons/svg/shopping.svg","webpack:///./src/icons/svg/bug.svg","webpack:///./src/icons/svg/international.svg","webpack:///./src/icons/svg/qq.svg","webpack:///./src/icons/svg/link.svg","webpack:///./src/components/element-ui/ScrollPane/index.vue?8407","webpack:///./src/views/layout/components/TagsView.vue?6ab0","webpack:///./src/icons/svg/guide 2.svg","webpack:///./src/icons/svg/language.svg","webpack:///./src/icons/svg/password.svg","webpack:///./src/icons/svg/peoples.svg","webpack:///./src/icons/svg/money.svg","webpack:///./src/icons/svg/example.svg","webpack:///./src/icons/svg/list.svg","webpack:///./src/icons/svg/settings.svg","webpack:///./src/icons/svg/message.svg","webpack:///./src/icons/svg/table.svg","webpack:///./src/views/layout/Layout.vue?d1f6","webpack:///./src/icons/svg/eye.svg","webpack:///./src/icons/svg sync nonrecursive \\.svg$","webpack:///./src/icons/svg/component.svg","webpack:///./src/App.vue?9edb","webpack:///src/App.vue","webpack:///./src/App.vue","webpack:///./src/App.vue?1e50","webpack:///./src/api/app.js","webpack:///./src/store/modules/app.js","webpack:///./src/store/modules/errorLog.js","webpack:///./src/api/moderationLog.js","webpack:///./src/store/modules/moderationLog.js","webpack:///./src/api/invites.js","webpack:///./src/store/modules/invites.js","webpack:///./src/api/peers.js","webpack:///./src/store/modules/peers.js","webpack:///./src/components/element-ui/Hamburger/index.vue?1751","webpack:///src/components/element-ui/Hamburger/index.vue","webpack:///./src/components/element-ui/Hamburger/index.vue","webpack:///./src/components/element-ui/Hamburger/index.vue?78c1","webpack:///./src/views/layout/components/Navbar.vue?138b","webpack:///src/views/layout/components/Navbar.vue","webpack:///./src/views/layout/components/Navbar.vue","webpack:///./src/views/layout/components/Navbar.vue?b672","webpack:///./src/utils/i18n.js","webpack:///./src/utils/index.js","webpack:///src/views/layout/components/Sidebar/Item.vue","webpack:///./src/views/layout/components/Sidebar/Item.vue?425b","webpack:///./src/views/layout/components/Sidebar/Item.vue","webpack:///./src/views/layout/components/Sidebar/Link.vue?a99f","webpack:///src/views/layout/components/Sidebar/Link.vue","webpack:///./src/views/layout/components/Sidebar/Link.vue","webpack:///./src/views/layout/components/Sidebar/Link.vue?d88c","webpack:///./src/views/layout/components/Sidebar/SidebarItem.vue?f0b2","webpack:///src/views/layout/components/Sidebar/SidebarItem.vue","webpack:///./src/views/layout/components/Sidebar/FixiOSBug.js","webpack:///./src/views/layout/components/Sidebar/SidebarItem.vue","webpack:///./src/views/layout/components/Sidebar/SidebarItem.vue?4829","webpack:///./src/views/layout/components/Sidebar/index.vue?3b50","webpack:///src/views/layout/components/Sidebar/index.vue","webpack:///./src/views/layout/components/Sidebar/index.vue","webpack:///./src/views/layout/components/Sidebar/index.vue?29d8","webpack:///./src/components/element-ui/ScrollPane/index.vue?a39e","webpack:///src/components/element-ui/ScrollPane/index.vue","webpack:///./src/components/element-ui/ScrollPane/index.vue","webpack:///./src/components/element-ui/ScrollPane/index.vue?7344","webpack:///./src/views/layout/components/TagsView.vue?f016","webpack:///src/views/layout/components/TagsView.vue","webpack:///./src/views/layout/components/TagsView.vue","webpack:///./src/views/layout/components/TagsView.vue?d863","webpack:///./src/views/layout/components/AppMain.vue?4460","webpack:///src/views/layout/components/AppMain.vue","webpack:///./src/views/layout/components/AppMain.vue","webpack:///./src/views/layout/components/AppMain.vue?367b","webpack:///./src/views/layout/mixin/ResizeHandler.js","webpack:///./src/views/layout/Layout.vue?de6d","webpack:///src/views/layout/Layout.vue","webpack:///./src/views/layout/Layout.vue","webpack:///./src/views/layout/Layout.vue?9516","webpack:///./src/router/index.js","webpack:///./src/store/modules/permission.js","webpack:///./src/api/relays.js","webpack:///./src/store/modules/relays.js","webpack:///./src/api/reports.js","webpack:///./src/store/modules/reports.js","webpack:///./src/api/settings.js","webpack:///./src/store/modules/settings.js","webpack:///./src/api/status.js","webpack:///./src/store/modules/status.js","webpack:///./src/store/modules/tagsView.js","webpack:///./src/api/login.js","webpack:///./src/api/nodeInfo.js","webpack:///./src/store/modules/user.js","webpack:///./src/api/users.js","webpack:///./src/store/modules/userProfile.js","webpack:///./src/store/modules/users.js","webpack:///./src/store/getters.js","webpack:///./src/store/modules/emojiPacks.js","webpack:///./src/store/index.js","webpack:///./src/icons/index.js","webpack:///./src/errorLog.js","webpack:///./src/permission.js","webpack:///./src/filters/index.js","webpack:///./src/main.js","webpack:///./src/utils/auth.js","webpack:///./src/views/layout/components/TagsView.vue?da45","webpack:///./src/views/layout/components/AppMain.vue?2c3a","webpack:///./src/icons/svg/excel.svg","webpack:///./src/icons/svg/guide.svg","webpack:///./src/icons/svg/star.svg","webpack:///./src/views/layout/components/Navbar.vue?a40e","webpack:///./src/icons/svg/wechat.svg","webpack:///./src/store/modules/normalizers.js","webpack:///./src/icons/svg/size.svg","webpack:///./src/icons/svg/zip.svg","webpack:///./src/icons/svg/tab.svg","webpack:///./src/icons/svg/search.svg","webpack:///./src/icons/svg/tree.svg","webpack:///./src/icons/svg/documentation.svg","webpack:///./src/icons/svg/drag.svg","webpack:///./src/components/element-ui/SvgIcon/index.vue?928c","webpack:///./src/icons/svg/fullscreen.svg","webpack:///./src/lang/index.js","webpack:///./src/lang/en.js","webpack:///./src/lang/zh.js","webpack:///./src/lang/es.js","webpack:///./src/lang/oc.js","webpack:///./src/api/emojiPacks.js","webpack:///./src/icons/svg/icon.svg","webpack:///./src/icons/svg/404.svg","webpack:///./src/icons/svg/edit.svg","webpack:///./src/icons/svg/lock.svg","webpack:///./src/icons/svg/user.svg","webpack:///./src/styles/index.scss","webpack:///./src/utils/request.js","webpack:///./src/icons/svg/clipboard.svg","webpack:///./src/icons/svg/email.svg","webpack:///./src/icons/svg/chart.svg","webpack:///./src/components/element-ui/SvgIcon/index.vue?8767","webpack:///./src/components/element-ui/SvgIcon/index.vue?c01f","webpack:///src/components/element-ui/SvgIcon/index.vue","webpack:///./src/components/element-ui/SvgIcon/index.vue","webpack:///./src/styles/variables.scss"],"names":["__webpack_require__","r","__webpack_exports__","svg_baker_runtime_browser_symbol__WEBPACK_IMPORTED_MODULE_0__","svg_baker_runtime_browser_symbol__WEBPACK_IMPORTED_MODULE_0___default","n","svg_sprite_loader_runtime_browser_sprite_build__WEBPACK_IMPORTED_MODULE_1__","svg_sprite_loader_runtime_browser_sprite_build__WEBPACK_IMPORTED_MODULE_1___default","symbol","a","id","use","viewBox","content","add","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_7_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_7_2_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_69c6c5c4_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","d","baseName","instanceName","arguments","length","undefined","match","startsWith","isLocalhost","concat","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_591d6778_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_TagsView_vue_vue_type_style_index_0_id_e1cdb714_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Layout_vue_vue_type_style_index_0_id_767d264f_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","map","./404.svg","./bug.svg","./chart.svg","./clipboard.svg","./component.svg","./dashboard.svg","./documentation.svg","./drag.svg","./edit.svg","./email.svg","./example.svg","./excel.svg","./exit-fullscreen.svg","./eye-open.svg","./eye.svg","./form.svg","./fullscreen.svg","./guide 2.svg","./guide.svg","./icon.svg","./international.svg","./language.svg","./link.svg","./list.svg","./lock.svg","./message.svg","./money.svg","./nested.svg","./password.svg","./pdf.svg","./people.svg","./peoples.svg","./qq.svg","./search.svg","./settings.svg","./shopping.svg","./size.svg","./star.svg","./tab.svg","./table.svg","./theme.svg","./tree.svg","./user.svg","./wechat.svg","./zip.svg","webpackContext","req","webpackContextResolve","o","e","Error","code","keys","Object","resolve","module","exports","src_Appvue_type_script_lang_js_","name","component","componentNormalizer","_h","this","$createElement","_c","_self","attrs","options","__file","App","needReboot","_x","_x2","_needReboot","apply","_callee","authHost","token","regenerator_default","wrap","_context","prev","next","request","baseURL","url","method","headers","authHeaders","abrupt","sent","stop","restartApp","_x3","_x4","_restartApp","_callee2","_context2","Authorization","getToken","app","state","sidebar","opened","Cookies","get","withoutAnimation","device","language","size","invitesEnabled","mutations","TOGGLE_SIDEBAR","set","CLOSE_SIDEBAR","TOGGLE_DEVICE","SET_INVITES_ENABLED","SET_LANGUAGE","TOGGLE_REBOOT","SET_SIZE","actions","closeSideBar","_ref","_ref2","commit","NeedReboot","_NeedReboot","asyncToGenerator_default","mark","_ref3","getters","response","data","RestartApplication","_RestartApplication","_ref4","SetInvitesEnabled","_ref5","setLanguage","_ref6","setSize","_ref7","toggleDevice","_ref8","toggleSideBar","_ref9","errorLog","logs","ADD_ERROR_LOG","log","push","addErrorLog","fetchLog","_fetchLog","params","page","normalizedParams","_args","URLSearchParams","_","omitBy","objectSpread_default","isUndefined","toString","fetchAdmins","_x5","_fetchAdmins","fetchModerators","_x6","_x7","_fetchModerators","_callee3","_context3","moderationLog","fetchedLog","logItemsCount","admins","moderators","logLoading","adminsLoading","SET_LOG_LOADING","status","SET_ADMINS_LOADING","SET_MODERATION_LOG","SET_MODERATION_LOG_COUNT","count","SET_ADMINS","SET_MODERATORS","FetchModerationLog","_FetchModerationLog","opts","items","total","FetchAdmins","_FetchAdmins","adminsResponse","moderatorsResponse","generateInviteToken","_generateInviteToken","max_use","expires_at","inviteViaEmail","_x8","_inviteViaEmail","email","listInviteTokens","_x9","_x10","_listInviteTokens","revokeToken","_x11","_x12","_x13","_revokeToken","_callee4","tokenToRevoke","_context4","invites","inviteTokens","loading","newToken","SET_LOADING","SET_NEW_TOKEN","SET_TOKENS","tokens","FetchInviteTokens","_FetchInviteTokens","reverse","GenerateInviteToken","_GenerateInviteToken","dispatch","maxUse","expiresAt","t0","InviteUserViaEmail","_InviteUserViaEmail","Message","message","i18n","t","type","duration","RemoveNewToken","RevokeToken","_RevokeToken","fetchPeers","_fetchPeers","peers","fetchedPeers","SET_PEERS","FetchPeers","_FetchPeers","toConsumableArray_default","sort","element_ui_Hamburgervue_type_script_lang_js_","props","isActive","Boolean","default","toggleClick","Function","Hamburger_component","staticStyle","padding","on","click","staticClass","class","is-active","xmlns","width","height","components_Navbarvue_type_script_lang_js_","components","Hamburger","computed","vuex_esm","methods","$store","logout","then","location","reload","Navbar_component","_vm","toggle-click","_v","trigger","src","avatar","slot","display","_s","$t","Navbar","generateTitle","title","$te","parseTime","time","cFormat","date","format","typeof_default","test","parseInt","Date","formatObj","y","getFullYear","m","getMonth","getDate","h","getHours","i","getMinutes","s","getSeconds","getDay","replace","result","key","value","formatTime","option","diff","now","Math","ceil","isExternal","path","Sidebar_Itemvue_type_script_lang_js_","functional","icon","String","render","context","_context$props","vnodes","icon-class","Item_component","Item_render","Item_staticRenderFns","Item","Sidebar_Linkvue_type_script_lang_js_","to","required","linkProps","is","href","target","rel","Link_component","_b","_t","Sidebar_SidebarItemvue_type_script_lang_js_","AppLink","mixins","mounted","fixBugIniOS","_this","$subMenu","$refs","subMenu","handleMouseleave","item","isNest","basePath","onlyOneChild","hasOneShowingChild","children","parent","showingChildren","filter","hidden","noShowingChildren","resolvePath","routePath","isExternalLink","path_browserify_default","SidebarItem_component","alwaysShow","ref","index","meta","_e","_l","child","is-nest","base-path","submenu-title-noDropdown","SidebarItem","components_Sidebarvue_type_script_lang_js_","variables","variables_default","isCollapse","Sidebar_component","wrap-class","default-active","$route","collapse","background-color","menuBg","text-color","menuText","active-text-color","menuActiveText","mode","route","Sidebar","element_ui_ScrollPanevue_type_script_lang_js_","left","handleScroll","eventDelta","wheelDelta","deltaY","$scrollWrapper","scrollContainer","scrollLeft","moveToTarget","currentTag","$containerWidth","$el","offsetWidth","tagList","$parent","tag","firstTag","lastTag","scrollWidth","currentIndex","findIndex","prevTag","nextTag","afterNextTagOffsetLeft","offsetLeft","beforePrevTagOffsetLeft","ScrollPane_component","vertical","nativeOn","wheel","$event","preventDefault","components_TagsViewvue_type_script_lang_js_","ScrollPane","visible","top","selectedTag","affixTags","visitedViews","tagsView","routers","permission","watch","addTags","moveToCurrentTag","document","body","addEventListener","closeMenu","removeEventListener","initTags","filterAffixTags","routes","tags","forEach","affix","tempTags","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","Symbol","iterator","done","err","return","_this2","$nextTick","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","scrollPane","fullPath","refreshSelectedTag","view","_this3","$router","closeSelectedTag","_this4","toLastView","closeOthersTags","_this5","closeAllTags","_this6","some","latestView","slice","openMenu","getBoundingClientRect","maxLeft","clientX","clientY","TagsView_component","refInFor","query","mouseup","button","contextmenu","stopPropagation","directives","rawName","expression","style","TagsView","components_AppMainvue_type_script_lang_js_","cachedViews","AppMain_component","include","AppMain","layout_Layoutvue_type_script_lang_js_","store","beforeMount","window","resizeHandler","isMobile","isTablet","rect","classObj","hideSidebar","openSidebar","mobile","handleClickOutside","Layout_component","Layout","Vue","Router","disabledFeatures","process","settingsDisabled","includes","settings","Promise","all","bind","noCache","statusesDisabled","statuses","reportsDisabled","reports","invitesDisabled","emojiPacksDisabled","emojiPacks","moderationLogDisabled","constantRouterMap","redirect","router","scrollBehavior","asyncRouterMap","addRouters","SET_ROUTERS","GenerateRoutes","accessedRouters","roles","filterAsyncRouter","res","tmp","role","hasPermission","fetchRelays","_fetchRelays","addRelay","_addRelay","relay","relay_url","deleteRelay","_deleteRelay","relays","fetchedRelays","SET_RELAYS","ADD_RELAY","DELETE_RELAY","fetchedRelay","FetchRelays","_FetchRelays","AddRelay","_AddRelay","finish","DeleteRelay","_DeleteRelay","changeState","_changeState","fetchReports","_fetchReports","pageSize","reportID","noteID","fetchedReports","totalReportsCount","currentPage","stateFilter","SET_LAST_REPORT_ID","idOfLastReport","SET_PAGE","SET_REPORTS","SET_REPORTS_COUNT","SET_REPORTS_FILTER","ChangeReportState","_ChangeReportState","reportsData","updatedReports","report","ClearFetchedReports","FetchReports","_FetchReports","SetFilter","CreateReportNote","rootState","_createNote","createNote","optimisticNote","user","display_name","acct","created_at","getTime","notes","DeleteReportNote","_ref10","_x14","_x15","_x16","_deleteNote","deleteNote","note","fetchDescription","_fetchDescription","fetchSettings","_fetchSettings","updateSettings","_updateSettings","configs","removeSettings","_removeSettings","activeTab","configDisabled","db","description","searchData","updatedSettings","CLEAR_UPDATED_SETTINGS","REMOVE_SETTING_FROM_UPDATED","group","subkeys","_state$updatedSetting","objectWithoutProperties_default","_toPropertyKey","SET_ACTIVE_TAB","tab","SET_DESCRIPTION","SET_SEARCH","searchObject","SET_SETTINGS","newSettings","reduce","acc","parsedValue","valueHasTuples","parseNonTuples","parseTuples","defineProperty_default","newDbSettings","TOGGLE_TABS","UPDATE_SETTINGS","input","updatedSetting","UPDATE_STATE","updatedState","FetchSettings","_FetchSettings","_ref12","formSearchObject","RemoveSetting","_RemoveSetting","_ref13","_configs$","need_reboot","SetActiveTab","_ref14","SubmitChanges","_SubmitChanges","_ref15","updatedData","checkPartialUpdate","wrapUpdatedSettings","UpdateSettings","_ref16","_ref17","UpdateState","_UpdateState","_ref18","_ref19","deletedKey","el","delete","changeStatusScope","_changeStatusScope","sensitive","visibility","deleteStatus","_deleteStatus","fetchStatuses","_fetchStatuses","godmode","localOnly","fetchStatusesCount","_fetchStatusesCount","instance","fetchStatusesByInstance","_fetchStatusesByInstance","_callee5","_context5","fetchedStatuses","statusesByInstance","selectedInstance","showLocal","showPrivate","buttonLoading","allLoaded","statusVisibility","CHANGE_GODMODE_CHECKBOX_VALUE","CHANGE_LOCAL_CHECKBOX_VALUE","CHANGE_PAGE","CHANGE_SELECTED_INSTANCE","SET_STATUSES_BY_INSTANCE","PUSH_STATUSES","SET_ALL_LOADED","SET_BUTTON_LOADING","SET_STATUS_VISIBILITY","ChangeStatusScope","_ChangeStatusScope","statusId","isSensitive","reportCurrentPage","userId","ClearState","DeleteStatus","_DeleteStatus","FetchStatusesCount","_FetchStatusesCount","status_visibility","FetchStatusesByInstance","_FetchStatusesByInstance","FetchStatusesPageByInstance","_FetchStatusesPageByInstance","HandleGodmodeCheckboxChange","HandleLocalCheckboxChange","_ref11","HandleFilterChange","HandlePageChange","ADD_VISITED_VIEW","v","assign","ADD_CACHED_VIEW","DEL_VISITED_VIEW","entries","_step$value","slicedToArray_default","splice","DEL_CACHED_VIEW","indexOf","DEL_OTHERS_VISITED_VIEWS","DEL_OTHERS_CACHED_VIEWS","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","DEL_ALL_VISITED_VIEWS","DEL_ALL_CACHED_VIEWS","UPDATE_VISITED_VIEW","_iteratorNormalCompletion4","_didIteratorError4","_iteratorError4","_step4","_iterator4","addView","addVisitedView","addCachedView","delView","delVisitedView","delCachedView","delOthersViews","delOthersVisitedViews","delOthersCachedViews","delAllViews","delAllVisitedViews","delAllCachedViews","updateVisitedView","loginByUsername","_loginByUsername","username","password","appsRequest","client_name","random","redirect_uris","origin","scopes","client_id","client_secret","grant_type","getUserInfo","getNodeInfo","_getNodeInfo","getAuthHost","introduction","setting","articlePlatform","nodeInfo","SET_CODE","SET_TOKEN","SET_INTRODUCTION","SET_SETTING","SET_STATUS","SET_NAME","SET_AVATAR","SET_ROLES","SET_ID","SET_AUTH_HOST","SET_NODE_INFO","LoginByUsername","reject","access_token","setToken","setAuthHost","catch","error","GetNodeInfo","_GetNodeInfo","metadata","GetUserInfo","pleroma","is_admin","LogOut","removeToken","removeAuthHost","FedLogOut","LoginByPleromaFE","_LoginByPleromaFE","host","activateUsers","_activateUsers","nicknames","addRight","_addRight","right","createNewAccount","_createNewAccount","nickname","users","deactivateUsers","_deactivateUsers","deleteRight","_x17","_x18","_x19","_deleteRight","deleteUsers","_x20","_x21","_x22","_deleteUsers","_callee6","_context6","fetchUser","_x23","_x24","_x25","_fetchUser","_callee7","_context7","fetchUserCredentials","_x26","_x27","_x28","_fetchUserCredentials","_callee8","_context8","updateUserCredentials","_x29","_x30","_x31","_x32","_updateUserCredentials","_callee9","credentials","_context9","fetchUsers","_x33","_x34","_x35","_fetchUsers","_callee10","filters","_args10","_context10","getPasswordResetToken","_x36","_x37","_x38","_getPasswordResetToken","_callee11","_context11","forcePasswordReset","_x39","_x40","_x41","_forcePasswordReset","_callee12","_context12","searchUsers","_x42","_x43","_x44","_x45","_searchUsers","_callee13","_args13","_context13","tagUser","_x46","_x47","_x48","_x49","_tagUser","_callee14","_context14","untagUser","_x50","_x51","_x52","_x53","_untagUser","_callee15","_context15","fetchUserStatuses","_x54","_x55","_x56","_x57","_fetchUserStatuses","_callee16","_context16","confirmUserEmail","_x58","_x59","_x60","_confirmUserEmail","_callee17","_context17","resendConfirmationEmail","_x61","_x62","_x63","_resendConfirmationEmail","_callee18","_context18","userProfile","statusesLoading","userCredentials","userProfileLoading","SET_STATUSES","SET_STATUSES_LOADING","SET_USER","SET_USER_PROFILE_LOADING","SET_USER_CREDENTIALS","FetchUserProfile","_FetchUserProfile","userResponse","FetchUserStatuses","_FetchUserStatuses","FetchUserCredentials","_FetchUserCredentials","UpdateUserCredentials","_UpdateUserCredentials","fetchedUsers","searchQuery","totalUsersCount","local","external","active","deactivated","passwordResetToken","link","SET_USERS","SWAP_USERS","usersWithoutSwapped","u","b","localeCompare","SET_COUNT","SET_PAGE_SIZE","SET_PASSWORD_RESET_TOKEN","SET_SEARCH_QUERY","SET_USERS_FILTERS","SET_USER_PROFILE","ActivateUsers","_ActivateUsers","_userId","updatedUsers","callApiFn","ApplyChanges","_ApplyChanges","AddRight","_AddRight","AddTag","_AddTag","ClearFilters","_ClearFilters","CreateNewAccount","_CreateNewAccount","DeactivateUsers","_DeactivateUsers","ConfirmUsersEmail","_ConfirmUsersEmail","_ref20","confirmation_pending","_ref21","ResendConfirmationEmail","_ResendConfirmationEmail","_ref22","usersNicknames","DeleteRight","_DeleteRight","_ref23","_ref24","_ref25","DeleteUsers","_DeleteUsers","_ref26","_ref27","deletedUsersIds","deletedUser","FetchUsers","_FetchUsers","_ref28","_ref29","join","loadUsers","GetPasswordResetToken","_GetPasswordResetToken","_callee19","_ref30","_ref31","_context19","RemovePasswordToken","_ref32","RemoveTag","_RemoveTag","_callee21","_ref33","_ref34","_context21","userTag","_ref35","_callee20","_context20","RequirePasswordReset","_RequirePasswordReset","_callee22","_ref36","_context22","SearchUsers","_SearchUsers","_callee23","_ref37","_ref38","_context23","SuccessMessage","success","ToggleUsersFilter","_ToggleUsersFilter","_callee24","_ref39","defaultFilters","currentFilters","_context24","_ref40","page_size","permission_routers","errorLogs","packs","activeCollapseItems","localPacks","remoteInstance","remotePacks","SET_ACTIVE_COLLAPSE_ITEMS","SET_LOCAL_PACKS","SET_REMOTE_INSTANCE","SET_REMOTE_PACKS","UPDATE_LOCAL_PACK_VAL","UPDATE_LOCAL_PACK_PACK","pack","UPDATE_LOCAL_PACK_FILES","files","AddNewEmojiFile","_AddNewEmojiFile","packName","file","shortcode","filename","addNewEmojiFile","DeleteEmojiFile","_DeleteEmojiFile","deleteEmojiFile","CreatePack","_CreatePack","createPack","DeletePack","_DeletePack","deletePack","DownloadFrom","_DownloadFrom","instanceAddress","as","downloadFrom","ImportFromFS","_ImportFromFS","importFromFS","ReloadEmoji","_ReloadEmoji","reloadEmoji","SavePackMetadata","_SavePackMetadata","savePackMetadata","SetActiveCollapseItems","activeItems","SetLocalEmojiPacks","_SetLocalEmojiPacks","listPacks","SetRemoteEmojiPacks","_SetRemoteEmojiPacks","listRemotePacks","SetRemoteInstance","UpdateEmojiFile","_UpdateEmojiFile","newShortcode","newFilename","force","updateEmojiFile","UpdateLocalPackVal","_UpdateLocalPackVal","args","Vuex","Store","modules","SvgIcon","requireContext","requireAll","require","config","errorHandler","vm","info","nextTick","console","NProgress","configure","showSpinner","whiteList","pluralize","label","timeAgo","between","Number","numberFormatter","num","digits","si","toFixed","toThousandFilter","beforeEach","from","start","addRoutes","dangerouslyUseHTMLString","permissionRoles","noGoBack","afterEach","Element","productionTip","js_cookie__WEBPACK_IMPORTED_MODULE_0__","js_cookie__WEBPACK_IMPORTED_MODULE_0___default","TokenKey","AuthHostKey","remove","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_TagsView_vue_vue_type_style_index_1_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_7_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_7_2_node_modules_vue_loader_lib_index_js_vue_loader_options_AppMain_vue_vue_type_style_index_0_id_f852c4f2_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Navbar_vue_vue_type_style_index_0_id_28de7ff2_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","getBooleanValue","partialUpdate","updated","settingName","find","element","getCurrentValue","_path","_babel_runtime_helpers_toArray__WEBPACK_IMPORTED_MODULE_5___default","firstSettingName","restKeys","firstSegment","secondSegment","_keys","rest","_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_1___default","tuple","tuples","accum","Array","isArray","mascot","_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default","_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default","_babel_runtime_helpers_objectSpread__WEBPACK_IMPORTED_MODULE_3___default","regex","parseProxyUrl","parseObject","object","_value$tuple","_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_4___default","socks5","port","_value$split","split","_value$split2","processNested","valueForState","valueForUpdatedSettings","parentKey","parents","_parents","_parents$","otherParents","updatedValueForState","valueExists","updatedValueForUpdatedSettings","_path2","_keys2","valueIsArrayOfNonObjects","every","currentState","_value","updatedArray","getValueWithoutKey","wrapValues","_settings$setting","mapValue","mapCurrentState","values","ip","searchArray","compact","toLowerCase","resultObject","groupKey","groupLabel","search","updatedAcc","parseNestedSettings","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_7_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_7_2_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_17178ffc_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","VueI18n","messages","en","dashboard","documentation","guide","pagePermission","directivePermission","icons","componentIndex","markdown","jsonEditor","dndList","splitPane","avatarUpload","dropzone","sticky","countTo","componentMixin","backToTop","dragDialog","dragSelect","dragKanban","charts","keyboardChart","lineChart","mixChart","example","nested","menu1","menu1-1","menu1-2","menu1-2-1","menu1-2-2","menu1-3","menu2","Table","dynamicTable","dragTable","inlineEditTable","complexTable","treeTable","customTreeTable","form","createArticle","editArticle","articleList","errorPages","page401","page404","excel","exportExcel","selectExcel","uploadExcel","zip","pdf","exportZip","theme","clipboardDemo","externalLink","emoji-packs","navbar","logOut","github","login","logIn","logInViaPleromaFE","omitHostname","errorMessage","any","thirdparty","pleromaFELoginFailed","pleromaFELoginSucceed","switchRoles","tips","dropzoneTips","stickyTips","backToTopTips1","backToTopTips2","imageUploadTips","table","dynamicTips1","dynamicTips2","dragTips1","dragTips2","importance","remark","export","reviewer","author","readings","edit","publish","draft","cancel","confirm","selectedExport","placeholder","change","refresh","close","closeOthers","closeAll","localUsersOnly","unconfirmed","activate","deactivate","admin","moderator","moderation","revokeAdmin","grantAdmin","revokeModerator","grantModerator","activateAccount","activateAccounts","deactivateAccount","deactivateAccounts","deleteAccount","deleteAccounts","forceNsfw","stripMedia","forceUnlisted","sandbox","disableRemoteSubscription","disableRemoteSubscriptionForMultiple","disableAnySubscription","disableAnySubscriptionForMultiple","requirePasswordReset","selectUsers","moderateUser","moderateUsers","createAccount","grantRightConfirmation","revokeRightConfirmation","activateMultipleUsersConfirmation","deactivateMultipleUsersConfirmation","deleteMultipleUsersConfirmation","addTagForMultipleUsersConfirmation","removeTagFromMultipleUsersConfirmation","requirePasswordResetConfirmation","confirmAccountsConfirmation","resendEmailConfirmation","mailerMustBeEnabled","ok","completed","canceled","create","submitFormError","emptyEmailError","invalidEmailError","emptyPasswordError","emptyNicknameError","invalidNicknameError","passwordResetTokenCreated","accountCreated","unconfirmedEmail","confirmAccount","confirmAccounts","resendConfirmation","instanceFilter","loadMore","noInstances","onlyLocalStatuses","showPrivateStatuses","direct","private","public","unlisted","localUppercase","recentStatuses","activeUppercase","noStatuses","securitySettings","passwordChangeWarning1","passwordChangeWarning2","passwordLengthNotice","inputNewEmail","inputNewPassword","passwordUpdated","emailUpdated","submit","usersFilter","inputPlaceholder","byUserType","byStatus","reply","showNotes","newNote","confirmMsg","deleteCompleted","deleteCanceled","noNotes","changeAllReports","changeScope","reopen","resolveAll","reopenAll","addSensitive","removeSensitive","reportOn","reportsOn","account","actor","actors","reportedStatus","statusDeleted","leaveNote","postNote","notFound","reportsFilter","open","closed","resolved","upload","mailer","logger","activityPub","auth","autoLinker","captcha","frontend","http","mrf","mediaProxy","gopher","jobQueue","webPush","esshd","rateLimiters","other","follow","followRelay","instanceUrl","removeFromDB","successfullyDownloaded","successfullyImported","nowNewPacksToImport","successfullyUpdated","metadatLowerCase","successfullyRemoved","seeDocs","assets","emoji","markup","corsPlug","instanceReboot","restartSuccess","removeSettingConfirmation","createInviteToken","pickDate","tokenCreated","inviteLink","uses","used","revoke","inviteUserViaEmail","sendRegistration","emailSent","inviteViaEmailAlert","reloaded","refreshed","importEmojiTooltip","importPacks","refreshLocalPacks","createLocalPack","remoteInstanceAddress","refreshRemote","sharePack","homepage","license","fallbackSrc","fallbackSrcSha","saveMetadata","downloadPack","downloadPackArchive","addNewEmoji","manageEmoji","thisWillDownload","downloadToCurrentInstance","canBeChanged","willBeUsable","downloadAsOptional","downloadSharedPack","downloadSharedPackMobile","optional","uploadFile","clickToUpload","customFilename","customFilenameDesc","localPack","leaveEmptyShortcode","leaveEmptyFilename","update","selectLocalPack","specifyShortcode","specifyFilename","copy","copyToLocalPack","elementEnLocale","zh","thirdpartyTips","elementZhLocale","es","elementEsLocale","oc","locale","_addNewEmojiFile","_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default","FormData","trim","addressOfEmojiInPack","_createPack","_deleteEmojiFile","_deletePack","_downloadFrom","timeout","_importFromFS","_listPacks","_listRemotePacks","_reloadEmoji","_savePackMetadata","_updateEmojiFile","new_shortcode","new_filename","subMenuActiveText","menuHover","subMenuBg","subMenuHover","sideBarWidth","axios__WEBPACK_IMPORTED_MODULE_0__","axios__WEBPACK_IMPORTED_MODULE_0___default","element_ui__WEBPACK_IMPORTED_MODULE_1__","service","axios","interceptors","edata","element_ui_SvgIconvue_type_script_lang_js_","iconClass","className","iconName","svgClass","_g","aria-hidden","$listeners","xlink:href"],"mappings":"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","file":"static/js/app.0146039c.js","sourcesContent":["import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-pdf\",\n \"use\": \"icon-pdf-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-people\",\n \"use\": \"icon-people-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-eye-open\",\n \"use\": \"icon-eye-open-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--7-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=69c6c5c4&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--7-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=69c6c5c4&scoped=true&lang=css&\"","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-exit-fullscreen\",\n \"use\": \"icon-exit-fullscreen-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-nested\",\n \"use\": \"icon-nested-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-theme\",\n \"use\": \"icon-theme-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-form\",\n \"use\": \"icon-form-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-dashboard\",\n \"use\": \"icon-dashboard-usage\",\n \"viewBox\": \"0 0 128 100\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","const isLocalhost = (instanceName) =>\n instanceName.startsWith('localhost:') || instanceName.startsWith('127.0.0.1:')\n\nexport const baseName = (instanceName = 'localhost') => {\n if (instanceName.match(/https?:\\/\\//)) {\n return instanceName\n } else {\n return isLocalhost(instanceName) ? `http://${instanceName}` : `https://${instanceName}`\n }\n}\n","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-shopping\",\n \"use\": \"icon-shopping-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-bug\",\n \"use\": \"icon-bug-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-international\",\n \"use\": \"icon-international-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-qq\",\n \"use\": \"icon-qq-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-link\",\n \"use\": \"icon-link-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=591d6778&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=591d6778&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TagsView.vue?vue&type=style&index=0&id=e1cdb714&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TagsView.vue?vue&type=style&index=0&id=e1cdb714&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-guide 2\",\n \"use\": \"icon-guide 2-usage\",\n \"viewBox\": \"0 0 1000 1000\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-language\",\n \"use\": \"icon-language-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-password\",\n \"use\": \"icon-password-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-peoples\",\n \"use\": \"icon-peoples-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-money\",\n \"use\": \"icon-money-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-example\",\n \"use\": \"icon-example-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-list\",\n \"use\": \"icon-list-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-settings\",\n \"use\": \"icon-settings-usage\",\n \"viewBox\": \"0 0 490.2 490.2\",\n \"content\": \"\\r\\n\\r\\n\\t\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\r\\n\\t\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-message\",\n \"use\": \"icon-message-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-table\",\n \"use\": \"icon-table-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Layout.vue?vue&type=style&index=0&id=767d264f&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Layout.vue?vue&type=style&index=0&id=767d264f&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-eye\",\n \"use\": \"icon-eye-usage\",\n \"viewBox\": \"0 0 128 64\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","var map = {\n\t\"./404.svg\": \"oUrx\",\n\t\"./bug.svg\": \"F3lI\",\n\t\"./chart.svg\": \"yCkv\",\n\t\"./clipboard.svg\": \"vDVG\",\n\t\"./component.svg\": \"VtY+\",\n\t\"./dashboard.svg\": \"94Jb\",\n\t\"./documentation.svg\": \"kPu2\",\n\t\"./drag.svg\": \"m7++\",\n\t\"./edit.svg\": \"qkZ8\",\n\t\"./email.svg\": \"y7eQ\",\n\t\"./example.svg\": \"MMMJ\",\n\t\"./excel.svg\": \"ZZmv\",\n\t\"./exit-fullscreen.svg\": \"28eg\",\n\t\"./eye-open.svg\": \"1+ww\",\n\t\"./eye.svg\": \"TfVu\",\n\t\"./form.svg\": \"6xvN\",\n\t\"./fullscreen.svg\": \"mSHS\",\n\t\"./guide 2.svg\": \"ICep\",\n\t\"./guide.svg\": \"ZoO1\",\n\t\"./icon.svg\": \"nZHn\",\n\t\"./international.svg\": \"F9+T\",\n\t\"./language.svg\": \"JYDz\",\n\t\"./link.svg\": \"GPBF\",\n\t\"./list.svg\": \"MokB\",\n\t\"./lock.svg\": \"qwAt\",\n\t\"./message.svg\": \"R/8a\",\n\t\"./money.svg\": \"MEYL\",\n\t\"./nested.svg\": \"3PhE\",\n\t\"./password.svg\": \"Kj24\",\n\t\"./pdf.svg\": \"+aF5\",\n\t\"./people.svg\": \"0Fbn\",\n\t\"./peoples.svg\": \"LxGF\",\n\t\"./qq.svg\": \"FDDl\",\n\t\"./search.svg\": \"jo2x\",\n\t\"./settings.svg\": \"P8iQ\",\n\t\"./shopping.svg\": \"EqXK\",\n\t\"./size.svg\": \"hkRB\",\n\t\"./star.svg\": \"cIpu\",\n\t\"./tab.svg\": \"j7e1\",\n\t\"./table.svg\": \"R/Hx\",\n\t\"./theme.svg\": \"5TQQ\",\n\t\"./tree.svg\": \"k80C\",\n\t\"./user.svg\": \"s7Vf\",\n\t\"./wechat.svg\": \"gNoN\",\n\t\"./zip.svg\": \"iqZD\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"Uf/o\";","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-component\",\n \"use\": \"icon-component-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import mod from \"-!../node_modules/babel-loader/lib/index.js?cacheDirectory!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/babel-loader/lib/index.js?cacheDirectory!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=6b42edcf&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"App.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('router-view')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function needReboot(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/need_reboot`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function restartApp(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/restart`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import Cookies from 'js-cookie'\nimport { needReboot, restartApp } from '@/api/app'\n\nconst app = {\n state: {\n sidebar: {\n opened: Cookies.get('sidebarStatus') ? !!+Cookies.get('sidebarStatus') : true,\n withoutAnimation: false\n },\n device: 'desktop',\n language: Cookies.get('language') || 'en',\n needReboot: false,\n size: Cookies.get('size') || 'medium',\n invitesEnabled: false\n },\n mutations: {\n TOGGLE_SIDEBAR: state => {\n state.sidebar.opened = !state.sidebar.opened\n state.sidebar.withoutAnimation = false\n if (state.sidebar.opened) {\n Cookies.set('sidebarStatus', 1)\n } else {\n Cookies.set('sidebarStatus', 0)\n }\n },\n CLOSE_SIDEBAR: (state, withoutAnimation) => {\n Cookies.set('sidebarStatus', 0)\n state.sidebar.opened = false\n state.sidebar.withoutAnimation = withoutAnimation\n },\n TOGGLE_DEVICE: (state, device) => {\n state.device = device\n },\n SET_INVITES_ENABLED: (state, invitesEnabled) => {\n state.invitesEnabled = invitesEnabled\n },\n SET_LANGUAGE: (state, language) => {\n state.language = language\n Cookies.set('language', language)\n },\n TOGGLE_REBOOT: (state, needReboot) => {\n state.needReboot = needReboot\n },\n SET_SIZE: (state, size) => {\n state.size = size\n Cookies.set('size', size)\n }\n },\n actions: {\n closeSideBar({ commit }, { withoutAnimation }) {\n commit('CLOSE_SIDEBAR', withoutAnimation)\n },\n async NeedReboot({ commit, getters }) {\n const response = await needReboot(getters.authHost, getters.token)\n commit('TOGGLE_REBOOT', response.data['need_reboot'])\n },\n async RestartApplication({ commit, getters }) {\n await restartApp(getters.authHost, getters.token)\n commit('TOGGLE_REBOOT', false)\n },\n SetInvitesEnabled({ commit }, invitesEnabled) {\n commit('SET_INVITES_ENABLED', invitesEnabled)\n },\n setLanguage({ commit }, language) {\n commit('SET_LANGUAGE', language)\n },\n setSize({ commit }, size) {\n commit('SET_SIZE', size)\n },\n toggleDevice({ commit }, device) {\n commit('TOGGLE_DEVICE', device)\n },\n toggleSideBar({ commit }) {\n commit('TOGGLE_SIDEBAR')\n }\n }\n}\n\nexport default app\n","const errorLog = {\n state: {\n logs: []\n },\n mutations: {\n ADD_ERROR_LOG: (state, log) => {\n state.logs.push(log)\n }\n },\n actions: {\n addErrorLog({ commit }, log) {\n commit('ADD_ERROR_LOG', log)\n }\n }\n}\n\nexport default errorLog\n","import _ from 'lodash'\n\nimport request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function fetchLog(authHost, token, params, page = 1) {\n const normalizedParams = new URLSearchParams(\n _.omitBy({ ...params, page }, _.isUndefined)\n ).toString()\n\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/moderation_log?${normalizedParams}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function fetchAdmins(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users?filters=is_admin`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function fetchModerators(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users?filters=is_moderator`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import { fetchLog, fetchAdmins, fetchModerators } from '@/api/moderationLog'\n\nconst moderationLog = {\n state: {\n fetchedLog: [],\n logItemsCount: 0,\n admins: [],\n moderators: [],\n logLoading: true,\n adminsLoading: true\n },\n mutations: {\n SET_LOG_LOADING: (state, status) => {\n state.logLoading = status\n },\n SET_ADMINS_LOADING: (state, status) => {\n state.adminsLoading = status\n },\n SET_MODERATION_LOG: (state, log) => {\n state.fetchedLog = log\n },\n SET_MODERATION_LOG_COUNT: (state, count) => {\n state.logItemsCount = count\n },\n SET_ADMINS: (state, admins) => {\n state.admins = admins\n },\n SET_MODERATORS: (state, moderators) => {\n state.moderators = moderators\n }\n },\n actions: {\n async FetchModerationLog({ commit, getters }, opts = {}) {\n const response = await fetchLog(getters.authHost, getters.token, opts)\n\n commit('SET_MODERATION_LOG', response.data.items)\n commit('SET_MODERATION_LOG_COUNT', response.data.total)\n commit('SET_LOG_LOADING', false)\n },\n async FetchAdmins({ commit, getters }) {\n const adminsResponse = await fetchAdmins(getters.authHost, getters.token)\n const moderatorsResponse = await fetchModerators(getters.authHost, getters.token)\n\n commit('SET_ADMINS', adminsResponse.data)\n commit('SET_MODERATORS', moderatorsResponse.data)\n commit('SET_ADMINS_LOADING', false)\n }\n }\n}\n\nexport default moderationLog\n","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function generateInviteToken(max_use, expires_at, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/invite_token`,\n method: 'post',\n headers: authHeaders(token),\n data: expires_at && expires_at.length > 0 ? { max_use, expires_at } : { max_use }\n })\n}\n\nexport async function inviteViaEmail(email, name, authHost, token) {\n const data = name.length > 0 ? { email, name } : { email }\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/users/email_invite',\n method: 'post',\n headers: authHeaders(token),\n data\n })\n}\n\nexport async function listInviteTokens(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/invites`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function revokeToken(tokenToRevoke, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/revoke_invite`,\n method: 'post',\n headers: authHeaders(token),\n data: { token: tokenToRevoke }\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import { generateInviteToken, inviteViaEmail, listInviteTokens, revokeToken } from '@/api/invites'\nimport { Message } from 'element-ui'\nimport i18n from '@/lang'\n\nconst invites = {\n state: {\n inviteTokens: [],\n loading: false,\n newToken: {}\n },\n mutations: {\n SET_LOADING: (state, status) => {\n state.loading = status\n },\n SET_NEW_TOKEN: (state, token) => {\n state.newToken = token\n },\n SET_TOKENS: (state, tokens) => {\n state.inviteTokens = tokens\n }\n },\n actions: {\n async FetchInviteTokens({ commit, getters }) {\n commit('SET_LOADING', true)\n const response = await listInviteTokens(getters.authHost, getters.token)\n commit('SET_TOKENS', response.data.invites.reverse())\n commit('SET_LOADING', false)\n },\n async GenerateInviteToken({ commit, dispatch, getters }, { maxUse, expiresAt }) {\n try {\n const { data } = await generateInviteToken(maxUse, expiresAt, getters.authHost, getters.token)\n commit('SET_NEW_TOKEN', { token: data.token, maxUse: data.max_use, expiresAt: data.expires_at })\n } catch (_e) {\n return\n }\n dispatch('FetchInviteTokens')\n },\n async InviteUserViaEmail({ commit, dispatch, getters }, { email, name }) {\n try {\n await inviteViaEmail(email, name, getters.authHost, getters.token)\n } catch (_e) {\n return\n }\n Message({\n message: i18n.t('invites.emailSent'),\n type: 'success',\n duration: 5 * 1000\n })\n },\n RemoveNewToken({ commit }) {\n commit('SET_NEW_TOKEN', {})\n },\n async RevokeToken({ commit, dispatch, getters }, token) {\n try {\n await revokeToken(token, getters.authHost, getters.token)\n } catch (_e) {\n return\n }\n dispatch('FetchInviteTokens')\n }\n }\n}\n\nexport default invites\n","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function fetchPeers(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/v1/instance/peers`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import { fetchPeers } from '@/api/peers'\n\nconst peers = {\n state: {\n fetchedPeers: [],\n loading: true\n },\n\n mutations: {\n SET_PEERS: (state, peers) => {\n state.fetchedPeers = peers\n },\n SET_LOADING: (state, status) => {\n state.loading = status\n }\n },\n\n actions: {\n async FetchPeers({ commit, getters }) {\n const peers = await fetchPeers(getters.authHost, getters.token)\n\n commit('SET_PEERS', [...peers.data].sort())\n commit('SET_LOADING', false)\n }\n }\n}\n\nexport default peers\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=69c6c5c4&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=69c6c5c4&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"69c6c5c4\",\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"padding\":\"0 15px\"},on:{\"click\":_vm.toggleClick}},[_c('svg',{staticClass:\"hamburger\",class:{'is-active':_vm.isActive},attrs:{\"viewBox\":\"0 0 1024 1024\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":\"64\",\"height\":\"64\"}},[_c('path',{attrs:{\"d\":\"M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM142.4 642.1L298.7 519a8.84 8.84 0 0 0 0-13.9L142.4 381.9c-5.8-4.6-14.4-.5-14.4 6.9v246.3a8.9 8.9 0 0 0 14.4 7z\"}})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navbar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navbar.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Navbar.vue?vue&type=template&id=28de7ff2&scoped=true&\"\nimport script from \"./Navbar.vue?vue&type=script&lang=js&\"\nexport * from \"./Navbar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Navbar.vue?vue&type=style&index=0&id=28de7ff2&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"28de7ff2\",\n null\n \n)\n\ncomponent.options.__file = \"Navbar.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"navbar\"},[_c('hamburger',{staticClass:\"hamburger-container\",attrs:{\"toggle-click\":_vm.toggleSideBar,\"is-active\":_vm.sidebar.opened}}),_vm._v(\" \"),_c('div',{staticClass:\"right-menu\"},[_c('el-dropdown',{staticClass:\"avatar-container right-menu-item hover-effect\",attrs:{\"trigger\":\"click\"}},[_c('div',{staticClass:\"avatar-wrapper\"},[_c('img',{staticClass:\"user-avatar\",attrs:{\"src\":_vm.avatar+'?imageView2/1/w/80/h/80'}})]),_vm._v(\" \"),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[_c('el-dropdown-item',[_c('span',{staticStyle:{\"display\":\"block\"},on:{\"click\":_vm.logout}},[_vm._v(_vm._s(_vm.$t('navbar.logOut')))])])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// translate router.meta.title, be used in breadcrumb sidebar tagsview\nexport function generateTitle(title) {\n const hasKey = this.$te('route.' + title)\n\n if (hasKey) {\n // $t :this method from vue-i18n, inject in @/lang/index.js\n const translatedTitle = this.$t('route.' + title)\n\n return translatedTitle\n }\n return title\n}\n","/**\n * Created by jiachenpan on 16/11/18.\n */\n\nexport function parseTime(time, cFormat) {\n if (arguments.length === 0) {\n return null\n }\n const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'\n let date\n if (typeof time === 'object') {\n date = time\n } else {\n if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {\n time = parseInt(time)\n }\n if ((typeof time === 'number') && (time.toString().length === 10)) {\n time = time * 1000\n }\n date = new Date(time)\n }\n const formatObj = {\n y: date.getFullYear(),\n m: date.getMonth() + 1,\n d: date.getDate(),\n h: date.getHours(),\n i: date.getMinutes(),\n s: date.getSeconds(),\n a: date.getDay()\n }\n const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {\n let value = formatObj[key]\n // Note: getDay() returns 0 on Sunday\n if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value ] }\n if (result.length > 0 && value < 10) {\n value = '0' + value\n }\n return value || 0\n })\n return time_str\n}\n\nexport function formatTime(time, option) {\n time = +time * 1000\n const d = new Date(time)\n const now = Date.now()\n\n const diff = (now - d) / 1000\n\n if (diff < 30) {\n return '刚刚'\n } else if (diff < 3600) {\n // less 1 hour\n return Math.ceil(diff / 60) + '分钟前'\n } else if (diff < 3600 * 24) {\n return Math.ceil(diff / 3600) + '小时前'\n } else if (diff < 3600 * 24 * 2) {\n return '1天前'\n }\n if (option) {\n return parseTime(time, option)\n } else {\n return (\n d.getMonth() +\n 1 +\n '月' +\n d.getDate() +\n '日' +\n d.getHours() +\n '时' +\n d.getMinutes() +\n '分'\n )\n }\n}\n\n// 格式化时间\nexport function getQueryObject(url) {\n url = url == null ? window.location.href : url\n const search = url.substring(url.lastIndexOf('?') + 1)\n const obj = {}\n const reg = /([^?&=]+)=([^?&=]*)/g\n search.replace(reg, (rs, $1, $2) => {\n const name = decodeURIComponent($1)\n let val = decodeURIComponent($2)\n val = String(val)\n obj[name] = val\n return rs\n })\n return obj\n}\n\n/**\n *get getByteLen\n * @param {Sting} val input value\n * @returns {number} output value\n */\nexport function getByteLen(val) {\n let len = 0\n for (let i = 0; i < val.length; i++) {\n if (val[i].match(/[^\\x00-\\xff]/gi) != null) {\n len += 1\n } else {\n len += 0.5\n }\n }\n return Math.floor(len)\n}\n\nexport function cleanArray(actual) {\n const newArray = []\n for (let i = 0; i < actual.length; i++) {\n if (actual[i]) {\n newArray.push(actual[i])\n }\n }\n return newArray\n}\n\nexport function param(json) {\n if (!json) return ''\n return cleanArray(\n Object.keys(json).map(key => {\n if (json[key] === undefined) return ''\n return encodeURIComponent(key) + '=' + encodeURIComponent(json[key])\n })\n ).join('&')\n}\n\nexport function param2Obj(url) {\n const search = url.split('?')[1]\n if (!search) {\n return {}\n }\n return JSON.parse(\n '{\"' +\n decodeURIComponent(search)\n .replace(/\"/g, '\\\\\"')\n .replace(/&/g, '\",\"')\n .replace(/=/g, '\":\"') +\n '\"}'\n )\n}\n\nexport function html2Text(val) {\n const div = document.createElement('div')\n div.innerHTML = val\n return div.textContent || div.innerText\n}\n\nexport function objectMerge(target, source) {\n /* Merges two objects,\n giving the last one precedence */\n\n if (typeof target !== 'object') {\n target = {}\n }\n if (Array.isArray(source)) {\n return source.slice()\n }\n Object.keys(source).forEach(property => {\n const sourceProperty = source[property]\n if (typeof sourceProperty === 'object') {\n target[property] = objectMerge(target[property], sourceProperty)\n } else {\n target[property] = sourceProperty\n }\n })\n return target\n}\n\nexport function toggleClass(element, className) {\n if (!element || !className) {\n return\n }\n let classString = element.className\n const nameIndex = classString.indexOf(className)\n if (nameIndex === -1) {\n classString += '' + className\n } else {\n classString =\n classString.substr(0, nameIndex) +\n classString.substr(nameIndex + className.length)\n }\n element.className = classString\n}\n\nexport const pickerOptions = [\n {\n text: '今天',\n onClick(picker) {\n const end = new Date()\n const start = new Date(new Date().toDateString())\n end.setTime(start.getTime())\n picker.$emit('pick', [start, end])\n }\n },\n {\n text: '最近一周',\n onClick(picker) {\n const end = new Date(new Date().toDateString())\n const start = new Date()\n start.setTime(end.getTime() - 3600 * 1000 * 24 * 7)\n picker.$emit('pick', [start, end])\n }\n },\n {\n text: '最近一个月',\n onClick(picker) {\n const end = new Date(new Date().toDateString())\n const start = new Date()\n start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)\n picker.$emit('pick', [start, end])\n }\n },\n {\n text: '最近三个月',\n onClick(picker) {\n const end = new Date(new Date().toDateString())\n const start = new Date()\n start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)\n picker.$emit('pick', [start, end])\n }\n }\n]\n\nexport function getTime(type) {\n if (type === 'start') {\n return new Date().getTime() - 3600 * 1000 * 24 * 90\n } else {\n return new Date(new Date().toDateString())\n }\n}\n\nexport function debounce(func, wait, immediate) {\n let timeout, args, context, timestamp, result\n\n const later = function() {\n // 据上一次触发时间间隔\n const last = +new Date() - timestamp\n\n // 上次被包装函数被调用时间间隔last小于设定时间间隔wait\n if (last < wait && last > 0) {\n timeout = setTimeout(later, wait - last)\n } else {\n timeout = null\n // 如果设定为immediate===true,因为开始边界已经调用过了此处无需调用\n if (!immediate) {\n result = func.apply(context, args)\n if (!timeout) context = args = null\n }\n }\n }\n\n return function(...args) {\n context = this\n timestamp = +new Date()\n const callNow = immediate && !timeout\n // 如果延时不存在,重新设定延时\n if (!timeout) timeout = setTimeout(later, wait)\n if (callNow) {\n result = func.apply(context, args)\n context = args = null\n }\n\n return result\n }\n}\n\n/**\n * This is just a simple version of deep copy\n * Has a lot of edge cases bug\n * If you want to use a perfect deep copy, use lodash's _.cloneDeep\n */\nexport function deepClone(source) {\n if (!source && typeof source !== 'object') {\n throw new Error('error arguments', 'shallowClone')\n }\n const targetObj = source.constructor === Array ? [] : {}\n Object.keys(source).forEach(keys => {\n if (source[keys] && typeof source[keys] === 'object') {\n targetObj[keys] = deepClone(source[keys])\n } else {\n targetObj[keys] = source[keys]\n }\n })\n return targetObj\n}\n\nexport function uniqueArr(arr) {\n return Array.from(new Set(arr))\n}\n\nexport function isExternal(path) {\n return /^(https?:|mailto:|tel:)/.test(path)\n}\n","\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Item.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Item.vue?vue&type=script&lang=js&\"","var render, staticRenderFns\nimport script from \"./Item.vue?vue&type=script&lang=js&\"\nexport * from \"./Item.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Item.vue\"\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Link.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Link.vue?vue&type=script&lang=js&\"","\n\n\n\n","import { render, staticRenderFns } from \"./Link.vue?vue&type=template&id=4dde2217&\"\nimport script from \"./Link.vue?vue&type=script&lang=js&\"\nexport * from \"./Link.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Link.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('component',_vm._b({},'component',_vm.linkProps(_vm.to),false),[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarItem.vue?vue&type=script&lang=js&\"","\n\n\n","export default {\n computed: {\n device() {\n return this.$store.state.app.device\n }\n },\n mounted() {\n // In order to fix the click on menu on the ios device will trigger the mouseleave bug\n // https://github.com/PanJiaChen/vue-element-admin/issues/1135\n this.fixBugIniOS()\n },\n methods: {\n fixBugIniOS() {\n const $subMenu = this.$refs.subMenu\n if ($subMenu) {\n const handleMouseleave = $subMenu.handleMouseleave\n $subMenu.handleMouseleave = (e) => {\n if (this.device === 'mobile') {\n return\n }\n handleMouseleave(e)\n }\n }\n }\n }\n}\n","import { render, staticRenderFns } from \"./SidebarItem.vue?vue&type=template&id=763b3c07&\"\nimport script from \"./SidebarItem.vue?vue&type=script&lang=js&\"\nexport * from \"./SidebarItem.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"SidebarItem.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.item.hidden && _vm.item.children && _vm.invitesEnabled)?_c('div',{staticClass:\"menu-wrapper\"},[(_vm.hasOneShowingChild(_vm.item.children,_vm.item) && (!_vm.onlyOneChild.children||_vm.onlyOneChild.noShowingChildren)&&!_vm.item.alwaysShow)?[_c('app-link',{attrs:{\"to\":_vm.resolvePath(_vm.onlyOneChild.path)}},[_c('el-menu-item',{class:{'submenu-title-noDropdown':!_vm.isNest},attrs:{\"index\":_vm.resolvePath(_vm.onlyOneChild.path)}},[(_vm.onlyOneChild.meta)?_c('item',{attrs:{\"icon\":_vm.onlyOneChild.meta.icon||_vm.item.meta.icon,\"title\":_vm.generateTitle(_vm.onlyOneChild.meta.title)}}):_vm._e()],1)],1)]:_c('el-submenu',{ref:\"subMenu\",attrs:{\"index\":_vm.resolvePath(_vm.item.path)}},[_c('template',{slot:\"title\"},[(_vm.item.meta)?_c('item',{attrs:{\"icon\":_vm.item.meta.icon,\"title\":_vm.generateTitle(_vm.item.meta.title)}}):_vm._e()],1),_vm._v(\" \"),_vm._l((_vm.item.children),function(child){return [(!child.hidden)?[(child.children&&child.children.length>0)?_c('sidebar-item',{key:child.path,staticClass:\"nest-menu\",attrs:{\"is-nest\":true,\"item\":child,\"base-path\":_vm.resolvePath(child.path)}}):_c('app-link',{key:child.name,attrs:{\"to\":_vm.resolvePath(child.path)}},[_c('el-menu-item',{attrs:{\"index\":_vm.resolvePath(child.path)}},[(child.meta)?_c('item',{attrs:{\"icon\":child.meta.icon,\"title\":_vm.generateTitle(child.meta.title)}}):_vm._e()],1)],1)]:_vm._e()]})],2)],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=29a0fa94&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-scrollbar',{attrs:{\"wrap-class\":\"scrollbar-wrapper\"}},[_c('el-menu',{attrs:{\"default-active\":_vm.$route.path,\"collapse\":_vm.isCollapse,\"background-color\":_vm.variables.menuBg,\"text-color\":_vm.variables.menuText,\"active-text-color\":_vm.variables.menuActiveText,\"mode\":\"vertical\"}},_vm._l((_vm.permission_routers),function(route){return _c('sidebar-item',{key:route.path,attrs:{\"item\":route,\"base-path\":route.path}})}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=591d6778&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=591d6778&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"591d6778\",\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-scrollbar',{ref:\"scrollContainer\",staticClass:\"scroll-container\",attrs:{\"vertical\":false},nativeOn:{\"wheel\":function($event){$event.preventDefault();return _vm.handleScroll($event)}}},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TagsView.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TagsView.vue?vue&type=script&lang=js&\"","\n\n\n\n\n\n\n","import { render, staticRenderFns } from \"./TagsView.vue?vue&type=template&id=e1cdb714&scoped=true&\"\nimport script from \"./TagsView.vue?vue&type=script&lang=js&\"\nexport * from \"./TagsView.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TagsView.vue?vue&type=style&index=0&id=e1cdb714&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\nimport style1 from \"./TagsView.vue?vue&type=style&index=1&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e1cdb714\",\n null\n \n)\n\ncomponent.options.__file = \"TagsView.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"tags-view-container\"},[_c('scroll-pane',{ref:\"scrollPane\",staticClass:\"tags-view-wrapper\"},_vm._l((_vm.visitedViews),function(tag){return _c('router-link',{key:tag.path,ref:\"tag\",refInFor:true,staticClass:\"tags-view-item\",class:_vm.isActive(tag)?'active':'',attrs:{\"to\":{ path: tag.path, query: tag.query, fullPath: tag.fullPath },\"tag\":\"span\"},nativeOn:{\"mouseup\":function($event){if('button' in $event && $event.button !== 1){ return null; }return _vm.closeSelectedTag(tag)},\"contextmenu\":function($event){$event.preventDefault();return _vm.openMenu(tag,$event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.generateTitle(tag.title))+\"\\n \"),(!tag.meta.affix)?_c('span',{staticClass:\"el-icon-close\",on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.closeSelectedTag(tag)}}}):_vm._e()])}),1),_vm._v(\" \"),_c('ul',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.visible),expression:\"visible\"}],staticClass:\"contextmenu\",style:({left:_vm.left+'px',top:_vm.top+'px'})},[_c('li',{on:{\"click\":function($event){return _vm.refreshSelectedTag(_vm.selectedTag)}}},[_vm._v(_vm._s(_vm.$t('tagsView.refresh')))]),_vm._v(\" \"),(!(_vm.selectedTag.meta&&_vm.selectedTag.meta.affix))?_c('li',{on:{\"click\":function($event){return _vm.closeSelectedTag(_vm.selectedTag)}}},[_vm._v(_vm._s(_vm.$t('tagsView.close')))]):_vm._e(),_vm._v(\" \"),_c('li',{on:{\"click\":_vm.closeOthersTags}},[_vm._v(_vm._s(_vm.$t('tagsView.closeOthers')))]),_vm._v(\" \"),_c('li',{on:{\"click\":function($event){return _vm.closeAllTags(_vm.selectedTag)}}},[_vm._v(_vm._s(_vm.$t('tagsView.closeAll')))])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMain.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMain.vue?vue&type=script&lang=js&\"","\n\n\n\n\n\n","import { render, staticRenderFns } from \"./AppMain.vue?vue&type=template&id=f852c4f2&scoped=true&\"\nimport script from \"./AppMain.vue?vue&type=script&lang=js&\"\nexport * from \"./AppMain.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AppMain.vue?vue&type=style&index=0&id=f852c4f2&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f852c4f2\",\n null\n \n)\n\ncomponent.options.__file = \"AppMain.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"app-main\"},[_c('transition',{attrs:{\"name\":\"fade-transform\",\"mode\":\"out-in\"}},[_c('keep-alive',{attrs:{\"include\":_vm.cachedViews}},[_c('router-view',{key:_vm.key})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import store from '@/store'\n\nconst { body } = document\nconst mobileWidth = 480\nconst tabletWidth = 801\nconst ratio = 3\n\nexport default {\n watch: {\n $route(route) {\n if (this.device === 'mobile' && this.sidebar.opened) {\n store.dispatch('closeSideBar', { withoutAnimation: false })\n }\n }\n },\n beforeMount() {\n window.addEventListener('resize', this.resizeHandler)\n },\n mounted() {\n const isMobile = this.isMobile()\n const isTablet = this.isTablet()\n if (isMobile || isTablet) {\n store.dispatch('toggleDevice', isMobile ? 'mobile' : 'tablet')\n store.dispatch('closeSideBar', { withoutAnimation: true })\n }\n },\n methods: {\n isMobile() {\n const rect = body.getBoundingClientRect()\n return rect.width - ratio < mobileWidth\n },\n isTablet() {\n const rect = body.getBoundingClientRect()\n return rect.width - ratio < tabletWidth && rect.width - ratio > mobileWidth\n },\n resizeHandler() {\n if (!document.hidden) {\n const isMobile = this.isMobile()\n const isTablet = this.isTablet()\n\n if (isMobile || isTablet) {\n store.dispatch('toggleDevice', isMobile ? 'mobile' : 'tablet')\n store.dispatch('closeSideBar', { withoutAnimation: true })\n } else {\n store.dispatch('toggleDevice', 'desktop')\n }\n }\n }\n }\n}\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Layout.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Layout.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Layout.vue?vue&type=template&id=767d264f&scoped=true&\"\nimport script from \"./Layout.vue?vue&type=script&lang=js&\"\nexport * from \"./Layout.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Layout.vue?vue&type=style&index=0&id=767d264f&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"767d264f\",\n null\n \n)\n\ncomponent.options.__file = \"Layout.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"app-wrapper\",class:_vm.classObj},[(_vm.device==='mobile'&&_vm.sidebar.opened)?_c('div',{staticClass:\"drawer-bg\",on:{\"click\":_vm.handleClickOutside}}):_vm._e(),_vm._v(\" \"),_c('sidebar',{staticClass:\"sidebar-container\"}),_vm._v(\" \"),_c('div',{staticClass:\"main-container\"},[_c('navbar'),_vm._v(\" \"),_c('app-main')],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport Router from 'vue-router'\n\nVue.use(Router)\n\n/* Layout */\nimport Layout from '@/views/layout/Layout'\n\nconst disabledFeatures = process.env.DISABLED_FEATURES || []\nconst settingsDisabled = disabledFeatures.includes('settings')\nconst settings = {\n path: '/settings',\n component: Layout,\n children: [\n {\n path: 'index',\n component: () => import('@/views/settings/index'),\n name: 'Settings',\n meta: { title: 'Settings', icon: 'settings', noCache: true }\n }\n ]\n}\n\nconst statusesDisabled = disabledFeatures.includes('statuses')\nconst statuses = {\n path: '/statuses',\n component: Layout,\n children: [\n {\n path: 'index',\n component: () => import('@/views/statuses/index'),\n name: 'Statuses',\n meta: { title: 'Statuses', icon: 'form', noCache: true }\n }\n ]\n}\n\nconst reportsDisabled = disabledFeatures.includes('reports')\nconst reports = {\n path: '/reports',\n component: Layout,\n children: [\n {\n path: 'index',\n component: () => import('@/views/reports/index'),\n name: 'Reports',\n meta: { title: 'Reports', icon: 'documentation', noCache: true }\n }\n ]\n}\n\nconst invitesDisabled = disabledFeatures.includes('invites')\nconst invites = {\n path: '/invites',\n component: Layout,\n children: [\n {\n path: 'index',\n component: () => import('@/views/invites/index'),\n name: 'Invites',\n meta: { title: 'Invites', icon: 'guide', noCache: true }\n }\n ]\n}\n\nconst emojiPacksDisabled = disabledFeatures.includes('emoji-packs')\nconst emojiPacks = {\n path: '/emoji_packs',\n component: Layout,\n children: [\n {\n path: 'index',\n component: () => import('@/views/emojiPacks/index'),\n name: 'Emoji Packs',\n meta: { title: 'Emoji Packs', icon: 'eye-open', noCache: true }\n }\n ]\n}\n\nconst moderationLogDisabled = disabledFeatures.includes('moderation-log')\nconst moderationLog = {\n path: '/moderation_log',\n component: Layout,\n children: [\n {\n path: 'index',\n component: () => import('@/views/moderation_log/index'),\n name: 'Moderation Log',\n meta: { title: 'moderationLog', icon: 'list', noCache: true }\n }\n ]\n}\n\nexport const constantRouterMap = [\n {\n path: '/redirect',\n component: Layout,\n hidden: true,\n children: [\n {\n path: '/redirect/:path*',\n component: () => import('@/views/redirect/index')\n }\n ]\n },\n {\n path: '/login-pleroma',\n component: () => import('@/views/login/pleroma'),\n hidden: true\n },\n {\n path: '/login',\n component: () => import('@/views/login/index'),\n hidden: true\n },\n {\n path: '/auth-redirect',\n component: () => import('@/views/login/authredirect'),\n hidden: true\n },\n {\n path: '/404',\n component: () => import('@/views/errorPage/404'),\n hidden: true\n },\n {\n path: '/401',\n component: () => import('@/views/errorPage/401'),\n hidden: true\n },\n {\n path: '',\n component: Layout,\n redirect: '/users/index'\n }\n]\n\nexport default new Router({\n // mode: 'history', // require service support\n scrollBehavior: () => ({ y: 0 }),\n routes: constantRouterMap\n})\n\nexport const asyncRouterMap = [\n {\n path: '/users',\n component: Layout,\n children: [\n {\n path: 'index',\n component: () => import('@/views/users/index'),\n name: 'Users',\n meta: { title: 'users', icon: 'peoples', noCache: true }\n }\n ]\n },\n ...(statusesDisabled ? [] : [statuses]),\n ...(reportsDisabled ? [] : [reports]),\n ...(invitesDisabled ? [] : [invites]),\n ...(emojiPacksDisabled ? [] : [emojiPacks]),\n ...(moderationLogDisabled ? [] : [moderationLog]),\n ...(settingsDisabled ? [] : [settings]),\n {\n path: '/users/:id',\n component: Layout,\n children: [\n {\n path: '',\n name: 'UsersShow',\n component: () => import('@/views/users/show')\n }\n ],\n hidden: true\n },\n { path: '*', redirect: '/404', hidden: true }\n]\n","import { asyncRouterMap, constantRouterMap } from '@/router'\n\n/**\n * 通过meta.role判断是否与当前用户权限匹配\n * @param roles\n * @param route\n */\nfunction hasPermission(roles, route) {\n if (route.meta && route.meta.roles) {\n return roles.some(role => route.meta.roles.includes(role))\n } else {\n return true\n }\n}\n\n/**\n * 递归过滤异步路由表,返回符合用户角色权限的路由表\n * @param routes asyncRouterMap\n * @param roles\n */\nfunction filterAsyncRouter(routes, roles) {\n const res = []\n\n routes.forEach(route => {\n const tmp = { ...route }\n if (hasPermission(roles, tmp)) {\n if (tmp.children) {\n tmp.children = filterAsyncRouter(tmp.children, roles)\n }\n res.push(tmp)\n }\n })\n\n return res\n}\n\nconst permission = {\n state: {\n routers: [],\n addRouters: []\n },\n mutations: {\n SET_ROUTERS: (state, routers) => {\n state.addRouters = routers\n state.routers = constantRouterMap.concat(routers)\n }\n },\n actions: {\n GenerateRoutes({ commit }, data) {\n return new Promise(resolve => {\n const { roles } = data\n let accessedRouters\n if (roles.includes('admin')) {\n accessedRouters = asyncRouterMap\n } else {\n accessedRouters = filterAsyncRouter(asyncRouterMap, roles)\n }\n commit('SET_ROUTERS', accessedRouters)\n resolve()\n })\n }\n }\n}\n\nexport default permission\n","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function fetchRelays(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/relay',\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function addRelay(relay, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/relay',\n method: 'post',\n headers: authHeaders(token),\n data: { relay_url: relay }\n })\n}\n\nexport async function deleteRelay(relay, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/relay',\n method: 'delete',\n headers: authHeaders(token),\n data: { relay_url: `https://${relay}/actor` }\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import { fetchRelays, addRelay, deleteRelay } from '@/api/relays'\n\nconst relays = {\n state: {\n fetchedRelays: [],\n loading: true\n },\n mutations: {\n SET_LOADING: (state, loading) => {\n state.loading = loading\n },\n SET_RELAYS: (state, relays) => {\n state.fetchedRelays = relays\n },\n ADD_RELAY: (state, relay) => {\n state.fetchedRelays = [...state.fetchedRelays, relay]\n },\n DELETE_RELAY: (state, relay) => {\n state.fetchedRelays = state.fetchedRelays.filter(fetchedRelay => fetchedRelay !== relay)\n }\n },\n actions: {\n async FetchRelays({ commit, getters }) {\n commit('SET_LOADING', true)\n\n const response = await fetchRelays(getters.authHost, getters.token)\n\n commit('SET_RELAYS', response.data.relays)\n commit('SET_LOADING', false)\n },\n async AddRelay({ commit, dispatch, getters }, relay) {\n commit('ADD_RELAY', relay)\n\n try {\n await addRelay(relay, getters.authHost, getters.token)\n } catch (_e) {\n return\n } finally {\n dispatch('FetchRelays')\n }\n },\n async DeleteRelay({ commit, dispatch, getters }, relay) {\n commit('DELETE_RELAY', relay)\n\n try {\n await deleteRelay(relay, getters.authHost, getters.token)\n } catch (_e) {\n return\n } finally {\n dispatch('FetchRelays')\n }\n }\n }\n}\n\nexport default relays\n","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function changeState(reports, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/reports`,\n method: 'patch',\n headers: authHeaders(token),\n data: { reports }\n })\n}\n\nexport async function fetchReports(filter, page, pageSize, authHost, token) {\n const url = filter.length > 0\n ? `/api/pleroma/admin/reports?state=${filter}&page=${page}&page_size=${pageSize}`\n : `/api/pleroma/admin/reports?page=${page}&page_size=${pageSize}`\n return await request({\n baseURL: baseName(authHost),\n url,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function createNote(content, reportID, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/reports/${reportID}/notes`,\n method: `post`,\n headers: authHeaders(token),\n data: { content }\n })\n}\n\nexport async function deleteNote(noteID, reportID, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/reports/${reportID}/notes/${noteID}`,\n method: `delete`,\n headers: authHeaders(token)\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import { changeState, fetchReports, createNote, deleteNote } from '@/api/reports'\n\nconst reports = {\n state: {\n fetchedReports: [],\n totalReportsCount: 0,\n currentPage: 1,\n pageSize: 50,\n stateFilter: '',\n loading: true\n },\n mutations: {\n SET_LAST_REPORT_ID: (state, id) => {\n state.idOfLastReport = id\n },\n SET_LOADING: (state, status) => {\n state.loading = status\n },\n SET_PAGE: (state, page) => {\n state.currentPage = page\n },\n SET_REPORTS: (state, reports) => {\n state.fetchedReports = reports\n },\n SET_REPORTS_COUNT: (state, total) => {\n state.totalReportsCount = total\n },\n SET_REPORTS_FILTER: (state, filter) => {\n state.stateFilter = filter\n }\n },\n actions: {\n async ChangeReportState({ commit, getters, state }, reportsData) {\n changeState(reportsData, getters.authHost, getters.token)\n\n const updatedReports = state.fetchedReports.map(report => {\n const updatedReportsIds = reportsData.map(({ id }) => id)\n return updatedReportsIds.includes(report.id) ? { ...report, state: reportsData[0].state } : report\n })\n\n commit('SET_REPORTS', updatedReports)\n },\n ClearFetchedReports({ commit }) {\n commit('SET_REPORTS', [])\n },\n async FetchReports({ commit, getters, state }, page) {\n commit('SET_LOADING', true)\n const { data } = await fetchReports(state.stateFilter, page, state.pageSize, getters.authHost, getters.token)\n\n commit('SET_REPORTS', data.reports)\n commit('SET_REPORTS_COUNT', data.total)\n commit('SET_PAGE', page)\n commit('SET_LOADING', false)\n },\n SetFilter({ commit }, filter) {\n commit('SET_REPORTS_FILTER', filter)\n },\n CreateReportNote({ commit, getters, state, rootState }, { content, reportID }) {\n createNote(content, reportID, getters.authHost, getters.token)\n\n const optimisticNote = {\n user: {\n avatar: rootState.user.avatar,\n display_name: rootState.user.name,\n url: `${rootState.user.authHost}/${rootState.user.name}`,\n acct: rootState.user.name\n },\n content: content,\n created_at: new Date().getTime()\n }\n\n const updatedReports = state.fetchedReports.map(report => {\n if (report.id === reportID) {\n report.notes = [...report.notes, optimisticNote]\n }\n\n return report\n })\n\n commit('SET_REPORTS', updatedReports)\n },\n DeleteReportNote({ commit, getters, state }, { noteID, reportID }) {\n deleteNote(noteID, reportID, getters.authHost, getters.token)\n\n const updatedReports = state.fetchedReports.map(report => {\n if (report.id === reportID) {\n report.notes = report.notes.filter(note => note.id !== noteID)\n }\n\n return report\n })\n\n commit('SET_REPORTS', updatedReports)\n }\n }\n}\n\nexport default reports\n","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function fetchDescription(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/config/descriptions`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function fetchSettings(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/config`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function updateSettings(configs, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/config`,\n method: 'post',\n headers: authHeaders(token),\n data: { configs }\n })\n}\n\nexport async function removeSettings(configs, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/config`,\n method: 'post',\n headers: authHeaders(token),\n data: { configs }\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import { fetchDescription, fetchSettings, removeSettings, updateSettings } from '@/api/settings'\nimport { checkPartialUpdate, formSearchObject, parseNonTuples, parseTuples, valueHasTuples, wrapUpdatedSettings } from './normalizers'\nimport _ from 'lodash'\n\nconst settings = {\n state: {\n activeTab: 'instance',\n configDisabled: true,\n db: {},\n description: [],\n loading: true,\n searchData: {},\n settings: {},\n updatedSettings: {}\n },\n mutations: {\n CLEAR_UPDATED_SETTINGS: (state) => {\n state.updatedSettings = {}\n },\n REMOVE_SETTING_FROM_UPDATED: (state, { group, key, subkeys }) => {\n if (_.get(state.updatedSettings, [group, key, subkeys[0]])) {\n const { [subkeys[0]]: value, ...updatedSettings } = state.updatedSettings[group][key]\n state.updatedSettings = updatedSettings\n }\n },\n SET_ACTIVE_TAB: (state, tab) => {\n state.activeTab = tab\n },\n SET_DESCRIPTION: (state, data) => {\n state.description = data\n },\n SET_LOADING: (state, status) => {\n state.loading = status\n },\n SET_SEARCH: (state, searchObject) => {\n state.searchData = searchObject\n },\n SET_SETTINGS: (state, data) => {\n const newSettings = data.reduce((acc, { group, key, value }) => {\n const parsedValue = valueHasTuples(key, value)\n ? { value: parseNonTuples(key, value) }\n : parseTuples(value, key)\n acc[group] = acc[group] ? { ...acc[group], [key]: parsedValue } : { [key]: parsedValue }\n return acc\n }, {})\n\n const newDbSettings = data.reduce((acc, { group, key, db }) => {\n if (db) {\n acc[group] = acc[group] ? { ...acc[group], [key]: db } : { [key]: db }\n }\n return acc\n }, {})\n\n state.settings = newSettings\n state.db = newDbSettings\n },\n TOGGLE_TABS: (state, status) => {\n state.configDisabled = status\n },\n UPDATE_SETTINGS: (state, { group, key, input, value, type }) => {\n const updatedSetting = !state.updatedSettings[group] || (key === 'Pleroma.Emails.Mailer' && input === ':adapter')\n ? { [key]: { [input]: [type, value] }}\n : { [key]: { ...state.updatedSettings[group][key], ...{ [input]: [type, value] }}}\n state.updatedSettings[group] = { ...state.updatedSettings[group], ...updatedSetting }\n },\n UPDATE_STATE: (state, { group, key, input, value }) => {\n const updatedState = key === 'Pleroma.Emails.Mailer' && input === ':adapter'\n ? { [key]: { [input]: value }}\n : { [key]: { ...state.settings[group][key], ...{ [input]: value }}}\n state.settings[group] = { ...state.settings[group], ...updatedState }\n }\n },\n actions: {\n async FetchSettings({ commit, getters }) {\n commit('SET_LOADING', true)\n try {\n const response = await fetchSettings(getters.authHost, getters.token)\n const description = await fetchDescription(getters.authHost, getters.token)\n commit('SET_DESCRIPTION', description.data)\n const searchObject = formSearchObject(description.data)\n commit('SET_SEARCH', searchObject)\n commit('SET_SETTINGS', response.data.configs)\n } catch (_e) {\n commit('TOGGLE_TABS', true)\n commit('SET_ACTIVE_TAB', 'relays')\n commit('SET_LOADING', false)\n return\n }\n commit('TOGGLE_TABS', false)\n commit('SET_LOADING', false)\n },\n async RemoveSetting({ commit, getters }, configs) {\n await removeSettings(configs, getters.authHost, getters.token)\n const response = await fetchSettings(getters.authHost, getters.token)\n const { group, key, subkeys } = configs[0]\n commit('SET_SETTINGS', response.data.configs)\n commit('TOGGLE_REBOOT', response.data.need_reboot)\n commit('REMOVE_SETTING_FROM_UPDATED', { group, key, subkeys: subkeys || [] })\n },\n SetActiveTab({ commit }, tab) {\n commit('SET_ACTIVE_TAB', tab)\n },\n async SubmitChanges({ getters, commit, state }) {\n const updatedData = checkPartialUpdate(state.settings, state.updatedSettings, state.description)\n const configs = Object.keys(updatedData).reduce((acc, group) => {\n return [...acc, ...wrapUpdatedSettings(group, updatedData[group], state.settings)]\n }, [])\n\n await updateSettings(configs, getters.authHost, getters.token)\n const response = await fetchSettings(getters.authHost, getters.token)\n commit('SET_SETTINGS', response.data.configs)\n commit('TOGGLE_REBOOT', response.data.need_reboot)\n commit('CLEAR_UPDATED_SETTINGS')\n },\n UpdateSettings({ commit }, { group, key, input, value, type }) {\n key\n ? commit('UPDATE_SETTINGS', { group, key, input, value, type })\n : commit('UPDATE_SETTINGS', { group, key: input, input: '_value', value, type })\n },\n async UpdateState({ commit, getters, state }, { group, key, input, value }) {\n if (key === 'Pleroma.Emails.Mailer' && input === ':adapter') {\n const subkeys = Object.keys(state.settings[group][key]).filter(el => el !== ':adapter')\n await removeSettings([{ group, key, delete: true, subkeys }], getters.authHost, getters.token)\n } else if (key === 'Pleroma.Upload' && input === ':uploader') {\n const deletedKey = value === 'Pleroma.Uploaders.Local' ? 'Pleroma.Uploaders.S3' : 'Pleroma.Uploaders.Local'\n await removeSettings([{ group, key: deletedKey, delete: true }], getters.authHost, getters.token)\n }\n key\n ? commit('UPDATE_STATE', { group, key, input, value })\n : commit('UPDATE_STATE', { group, key: input, input: 'value', value })\n }\n }\n}\n\nexport default settings\n","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function changeStatusScope(id, sensitive, visibility, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/statuses/${id}`,\n method: 'put',\n headers: authHeaders(token),\n data: { sensitive, visibility }\n })\n}\n\nexport async function deleteStatus(id, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/statuses/${id}`,\n method: 'delete',\n headers: authHeaders(token)\n })\n}\n\nexport async function fetchStatuses({ godmode, localOnly, authHost, token, pageSize, page }) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/statuses?godmode=${godmode}&local_only=${localOnly}&page=${page}&page_size=${pageSize}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function fetchStatusesCount(instance, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: instance ? `/api/pleroma/admin/stats?instance=${instance}` : `/api/pleroma/admin/stats`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function fetchStatusesByInstance({ instance, authHost, token, pageSize, page }) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/instances/${instance}/statuses?page=${page}&page_size=${pageSize}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import { changeStatusScope, deleteStatus, fetchStatuses, fetchStatusesCount, fetchStatusesByInstance } from '@/api/status'\n\nconst status = {\n state: {\n fetchedStatuses: [],\n loading: false,\n statusesByInstance: {\n selectedInstance: '',\n showLocal: false,\n showPrivate: false,\n page: 1,\n pageSize: 20,\n buttonLoading: false,\n allLoaded: false\n },\n statusVisibility: {}\n },\n mutations: {\n CHANGE_GODMODE_CHECKBOX_VALUE: (state, value) => {\n state.statusesByInstance.showPrivate = value\n },\n CHANGE_LOCAL_CHECKBOX_VALUE: (state, value) => {\n state.statusesByInstance.showLocal = value\n },\n CHANGE_PAGE: (state, page) => {\n state.statusesByInstance.page = page\n },\n CHANGE_SELECTED_INSTANCE: (state, instance) => {\n state.statusesByInstance.selectedInstance = instance\n },\n SET_STATUSES_BY_INSTANCE: (state, statuses) => {\n state.fetchedStatuses = statuses\n },\n PUSH_STATUSES: (state, statuses) => {\n state.fetchedStatuses = [...state.fetchedStatuses, ...statuses]\n },\n SET_ALL_LOADED: (state, status) => {\n state.statusesByInstance.allLoaded = status\n },\n SET_BUTTON_LOADING: (state, status) => {\n state.statusesByInstance.buttonLoading = status\n },\n SET_LOADING: (state, status) => {\n state.loading = status\n },\n SET_STATUS_VISIBILITY: (state, visibility) => {\n state.statusVisibility = visibility\n }\n },\n actions: {\n async ChangeStatusScope({ dispatch, getters }, { statusId, isSensitive, visibility, reportCurrentPage, userId, godmode, fetchStatusesByInstance }) {\n await changeStatusScope(statusId, isSensitive, visibility, getters.authHost, getters.token)\n if (reportCurrentPage !== 0) { // called from Reports\n dispatch('FetchReports', reportCurrentPage)\n } else if (userId.length > 0) { // called from User profile\n dispatch('FetchUserStatuses', { userId, godmode })\n } else if (fetchStatusesByInstance) { // called from Statuses by Instance\n dispatch('FetchStatusesByInstance')\n }\n },\n ClearState({ commit }) {\n commit('CHANGE_SELECTED_INSTANCE', '')\n commit('SET_STATUSES_BY_INSTANCE', [])\n commit('CHANGE_LOCAL_CHECKBOX_VALUE', false)\n commit('CHANGE_GODMODE_CHECKBOX_VALUE', false)\n commit('SET_ALL_LOADED', false)\n commit('CHANGE_PAGE', 1)\n },\n async DeleteStatus({ dispatch, getters }, { statusId, reportCurrentPage, userId, godmode, fetchStatusesByInstance }) {\n await deleteStatus(statusId, getters.authHost, getters.token)\n if (reportCurrentPage !== 0) { // called from Reports\n dispatch('FetchReports', reportCurrentPage)\n } else if (userId.length > 0) { // called from User profile\n dispatch('FetchUserStatuses', { userId, godmode })\n } else if (fetchStatusesByInstance) { // called from Statuses by Instance\n dispatch('FetchStatusesByInstance')\n }\n },\n async FetchStatusesCount({ commit, getters }, instance) {\n commit('SET_LOADING', true)\n const { data } = await fetchStatusesCount(instance, getters.authHost, getters.token)\n commit('SET_STATUS_VISIBILITY', data.status_visibility)\n commit('SET_LOADING', false)\n },\n async FetchStatusesByInstance({ commit, dispatch, getters, state, rootState }) {\n commit('SET_LOADING', true)\n dispatch('FetchStatusesCount', state.statusesByInstance.selectedInstance)\n if (state.statusesByInstance.selectedInstance === '') {\n commit('SET_STATUSES_BY_INSTANCE', [])\n } else {\n const statuses = state.statusesByInstance.selectedInstance === rootState.user.authHost\n ? await fetchStatuses(\n {\n godmode: state.statusesByInstance.showPrivate,\n localOnly: state.statusesByInstance.showLocal,\n authHost: getters.authHost,\n token: getters.token,\n pageSize: state.statusesByInstance.pageSize,\n page: state.statusesByInstance.page\n })\n : await fetchStatusesByInstance(\n {\n instance: state.statusesByInstance.selectedInstance,\n authHost: getters.authHost,\n token: getters.token,\n pageSize: state.statusesByInstance.pageSize,\n page: state.statusesByInstance.page\n })\n commit('SET_STATUSES_BY_INSTANCE', statuses.data)\n if (statuses.data.length < state.statusesByInstance.pageSize) {\n commit('SET_ALL_LOADED', true)\n }\n }\n commit('SET_LOADING', false)\n },\n async FetchStatusesPageByInstance({ commit, getters, rootState, state }) {\n commit('SET_BUTTON_LOADING', true)\n const statuses = state.statusesByInstance.selectedInstance === rootState.user.authHost\n ? await fetchStatuses(\n {\n godmode: state.statusesByInstance.showPrivate,\n localOnly: state.statusesByInstance.showLocal,\n authHost: getters.authHost,\n token: getters.token,\n pageSize: state.statusesByInstance.pageSize,\n page: state.statusesByInstance.page\n })\n : await fetchStatusesByInstance(\n {\n instance: state.statusesByInstance.selectedInstance,\n authHost: getters.authHost,\n token: getters.token,\n pageSize: state.statusesByInstance.pageSize,\n page: state.statusesByInstance.page\n })\n commit('PUSH_STATUSES', statuses.data)\n commit('SET_BUTTON_LOADING', false)\n if (statuses.data.length < state.statusesByInstance.pageSize) {\n commit('SET_ALL_LOADED', true)\n }\n },\n HandleGodmodeCheckboxChange({ commit, dispatch }, value) {\n dispatch('HandlePageChange', 1)\n commit('SET_ALL_LOADED', false)\n\n commit('CHANGE_GODMODE_CHECKBOX_VALUE', value)\n dispatch('FetchStatusesByInstance')\n },\n HandleLocalCheckboxChange({ commit, dispatch }, value) {\n dispatch('HandlePageChange', 1)\n commit('SET_ALL_LOADED', false)\n\n commit('CHANGE_LOCAL_CHECKBOX_VALUE', value)\n dispatch('FetchStatusesByInstance')\n },\n HandleFilterChange({ commit }, instance) {\n commit('CHANGE_SELECTED_INSTANCE', instance)\n commit('SET_ALL_LOADED', false)\n },\n HandlePageChange({ commit }, page) {\n commit('CHANGE_PAGE', page)\n }\n }\n}\n\nexport default status\n","const tagsView = {\n state: {\n visitedViews: [],\n cachedViews: []\n },\n mutations: {\n ADD_VISITED_VIEW: (state, view) => {\n if (state.visitedViews.some(v => v.path === view.path)) return\n state.visitedViews.push(\n Object.assign({}, view, {\n title: view.meta.title || 'no-name'\n })\n )\n },\n ADD_CACHED_VIEW: (state, view) => {\n if (state.cachedViews.includes(view.name)) return\n if (!view.meta.noCache) {\n state.cachedViews.push(view.name)\n }\n },\n\n DEL_VISITED_VIEW: (state, view) => {\n for (const [i, v] of state.visitedViews.entries()) {\n if (v.path === view.path) {\n state.visitedViews.splice(i, 1)\n break\n }\n }\n },\n DEL_CACHED_VIEW: (state, view) => {\n for (const i of state.cachedViews) {\n if (i === view.name) {\n const index = state.cachedViews.indexOf(i)\n state.cachedViews.splice(index, 1)\n break\n }\n }\n },\n\n DEL_OTHERS_VISITED_VIEWS: (state, view) => {\n state.visitedViews = state.visitedViews.filter(v => {\n return v.meta.affix || v.path === view.path\n })\n },\n DEL_OTHERS_CACHED_VIEWS: (state, view) => {\n for (const i of state.cachedViews) {\n if (i === view.name) {\n const index = state.cachedViews.indexOf(i)\n state.cachedViews = state.cachedViews.slice(index, index + 1)\n break\n }\n }\n },\n\n DEL_ALL_VISITED_VIEWS: state => {\n // keep affix tags\n const affixTags = state.visitedViews.filter(tag => tag.meta.affix)\n state.visitedViews = affixTags\n },\n DEL_ALL_CACHED_VIEWS: state => {\n state.cachedViews = []\n },\n\n UPDATE_VISITED_VIEW: (state, view) => {\n for (let v of state.visitedViews) {\n if (v.path === view.path) {\n v = Object.assign(v, view)\n break\n }\n }\n }\n\n },\n actions: {\n addView({ dispatch }, view) {\n dispatch('addVisitedView', view)\n dispatch('addCachedView', view)\n },\n addVisitedView({ commit }, view) {\n commit('ADD_VISITED_VIEW', view)\n },\n addCachedView({ commit }, view) {\n commit('ADD_CACHED_VIEW', view)\n },\n\n delView({ dispatch, state }, view) {\n return new Promise(resolve => {\n dispatch('delVisitedView', view)\n dispatch('delCachedView', view)\n resolve({\n visitedViews: [...state.visitedViews],\n cachedViews: [...state.cachedViews]\n })\n })\n },\n delVisitedView({ commit, state }, view) {\n return new Promise(resolve => {\n commit('DEL_VISITED_VIEW', view)\n resolve([...state.visitedViews])\n })\n },\n delCachedView({ commit, state }, view) {\n return new Promise(resolve => {\n commit('DEL_CACHED_VIEW', view)\n resolve([...state.cachedViews])\n })\n },\n\n delOthersViews({ dispatch, state }, view) {\n return new Promise(resolve => {\n dispatch('delOthersVisitedViews', view)\n dispatch('delOthersCachedViews', view)\n resolve({\n visitedViews: [...state.visitedViews],\n cachedViews: [...state.cachedViews]\n })\n })\n },\n delOthersVisitedViews({ commit, state }, view) {\n return new Promise(resolve => {\n commit('DEL_OTHERS_VISITED_VIEWS', view)\n resolve([...state.visitedViews])\n })\n },\n delOthersCachedViews({ commit, state }, view) {\n return new Promise(resolve => {\n commit('DEL_OTHERS_CACHED_VIEWS', view)\n resolve([...state.cachedViews])\n })\n },\n\n delAllViews({ dispatch, state }, view) {\n return new Promise(resolve => {\n dispatch('delAllVisitedViews', view)\n dispatch('delAllCachedViews', view)\n resolve({\n visitedViews: [...state.visitedViews],\n cachedViews: [...state.cachedViews]\n })\n })\n },\n delAllVisitedViews({ commit, state }) {\n return new Promise(resolve => {\n commit('DEL_ALL_VISITED_VIEWS')\n resolve([...state.visitedViews])\n })\n },\n delAllCachedViews({ commit, state }) {\n return new Promise(resolve => {\n commit('DEL_ALL_CACHED_VIEWS')\n resolve([...state.cachedViews])\n })\n },\n\n updateVisitedView({ commit }, view) {\n commit('UPDATE_VISITED_VIEW', view)\n }\n }\n}\n\nexport default tagsView\n","import request from '@/utils/request'\nimport { baseName } from './utils'\n\nexport async function loginByUsername(username, password, authHost) {\n const appsRequest = await request({\n baseURL: baseName(authHost),\n url: '/api/v1/apps',\n method: 'post',\n data: {\n client_name: `AdminFE_${Math.random()}`,\n redirect_uris: `${window.location.origin}/oauth-callback`,\n scopes: 'read write follow push admin'\n }\n })\n\n const app = appsRequest.data\n\n return request({\n baseURL: baseName(authHost),\n url: '/oauth/token',\n method: 'post',\n data: {\n client_id: app.client_id,\n client_secret: app.client_secret,\n grant_type: 'password',\n username: username,\n password: password\n }\n })\n}\n\nexport function getUserInfo(token, authHost) {\n return request({\n baseURL: baseName(authHost),\n url: '/api/v1/accounts/verify_credentials',\n method: 'get',\n headers: token ? { 'Authorization': `Bearer ${token}` } : {}\n })\n}\n\nconst oauth = { loginByUsername, getUserInfo }\n\nexport default oauth\n","import request from '@/utils/request'\nimport { baseName } from './utils'\n\nexport async function getNodeInfo(authHost) {\n return await request({\n baseURL: baseName(authHost),\n url: `/nodeinfo/2.0.json`,\n method: 'get'\n })\n}\n","import { loginByUsername, getUserInfo } from '@/api/login'\nimport { getNodeInfo } from '@/api/nodeInfo'\nimport { getToken, setToken, removeToken, getAuthHost, setAuthHost, removeAuthHost } from '@/utils/auth'\n\nconst user = {\n state: {\n user: '',\n id: '',\n status: '',\n code: '',\n token: getToken(),\n authHost: getAuthHost(),\n name: '',\n avatar: '',\n introduction: '',\n roles: [],\n setting: {\n articlePlatform: []\n },\n nodeInfo: {}\n },\n\n mutations: {\n SET_CODE: (state, code) => {\n state.code = code\n },\n SET_TOKEN: (state, token) => {\n state.token = token\n },\n SET_INTRODUCTION: (state, introduction) => {\n state.introduction = introduction\n },\n SET_SETTING: (state, setting) => {\n state.setting = setting\n },\n SET_STATUS: (state, status) => {\n state.status = status\n },\n SET_NAME: (state, name) => {\n state.name = name\n },\n SET_AVATAR: (state, avatar) => {\n state.avatar = avatar\n },\n SET_ROLES: (state, roles) => {\n state.roles = roles\n },\n SET_ID: (state, id) => {\n state.id = id\n },\n SET_AUTH_HOST: (state, authHost) => {\n state.authHost = authHost\n },\n SET_NODE_INFO: (state, nodeInfo) => {\n state.nodeInfo = nodeInfo\n }\n },\n\n actions: {\n LoginByUsername({ commit, dispatch }, { username, authHost, password }) {\n return new Promise((resolve, reject) => {\n loginByUsername(username, password, authHost).then(response => {\n const data = response.data\n commit('SET_TOKEN', data.access_token)\n commit('SET_AUTH_HOST', authHost)\n setToken(data.access_token)\n setAuthHost(authHost)\n resolve()\n }).catch(error => {\n dispatch('addErrorLog', { message: error.message })\n reject(error)\n })\n })\n },\n async GetNodeInfo({ commit, dispatch, state }) {\n const nodeInfo = await getNodeInfo(state.authHost)\n\n commit('SET_NODE_INFO', nodeInfo.data)\n dispatch('SetInvitesEnabled', nodeInfo.data.metadata.invitesEnabled)\n },\n GetUserInfo({ commit, state }) {\n return new Promise((resolve, reject) => {\n getUserInfo(state.token, state.authHost).then(response => {\n const data = response.data\n const message = 'This user doesn\\`t have admin rights. Try another credentials or see the ' +\n 'docs' +\n ' to find out how to make this user an admin'\n\n if (!data) {\n reject('Verification failed, please login again.')\n }\n\n if (data.pleroma && data.pleroma.is_admin) {\n commit('SET_ROLES', ['admin'])\n } else {\n reject(message)\n }\n\n commit('SET_NAME', data.username)\n commit('SET_ID', data.id)\n commit('SET_AVATAR', data.avatar)\n commit('SET_INTRODUCTION', '')\n resolve(response)\n }).catch(error => {\n reject(error)\n })\n })\n },\n LogOut({ commit }) {\n commit('SET_TOKEN', '')\n commit('SET_ROLES', [])\n removeToken()\n removeAuthHost()\n },\n FedLogOut({ commit }) {\n return new Promise(resolve => {\n commit('SET_TOKEN', '')\n removeToken()\n removeAuthHost()\n resolve()\n })\n },\n async LoginByPleromaFE({ commit, dispatch }, { token }) {\n commit('SET_TOKEN', token)\n setToken(token)\n commit('SET_AUTH_HOST', window.location.host)\n setAuthHost(window.location.host)\n\n dispatch('GetUserInfo')\n }\n }\n}\n\nexport default user\n","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function activateUsers(nicknames, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/activate`,\n method: 'patch',\n headers: authHeaders(token),\n data: { nicknames }\n })\n}\n\nexport async function addRight(nicknames, right, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/permission_group/${right}`,\n method: 'post',\n headers: authHeaders(token),\n data: { nicknames }\n })\n}\n\nexport async function createNewAccount(nickname, email, password, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/users',\n method: 'post',\n headers: authHeaders(token),\n data: { users: [{ nickname, email, password }] }\n })\n}\n\nexport async function deactivateUsers(nicknames, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/deactivate`,\n method: 'patch',\n headers: authHeaders(token),\n data: { nicknames }\n })\n}\n\nexport async function deleteRight(nicknames, right, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/permission_group/${right}`,\n method: 'delete',\n headers: authHeaders(token),\n data: { nicknames }\n })\n}\n\nexport async function deleteUsers(nicknames, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users`,\n method: 'delete',\n headers: authHeaders(token),\n data: { nicknames }\n })\n}\n\nexport async function fetchUser(id, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/${id}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function fetchUserCredentials(nickname, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/${nickname}/credentials`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function updateUserCredentials(nickname, credentials, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/${nickname}/credentials`,\n method: 'patch',\n headers: authHeaders(token),\n data: credentials\n })\n}\n\nexport async function fetchUsers(filters, authHost, token, page = 1) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users?page=${page}&filters=${filters}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function getPasswordResetToken(nickname, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/${nickname}/password_reset`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function forcePasswordReset(nicknames, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/force_password_reset`,\n method: 'patch',\n headers: authHeaders(token),\n data: { nicknames }\n })\n}\n\nexport async function searchUsers(query, filters, authHost, token, page = 1) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users?query=${query}&page=${page}&filters=${filters}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function tagUser(nicknames, tags, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/users/tag',\n method: 'put',\n headers: authHeaders(token),\n data: { nicknames, tags }\n })\n}\n\nexport async function untagUser(nicknames, tags, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/users/tag',\n method: 'delete',\n headers: authHeaders(token),\n data: { nicknames, tags }\n })\n}\n\nexport async function fetchUserStatuses(id, authHost, godmode, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/${id}/statuses?godmode=${godmode}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function confirmUserEmail(nicknames, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/users/confirm_email',\n method: 'patch',\n headers: authHeaders(token),\n data: { nicknames }\n })\n}\n\nexport async function resendConfirmationEmail(nicknames, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/users/resend_confirmation_email',\n method: 'patch',\n headers: authHeaders(token),\n data: { nicknames }\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import { fetchUser, fetchUserStatuses, fetchUserCredentials, updateUserCredentials } from '@/api/users'\n\nconst userProfile = {\n state: {\n statuses: [],\n statusesLoading: true,\n user: {},\n userCredentials: {},\n userProfileLoading: true\n },\n mutations: {\n SET_STATUSES: (state, statuses) => {\n state.statuses = statuses\n },\n SET_STATUSES_LOADING: (state, status) => {\n state.statusesLoading = status\n },\n SET_USER: (state, user) => {\n state.user = user\n },\n SET_USER_PROFILE_LOADING: (state, status) => {\n state.userProfileLoading = status\n },\n SET_USER_CREDENTIALS: (state, userCredentials) => {\n state.userCredentials = userCredentials\n }\n },\n actions: {\n async FetchUserProfile({ commit, dispatch, getters }, { userId, godmode }) {\n commit('SET_USER_PROFILE_LOADING', true)\n\n const userResponse = await fetchUser(userId, getters.authHost, getters.token)\n commit('SET_USER', userResponse.data)\n commit('SET_USER_PROFILE_LOADING', false)\n\n dispatch('FetchUserStatuses', { userId, godmode })\n },\n async FetchUserStatuses({ commit, getters }, { userId, godmode }) {\n commit('SET_STATUSES_LOADING', true)\n\n const statuses = await fetchUserStatuses(userId, getters.authHost, godmode, getters.token)\n\n commit('SET_STATUSES', statuses.data)\n commit('SET_STATUSES_LOADING', false)\n },\n async FetchUserCredentials({ commit, getters }, { nickname }) {\n const userResponse = await fetchUserCredentials(nickname, getters.authHost, getters.token)\n commit('SET_USER_CREDENTIALS', userResponse.data)\n },\n async UpdateUserCredentials({ dispatch, getters }, { nickname, credentials }) {\n await updateUserCredentials(nickname, credentials, getters.authHost, getters.token)\n dispatch('FetchUserCredentials', { nickname })\n }\n }\n}\n\nexport default userProfile\n","import { Message } from 'element-ui'\nimport i18n from '@/lang'\nimport {\n activateUsers,\n addRight,\n createNewAccount,\n deactivateUsers,\n deleteRight,\n deleteUsers,\n fetchUsers,\n getPasswordResetToken,\n searchUsers,\n tagUser,\n untagUser,\n forcePasswordReset,\n confirmUserEmail,\n resendConfirmationEmail\n} from '@/api/users'\n\nconst users = {\n state: {\n fetchedUsers: [],\n loading: true,\n searchQuery: '',\n totalUsersCount: 0,\n currentPage: 1,\n filters: {\n local: false,\n external: false,\n active: false,\n deactivated: false\n },\n passwordResetToken: {\n token: '',\n link: ''\n }\n },\n mutations: {\n SET_USERS: (state, users) => {\n state.fetchedUsers = users\n },\n SET_LOADING: (state, status) => {\n state.loading = status\n },\n SWAP_USERS: (state, users) => {\n const usersWithoutSwapped = users.reduce((acc, user) => {\n return acc.filter(u => u.id !== user.id)\n }, state.fetchedUsers)\n\n if (state.fetchedUsers.length === 0) {\n return\n }\n\n state.fetchedUsers = [...usersWithoutSwapped, ...users].sort((a, b) =>\n a.nickname.localeCompare(b.nickname)\n )\n },\n SET_COUNT: (state, count) => {\n state.totalUsersCount = count\n },\n SET_PAGE: (state, page) => {\n state.currentPage = page\n },\n SET_PAGE_SIZE: (state, pageSize) => {\n state.pageSize = pageSize\n },\n SET_PASSWORD_RESET_TOKEN: (state, { token, link }) => {\n state.passwordResetToken.token = token\n state.passwordResetToken.link = link\n },\n SET_SEARCH_QUERY: (state, query) => {\n state.searchQuery = query\n },\n SET_USERS_FILTERS: (state, filters) => {\n state.filters = filters\n },\n SET_USER_PROFILE: (state, user) => {\n state.userProfile = user\n }\n },\n actions: {\n async ActivateUsers({ dispatch, getters }, { users, _userId }) {\n const updatedUsers = users.map(user => {\n return { ...user, deactivated: false }\n })\n const nicknames = users.map(user => user.nickname)\n const callApiFn = async() => await activateUsers(nicknames, getters.authHost, getters.token)\n\n dispatch('ApplyChanges', { updatedUsers, callApiFn, userId: _userId })\n },\n async ApplyChanges({ commit, dispatch, state }, { updatedUsers, callApiFn, userId }) {\n commit('SWAP_USERS', updatedUsers)\n\n try {\n await callApiFn()\n } catch (_e) {\n return\n } finally {\n dispatch('SearchUsers', { query: state.searchQuery, page: state.currentPage })\n }\n\n if (userId) {\n dispatch('FetchUserProfile', { userId, godmode: false })\n }\n dispatch('SuccessMessage')\n },\n async AddRight({ dispatch, getters }, { users, right, _userId }) {\n const updatedUsers = users.map(user => {\n return user.local ? { ...user, roles: { ...user.roles, [right]: true }} : user\n })\n const nicknames = users.map(user => user.nickname)\n const callApiFn = async() => await addRight(nicknames, right, getters.authHost, getters.token)\n\n dispatch('ApplyChanges', { updatedUsers, callApiFn, userId: _userId })\n },\n async AddTag({ dispatch, getters }, { users, tag, _userId }) {\n const updatedUsers = users.map(user => {\n return { ...user, tags: [...user.tags, tag] }\n })\n const nicknames = users.map(user => user.nickname)\n const callApiFn = async() => await tagUser(nicknames, [tag], getters.authHost, getters.token)\n\n dispatch('ApplyChanges', { updatedUsers, callApiFn, userId: _userId })\n },\n async ClearFilters({ commit, dispatch, state }) {\n commit('CLEAR_USERS_FILTERS')\n dispatch('SearchUsers', { query: state.searchQuery, page: 1 })\n },\n async CreateNewAccount({ dispatch, getters, state }, { nickname, email, password }) {\n try {\n await createNewAccount(nickname, email, password, getters.authHost, getters.token)\n } catch (_e) {\n return\n } finally {\n dispatch('SearchUsers', { query: state.searchQuery, page: state.currentPage })\n }\n dispatch('SuccessMessage')\n },\n async DeactivateUsers({ dispatch, getters }, { users, _userId }) {\n const updatedUsers = users.map(user => {\n return { ...user, deactivated: true }\n })\n const nicknames = users.map(user => user.nickname)\n const callApiFn = async() => await deactivateUsers(nicknames, getters.authHost, getters.token)\n\n dispatch('ApplyChanges', { updatedUsers, callApiFn, userId: _userId })\n },\n async ConfirmUsersEmail({ dispatch, getters }, { users, _userId }) {\n const updatedUsers = users.map(user => {\n return { ...user, confirmation_pending: false }\n })\n const nicknames = users.map(user => user.nickname)\n const callApiFn = async() => await confirmUserEmail(nicknames, getters.authHost, getters.token)\n\n dispatch('ApplyChanges', { updatedUsers, callApiFn, userId: _userId })\n },\n async ResendConfirmationEmail({ dispatch, getters }, users) {\n const usersNicknames = users.map(user => user.nickname)\n try {\n await resendConfirmationEmail(usersNicknames, getters.authHost, getters.token)\n } catch (_e) {\n return\n }\n dispatch('SuccessMessage')\n },\n async DeleteRight({ dispatch, getters }, { users, right, _userId }) {\n const updatedUsers = users.map(user => {\n return user.local ? { ...user, roles: { ...user.roles, [right]: false }} : user\n })\n const nicknames = users.map(user => user.nickname)\n const callApiFn = async() => await deleteRight(nicknames, right, getters.authHost, getters.token)\n\n dispatch('ApplyChanges', { updatedUsers, callApiFn, userId: _userId })\n },\n async DeleteUsers({ commit, dispatch, getters, state }, { users, _userId }) {\n const usersNicknames = users.map(user => user.nickname)\n try {\n await deleteUsers(usersNicknames, getters.authHost, getters.token)\n } catch (_e) {\n return\n }\n const deletedUsersIds = users.map(deletedUser => deletedUser.id)\n const updatedUsers = state.fetchedUsers.filter(user => !deletedUsersIds.includes(user.id))\n commit('SET_USERS', updatedUsers)\n\n dispatch('FetchUserProfile', { userId: _userId, godmode: false })\n dispatch('SuccessMessage')\n },\n async FetchUsers({ commit, dispatch, getters, state }, { page }) {\n commit('SET_LOADING', true)\n const filters = Object.keys(state.filters).filter(filter => state.filters[filter]).join()\n const response = await fetchUsers(filters, getters.authHost, getters.token, page)\n await dispatch('GetNodeInfo')\n loadUsers(commit, page, response.data)\n },\n async GetPasswordResetToken({ commit, getters }, nickname) {\n const { data } = await getPasswordResetToken(nickname, getters.authHost, getters.token)\n commit('SET_PASSWORD_RESET_TOKEN', data)\n },\n RemovePasswordToken({ commit }) {\n commit('SET_PASSWORD_RESET_TOKEN', { link: '', token: '' })\n },\n async RemoveTag({ dispatch, getters }, { users, tag, _userId }) {\n const updatedUsers = users.map(user => {\n return { ...user, tags: user.tags.filter(userTag => userTag !== tag) }\n })\n const nicknames = users.map(user => user.nickname)\n const callApiFn = async() => await untagUser(nicknames, [tag], getters.authHost, getters.token)\n\n dispatch('ApplyChanges', { updatedUsers, callApiFn, userId: _userId })\n },\n async RequirePasswordReset({ dispatch, getters }, users) {\n const nicknames = users.map(user => user.nickname)\n try {\n await forcePasswordReset(nicknames, getters.authHost, getters.token)\n } catch (_e) {\n return\n }\n dispatch('SuccessMessage')\n },\n async SearchUsers({ commit, dispatch, state, getters }, { query, page }) {\n if (query.length === 0) {\n commit('SET_SEARCH_QUERY', query)\n dispatch('FetchUsers', { page })\n } else {\n commit('SET_LOADING', true)\n commit('SET_SEARCH_QUERY', query)\n\n const filters = Object.keys(state.filters).filter(filter => state.filters[filter]).join()\n const response = await searchUsers(query, filters, getters.authHost, getters.token, page)\n\n loadUsers(commit, page, response.data)\n }\n },\n SuccessMessage() {\n Message.success({\n message: i18n.t('users.completed'),\n duration: 5 * 1000\n })\n },\n async ToggleUsersFilter({ commit, dispatch, state }, filters) {\n const defaultFilters = {\n local: false,\n external: false,\n active: false,\n deactivated: false\n }\n const currentFilters = { ...defaultFilters, ...filters }\n commit('SET_USERS_FILTERS', currentFilters)\n dispatch('SearchUsers', { query: state.searchQuery, page: 1 })\n }\n }\n}\n\nconst loadUsers = (commit, page, { users, count, page_size }) => {\n commit('SET_USERS', users)\n commit('SET_COUNT', count)\n commit('SET_PAGE', page)\n commit('SET_PAGE_SIZE', page_size)\n commit('SET_LOADING', false)\n}\n\nexport default users\n","const getters = {\n sidebar: state => state.app.sidebar,\n language: state => state.app.language,\n size: state => state.app.size,\n device: state => state.app.device,\n visitedViews: state => state.tagsView.visitedViews,\n cachedViews: state => state.tagsView.cachedViews,\n token: state => state.user.token,\n avatar: state => state.user.avatar,\n name: state => state.user.name,\n introduction: state => state.user.introduction,\n status: state => state.user.status,\n roles: state => state.user.roles,\n setting: state => state.user.setting,\n permission_routers: state => state.permission.routers,\n addRouters: state => state.permission.addRouters,\n errorLogs: state => state.errorLog.logs,\n users: state => state.users.fetchedUsers,\n authHost: state => state.user.authHost,\n settings: state => state.settings\n}\nexport default getters\n","import {\n addNewEmojiFile,\n createPack,\n deleteEmojiFile,\n deletePack,\n downloadFrom,\n importFromFS,\n listPacks,\n listRemotePacks,\n reloadEmoji,\n savePackMetadata,\n updateEmojiFile\n} from '@/api/emojiPacks'\nimport i18n from '@/lang'\nimport { Message } from 'element-ui'\n\nimport Vue from 'vue'\n\nconst packs = {\n state: {\n activeCollapseItems: [],\n localPacks: {},\n remoteInstance: '',\n remotePacks: {}\n },\n mutations: {\n SET_ACTIVE_COLLAPSE_ITEMS: (state, items) => {\n state.activeCollapseItems = items\n },\n SET_LOCAL_PACKS: (state, packs) => {\n state.localPacks = packs\n },\n SET_REMOTE_INSTANCE: (state, name) => {\n state.remoteInstance = name\n },\n SET_REMOTE_PACKS: (state, packs) => {\n state.remotePacks = packs\n },\n UPDATE_LOCAL_PACK_VAL: (state, { name, key, value }) => {\n Vue.set(state.localPacks[name]['pack'], key, value)\n },\n UPDATE_LOCAL_PACK_PACK: (state, { name, pack }) => {\n state.localPacks[name]['pack'] = pack\n },\n UPDATE_LOCAL_PACK_FILES: (state, { name, files }) => {\n // Use vue.set in case \"files\" was null\n Vue.set(\n state.localPacks[name],\n 'files',\n files\n )\n }\n },\n actions: {\n async AddNewEmojiFile({ commit, getters }, { packName, file, shortcode, filename }) {\n let result\n try {\n result = await addNewEmojiFile(packName, file, shortcode, filename, getters.authHost, getters.token)\n } catch (_e) {\n return\n }\n Message({\n message: `${i18n.t('settings.successfullyUpdated')} ${packName} ${i18n.t('settings.metadatLowerCase')}`,\n type: 'success',\n duration: 5 * 1000\n })\n\n commit('UPDATE_LOCAL_PACK_FILES', { name: packName, files: result.data })\n },\n async DeleteEmojiFile({ commit, getters }, { packName, shortcode }) {\n let result\n try {\n result = await deleteEmojiFile(packName, shortcode, getters.authHost, getters.token)\n } catch (_e) {\n return\n }\n Message({\n message: `${i18n.t('settings.successfullyUpdated')} ${packName} ${i18n.t('settings.metadatLowerCase')}`,\n type: 'success',\n duration: 5 * 1000\n })\n\n commit('UPDATE_LOCAL_PACK_FILES', { name: packName, files: result.data })\n },\n async CreatePack({ getters }, { name }) {\n await createPack(getters.authHost, getters.token, name)\n },\n async DeletePack({ getters }, { name }) {\n await deletePack(getters.authHost, getters.token, name)\n },\n async DownloadFrom({ getters }, { instanceAddress, packName, as }) {\n const result = await downloadFrom(getters.authHost, instanceAddress, packName, as, getters.token)\n\n if (result.data === 'ok') {\n Message({\n message: `${i18n.t('settings.successfullyDownloaded')} ${packName}`,\n type: 'success',\n duration: 5 * 1000\n })\n }\n },\n async ImportFromFS({ getters }) {\n const result = await importFromFS(getters.authHost, getters.token)\n\n if (result.status === 200) {\n const message = result.data.length > 0\n ? `${i18n.t('settings.successfullyImported')} ${result.data}`\n : i18n.t('settings.nowNewPacksToImport')\n\n Message({\n message,\n type: 'success',\n duration: 5 * 1000\n })\n }\n },\n async ReloadEmoji({ getters }) {\n await reloadEmoji(getters.authHost, getters.token)\n },\n async SavePackMetadata({ commit, getters, state }, { packName }) {\n const result =\n await savePackMetadata(\n getters.authHost,\n getters.token,\n packName,\n state.localPacks[packName]['pack']\n )\n\n if (result.status === 200) {\n Message({\n message: `${i18n.t('settings.successfullyUpdated')} ${packName} ${i18n.t('settings.metadatLowerCase')}`,\n type: 'success',\n duration: 5 * 1000\n })\n\n commit('UPDATE_LOCAL_PACK_PACK', { name: packName, pack: result.data })\n }\n },\n SetActiveCollapseItems({ commit, state }, activeItems) {\n commit('SET_ACTIVE_COLLAPSE_ITEMS', activeItems)\n },\n async SetLocalEmojiPacks({ commit, getters }) {\n const { data } = await listPacks(getters.authHost)\n commit('SET_LOCAL_PACKS', data)\n },\n async SetRemoteEmojiPacks({ commit, getters }, { remoteInstance }) {\n const { data } = await listRemotePacks(getters.authHost, getters.token, remoteInstance)\n\n commit('SET_REMOTE_INSTANCE', remoteInstance)\n commit('SET_REMOTE_PACKS', data)\n },\n SetRemoteInstance({ commit }, instance) {\n commit('SET_REMOTE_INSTANCE', instance)\n },\n async UpdateEmojiFile({ commit, getters }, { packName, shortcode, newShortcode, newFilename, force }) {\n let result\n try {\n result = await updateEmojiFile(packName, shortcode, newShortcode, newFilename, force, getters.authHost, getters.token)\n } catch (_e) {\n return\n }\n Message({\n message: `${i18n.t('settings.successfullyUpdated')} ${packName} ${i18n.t('settings.metadatLowerCase')}`,\n type: 'success',\n duration: 5 * 1000\n })\n\n commit('UPDATE_LOCAL_PACK_FILES', { name: packName, files: result.data })\n },\n async UpdateLocalPackVal({ commit }, args) {\n commit('UPDATE_LOCAL_PACK_VAL', args)\n }\n }\n}\n\nexport default packs\n","import Vue from 'vue'\nimport Vuex from 'vuex'\nimport app from './modules/app'\nimport errorLog from './modules/errorLog'\nimport moderationLog from './modules/moderationLog'\nimport invites from './modules/invites'\nimport peers from './modules/peers'\nimport permission from './modules/permission'\nimport relays from './modules/relays'\nimport reports from './modules/reports'\nimport settings from './modules/settings'\nimport status from './modules/status'\nimport tagsView from './modules/tagsView'\nimport user from './modules/user'\nimport userProfile from './modules/userProfile'\nimport users from './modules/users'\nimport getters from './getters'\nimport emojiPacks from './modules/emojiPacks.js'\n\nVue.use(Vuex)\n\nconst store = new Vuex.Store({\n modules: {\n app,\n errorLog,\n moderationLog,\n invites,\n peers,\n permission,\n relays,\n reports,\n settings,\n status,\n tagsView,\n user,\n userProfile,\n users,\n emojiPacks\n },\n getters\n})\n\nexport default store\n","import Vue from 'vue'\nimport SvgIcon from '@/components/element-ui/SvgIcon'// svg组件\n\n// register globally\nVue.component('svg-icon', SvgIcon)\n\nconst req = require.context('./svg', false, /\\.svg$/)\nconst requireAll = requireContext => requireContext.keys().map(requireContext)\nrequireAll(req)\n","import Vue from 'vue'\nimport store from './store'\n\n// you can set only in production env show the error-log\nif (process.env.NODE_ENV === 'production') {\n Vue.config.errorHandler = function(err, vm, info, a) {\n // Don't ask me why I use Vue.nextTick, it just a hack.\n // detail see https://forum.vuejs.org/t/dispatch-in-vue-config-errorhandler-has-some-problem/23500\n Vue.nextTick(() => {\n store.dispatch('addErrorLog', {\n err,\n vm,\n info,\n url: window.location.href\n })\n console.error(err, info)\n })\n }\n}\n","import router from './router'\nimport store from './store'\nimport { Message } from 'element-ui'\nimport NProgress from 'nprogress' // progress bar\nimport 'nprogress/nprogress.css'// progress bar style\nimport { getToken } from '@/utils/auth' // getToken from cookie\n\nNProgress.configure({ showSpinner: false })// NProgress Configuration\n\n// permission judge function\nfunction hasPermission(roles, permissionRoles) {\n if (roles.indexOf('admin') >= 0) return true // admin permission passed directly\n if (!permissionRoles) return true\n return roles.some(role => permissionRoles.indexOf(role) >= 0)\n}\n\nconst whiteList = ['/login', '/auth-redirect', '/login-pleroma']// no redirect whitelist\n\nexport const beforeEachRoute = (to, from, next) => {\n NProgress.start() // start progress bar\n if (getToken()) { // determine if there has token\n /* has token*/\n if (to.path === '/login') {\n next({ path: '/' })\n NProgress.done() // if current page is dashboard will not trigger\tafterEach hook, so manually handle it\n } else {\n if (store.getters.roles.length === 0) {\n store.dispatch('GetUserInfo').then(res => {\n const roles = res.data.pleroma.is_admin ? ['admin'] : []\n store.dispatch('GenerateRoutes', { roles }).then(() => {\n router.addRoutes(store.getters.addRouters)\n next({ ...to, replace: true })\n })\n }).catch((err) => {\n store.dispatch('FedLogOut').then(() => {\n Message({\n dangerouslyUseHTMLString: true,\n message: err,\n type: 'error',\n duration: 10 * 1000\n })\n next({ path: '/' })\n })\n })\n } else {\n if (hasPermission(store.getters.roles, to.meta.roles)) {\n next()\n } else {\n next({ path: '/401', replace: true, query: { noGoBack: true }})\n }\n }\n }\n } else {\n /* has no token*/\n if (whiteList.indexOf(to.path) !== -1) {\n next()\n } else {\n next(`/login?redirect=${to.path}`)\n NProgress.done() // if current page is login will not trigger afterEach hook, so manually handle it\n }\n }\n}\nrouter.beforeEach(beforeEachRoute)\n\nrouter.afterEach(() => {\n NProgress.done() // finish progress bar\n})\n","// set function parseTime,formatTime to filter\nexport { parseTime, formatTime } from '@/utils'\n\nfunction pluralize(time, label) {\n if (time === 1) {\n return time + label\n }\n return time + label + 's'\n}\n\nexport function timeAgo(time) {\n const between = Date.now() / 1000 - Number(time)\n if (between < 3600) {\n return pluralize(~~(between / 60), ' minute')\n } else if (between < 86400) {\n return pluralize(~~(between / 3600), ' hour')\n } else {\n return pluralize(~~(between / 86400), ' day')\n }\n}\n\n/* 数字 格式化*/\nexport function numberFormatter(num, digits) {\n const si = [\n { value: 1E18, symbol: 'E' },\n { value: 1E15, symbol: 'P' },\n { value: 1E12, symbol: 'T' },\n { value: 1E9, symbol: 'G' },\n { value: 1E6, symbol: 'M' },\n { value: 1E3, symbol: 'k' }\n ]\n for (let i = 0; i < si.length; i++) {\n if (num >= si[i].value) {\n return (num / si[i].value + 0.1).toFixed(digits).replace(/\\.0+$|(\\.[0-9]*[1-9])0+$/, '$1') + si[i].symbol\n }\n }\n return num.toString()\n}\n\nexport function toThousandFilter(num) {\n return (+num || 0).toString().replace(/^-?\\d+/g, m => m.replace(/(?=(?!\\b)(\\d{3})+$)/g, ','))\n}\n","import Vue from 'vue'\n\nimport Cookies from 'js-cookie'\n\nimport 'normalize.css/normalize.css' // A modern alternative to CSS resets\n\nimport Element from 'element-ui'\nimport 'element-ui/lib/theme-chalk/index.css'\n\nimport '@/styles/index.scss' // global css\n\nimport App from './App'\nimport store from './store'\nimport router from './router'\n\nimport i18n from './lang' // Internationalization\nimport './icons' // icon\nimport './errorLog' // error log\nimport './permission' // permission control\n\nimport * as filters from './filters' // global filters\n\nVue.use(Element, {\n size: Cookies.get('size') || 'medium', // set element-ui default size\n i18n: (key, value) => i18n.t(key, value)\n})\n\n// register global utility filters.\nObject.keys(filters).forEach(key => {\n Vue.filter(key, filters[key])\n})\n\nVue.config.productionTip = false\n\nnew Vue({\n el: '#app',\n router,\n store,\n i18n,\n render: h => h(App)\n})\n","import Cookies from 'js-cookie'\n\nconst TokenKey = 'Admin-Token'\nconst AuthHostKey = 'Auth-Host'\n\nexport function getToken() {\n return Cookies.get(TokenKey)\n}\n\nexport function setToken(token) {\n return Cookies.set(TokenKey, token)\n}\n\nexport function removeToken() {\n return Cookies.remove(TokenKey)\n}\n\nexport function getAuthHost() {\n return Cookies.get(AuthHostKey)\n}\n\nexport function setAuthHost(token) {\n return Cookies.set(AuthHostKey, token)\n}\n\nexport function removeAuthHost() {\n return Cookies.remove(AuthHostKey)\n}\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TagsView.vue?vue&type=style&index=1&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TagsView.vue?vue&type=style&index=1&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--7-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMain.vue?vue&type=style&index=0&id=f852c4f2&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--7-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMain.vue?vue&type=style&index=0&id=f852c4f2&scoped=true&lang=css&\"","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-excel\",\n \"use\": \"icon-excel-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-guide\",\n \"use\": \"icon-guide-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-star\",\n \"use\": \"icon-star-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navbar.vue?vue&type=style&index=0&id=28de7ff2&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navbar.vue?vue&type=style&index=0&id=28de7ff2&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-wechat\",\n \"use\": \"icon-wechat-usage\",\n \"viewBox\": \"0 0 128 110\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import _ from 'lodash'\n\nexport const getBooleanValue = value => {\n if (value === 'true') {\n return true\n } else if (value === 'false') {\n return false\n }\n return value\n}\n\nexport const checkPartialUpdate = (settings, updatedSettings, description) => {\n return Object.keys(updatedSettings).reduce((acc, group) => {\n acc[group] = Object.keys(updatedSettings[group]).reduce((acc, key) => {\n if (!partialUpdate(group, key)) {\n const updated = Object.keys(settings[group][key]).reduce((acc, settingName) => {\n const setting = description\n .find(element => element.group === group && element.key === key).children\n .find(child => child.key === settingName)\n const type = setting ? setting.type : ''\n acc[settingName] = [type, settings[group][key][settingName]]\n return acc\n }, {})\n acc[key] = updated\n return acc\n }\n acc[key] = updatedSettings[group][key]\n return acc\n }, {})\n return acc\n }, {})\n}\n\nconst getCurrentValue = (type, value, path) => {\n if (type === 'state') {\n return _.get(value, path)\n } else {\n const [firstSettingName, ...restKeys] = path\n const firstSegment = value[firstSettingName]\n if (restKeys.length === 0 || !firstSegment) {\n return firstSegment || false\n } else {\n const secondSegment = (value, keys) => {\n const [element, ...rest] = keys\n return keys.length === 0 ? value : secondSegment(value[1][element], rest)\n }\n return secondSegment(firstSegment, restKeys)\n }\n }\n}\n\nconst getValueWithoutKey = (key, [type, value]) => {\n if (type === 'atom' && value.length > 1) {\n return `:${value}`\n } else if (key === ':backends') {\n const index = value.findIndex(el => el === ':ex_syslogger')\n const updatedArray = value.slice()\n if (index !== -1) {\n updatedArray[index] = { 'tuple': ['ExSyslogger', ':ex_syslogger'] }\n }\n return updatedArray\n } else if (key === ':types') {\n return Object.keys(value).reduce((acc, key) => { return { ...acc, [key]: value[key][1] } }, {})\n }\n return value\n}\n\nexport const parseNonTuples = (key, value) => {\n if (key === ':backends') {\n const index = value.findIndex(el => typeof el === 'object' && el.tuple.includes(':ex_syslogger'))\n const updated = value.map((el, i) => i === index ? ':ex_syslogger' : el)\n return updated\n }\n if (key === ':args') {\n if (typeof value === 'string') {\n return [value]\n }\n const index = value.findIndex(el => typeof el === 'object' && el.tuple.includes('implode'))\n const updated = value.map((el, i) => i === index ? 'implode' : el)\n return updated\n }\n return value\n}\n// REFACTOR\nexport const parseTuples = (tuples, key) => {\n return tuples.reduce((accum, item) => {\n if (key === ':rate_limit') {\n accum[item.tuple[0]] = Array.isArray(item.tuple[1])\n ? item.tuple[1].map(el => el.tuple)\n : item.tuple[1].tuple\n } else if (item.tuple[0] === ':mascots') {\n accum[item.tuple[0]] = item.tuple[1].reduce((acc, mascot) => {\n return [...acc, { [mascot.tuple[0]]: { ...mascot.tuple[1], id: `f${(~~(Math.random() * 1e8)).toString(16)}` }}]\n }, [])\n } else if (Array.isArray(item.tuple[1]) &&\n (item.tuple[0] === ':groups' || item.tuple[0] === ':replace' || item.tuple[0] === ':retries')) {\n accum[item.tuple[0]] = item.tuple[1].reduce((acc, group) => {\n return [...acc, { [group.tuple[0]]: { value: group.tuple[1], id: `f${(~~(Math.random() * 1e8)).toString(16)}` }}]\n }, [])\n } else if (item.tuple[0] === ':crontab') {\n accum[item.tuple[0]] = item.tuple[1].reduce((acc, group) => {\n return { ...acc, [group.tuple[1]]: group.tuple[0] }\n }, {})\n } else if (item.tuple[0] === ':match_actor') {\n accum[item.tuple[0]] = Object.keys(item.tuple[1]).reduce((acc, regex) => {\n return [...acc, { [regex]: { value: item.tuple[1][regex], id: `f${(~~(Math.random() * 1e8)).toString(16)}` }}]\n }, [])\n } else if (item.tuple[0] === ':icons') {\n accum[item.tuple[0]] = item.tuple[1].map(icon => {\n return Object.keys(icon).map(name => {\n return { key: name, value: icon[name], id: `f${(~~(Math.random() * 1e8)).toString(16)}` }\n })\n }, [])\n } else if (item.tuple[0] === ':prune') {\n accum[item.tuple[0]] = item.tuple[1] === ':disabled' ? [item.tuple[1]] : item.tuple[1].tuple\n } else if (item.tuple[0] === ':proxy_url') {\n accum[item.tuple[0]] = parseProxyUrl(item.tuple[1])\n } else if (item.tuple[0] === ':args') {\n accum[item.tuple[0]] = parseNonTuples(item.tuple[0], item.tuple[1])\n } else if (Array.isArray(item.tuple[1]) &&\n (typeof item.tuple[1][0] === 'object' && !Array.isArray(item.tuple[1][0])) && item.tuple[1][0]['tuple']) {\n accum[item.tuple[0]] = parseTuples(item.tuple[1], item.tuple[0])\n } else if (Array.isArray(item.tuple[1])) {\n accum[item.tuple[0]] = item.tuple[1]\n } else if (item.tuple[0] === ':ip') {\n accum[item.tuple[0]] = item.tuple[1].tuple.join('.')\n } else if (item.tuple[1] && typeof item.tuple[1] === 'object') {\n accum[item.tuple[0]] = parseObject(item.tuple[1])\n } else {\n accum[item.tuple[0]] = item.tuple[1]\n }\n return accum\n }, {})\n}\n\nconst parseObject = object => {\n return Object.keys(object).reduce((acc, item) => {\n acc[item] = object[item]\n return acc\n }, {})\n}\n\nconst parseProxyUrl = value => {\n if (value && !Array.isArray(value) &&\n typeof value === 'object' &&\n value.tuple.length === 3 &&\n value.tuple[0] === ':socks5') {\n const [, host, port] = value.tuple\n return { socks5: true, host, port }\n } else if (typeof value === 'string') {\n const [host, port] = value.split(':')\n return { socks5: false, host, port }\n }\n return { socks5: false, host: null, port: null }\n}\n\nconst partialUpdate = (group, key) => {\n return !(group === ':auto_linker' && key === ':opts')\n}\n\nexport const processNested = (valueForState, valueForUpdatedSettings, group, parentKey, parents, settings, updatedSettings) => {\n const [{ key, type }, ...otherParents] = parents\n const path = [group, parentKey, ...parents.reverse().map(parent => parent.key).slice(0, -1)]\n\n let updatedValueForState = valueExists('state', settings, path)\n ? { ...getCurrentValue('state', settings[group][parentKey], parents.map(el => el.key).slice(0, -1)),\n ...{ [key]: valueForState }}\n : { [key]: valueForState }\n let updatedValueForUpdatedSettings = valueExists('updatedSettings', updatedSettings, path)\n ? { ...getCurrentValue('updatedSettings', updatedSettings[group][parentKey], parents.map(el => el.key).slice(0, -1))[1],\n ...{ [key]: [type, valueForUpdatedSettings] }}\n : { [key]: [type, valueForUpdatedSettings] }\n\n if (group === ':mime' && parents[0].key === ':types') {\n updatedValueForState = settings[group][parents[0].key]\n ? { ...settings[group][parents[0].key].value, ...updatedValueForState }\n : updatedValueForState\n updatedValueForUpdatedSettings = settings[group][parents[0].key]\n ? { ...Object.keys(settings[group][parents[0].key].value)\n .reduce((acc, el) => {\n return { ...acc, [el]: [type, settings[group][parents[0].key].value[el]] }\n }, {}),\n ...updatedValueForUpdatedSettings }\n : updatedValueForUpdatedSettings\n }\n\n return otherParents.length === 1\n ? { valueForState: updatedValueForState, valueForUpdatedSettings: updatedValueForUpdatedSettings, setting: otherParents[0] }\n : processNested(updatedValueForState, updatedValueForUpdatedSettings, group, parentKey, otherParents, settings, updatedSettings)\n}\n\nconst valueExists = (type, value, path) => {\n if (type === 'state') {\n return _.get(value, path)\n } else {\n const [group, key, firstSettingName, ...restKeys] = path\n const firstSegment = _.get(value, [group, key, firstSettingName])\n if (restKeys.length === 0 || !firstSegment) {\n return firstSegment || false\n } else {\n const secondSegment = (value, keys) => {\n if (keys.length === 0) {\n return true\n }\n const [element, ...rest] = keys\n return value[1][element] ? secondSegment(value[1][element], rest) : false\n }\n return secondSegment(firstSegment, restKeys)\n }\n }\n}\n\nexport const valueHasTuples = (key, value) => {\n const valueIsArrayOfNonObjects = Array.isArray(value) && value.length > 0 && value.every(el => typeof el !== 'object')\n return key === ':meta' ||\n key === ':types' ||\n key === ':backends' ||\n key === ':compiled_template_engines' ||\n key === ':compiled_format_encoders' ||\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n value === null ||\n valueIsArrayOfNonObjects\n}\n\nexport const wrapUpdatedSettings = (group, settings, currentState) => {\n return Object.keys(settings).map((key) => {\n return settings[key]._value\n ? { group, key, value: getValueWithoutKey(key, settings[key]._value) }\n : { group, key, value: wrapValues(settings[key], currentState[group][key]) }\n })\n}\n\nconst wrapValues = (settings, currentState) => {\n return Object.keys(settings).map(setting => {\n const [type, value] = settings[setting]\n if (\n type === 'keyword' ||\n type.includes('keyword') ||\n type.includes('tuple') && type.includes('list') ||\n setting === ':replace'\n ) {\n return { 'tuple': [setting, wrapValues(value, currentState)] }\n } else if (type === 'atom' && value.length > 0) {\n return { 'tuple': [setting, `:${value}`] }\n } else if (type.includes('tuple') && (type.includes('string') || type.includes('atom'))) {\n return typeof value === 'string'\n ? { 'tuple': [setting, value] }\n : { 'tuple': [setting, { 'tuple': value }] }\n } else if (type === 'reversed_tuple') {\n return { 'tuple': [value, setting] }\n } else if (type === 'map') {\n const mapValue = Object.keys(value).reduce((acc, key) => {\n acc[key] = setting === ':match_actor' ? value[key] : value[key][1]\n return acc\n }, {})\n const mapCurrentState = setting === ':match_actor'\n ? currentState[setting].reduce((acc, element) => {\n return { ...acc, ...{ [Object.keys(element)[0]]: Object.values(element)[0].value }}\n }, {})\n : currentState[setting]\n return { 'tuple': [setting, { ...mapCurrentState, ...mapValue }] }\n } else if (setting === ':ip') {\n const ip = value.split('.').map(s => parseInt(s, 10))\n return { 'tuple': [setting, { 'tuple': ip }] }\n } else if (setting === ':args') {\n const index = value.findIndex(el => el === 'implode')\n const updatedArray = value.slice()\n if (index !== -1) {\n updatedArray[index] = { 'tuple': ['implode', '1'] }\n }\n return { 'tuple': [setting, updatedArray] }\n } else {\n return { 'tuple': [setting, value] }\n }\n })\n}\n\nexport const formSearchObject = description => {\n const parseNestedSettings = (description, label, key) => description.reduce((acc, setting) => {\n const searchArray = _.compact([setting.key, setting.label, setting.description]).map(el => el.toLowerCase())\n const resultObject = { label: setting.label, key: setting.key || setting.group, groupKey: key, groupLabel: label, search: searchArray }\n if (setting.children) {\n const updatedAcc = [...acc, resultObject]\n return [...updatedAcc, ...parseNestedSettings(setting.children, label, key)]\n }\n return [...acc, resultObject]\n }, [])\n\n return description.reduce((acc, setting) => {\n const searchArray = _.compact([setting.key, setting.label, setting.description]).map(el => el.toLowerCase())\n const resultObject = { label: setting.label, key: setting.key || setting.group, groupKey: setting.key || setting.group, groupLabel: setting.label, search: searchArray }\n if (setting.children) {\n const updatedAcc = !setting.key && setting.group === ':pleroma' ? acc : [...acc, resultObject]\n return [...updatedAcc, ...parseNestedSettings(setting.children, setting.label, setting.key || setting.group)]\n }\n return !setting.key && setting.group === ':pleroma' ? acc : [...acc, resultObject]\n }, [])\n}\n","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-size\",\n \"use\": \"icon-size-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-zip\",\n \"use\": \"icon-zip-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tab\",\n \"use\": \"icon-tab-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-search\",\n \"use\": \"icon-search-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tree\",\n \"use\": \"icon-tree-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-documentation\",\n \"use\": \"icon-documentation-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-drag\",\n \"use\": \"icon-drag-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--7-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=17178ffc&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--7-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=17178ffc&scoped=true&lang=css&\"","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-fullscreen\",\n \"use\": \"icon-fullscreen-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import Vue from 'vue'\nimport VueI18n from 'vue-i18n'\nimport Cookies from 'js-cookie'\nimport elementEnLocale from 'element-ui/lib/locale/lang/en' // element-ui lang\nimport elementZhLocale from 'element-ui/lib/locale/lang/zh-CN' // element-ui lang\nimport elementEsLocale from 'element-ui/lib/locale/lang/es' // element-ui lang\nimport enLocale from './en'\nimport zhLocale from './zh'\nimport esLocale from './es'\nimport ocLocale from './oc'\n\nVue.use(VueI18n)\n\nconst messages = {\n en: {\n ...enLocale,\n ...elementEnLocale\n },\n zh: {\n ...zhLocale,\n ...elementZhLocale\n },\n es: {\n ...esLocale,\n ...elementEsLocale\n },\n oc: {\n ...ocLocale\n }\n}\n\nconst i18n = new VueI18n({\n // set locale\n // options: en | zh | es | oc\n locale: Cookies.get('language') || 'en',\n // set locale messages\n messages\n})\n\nexport default i18n\n","export default {\n route: {\n dashboard: 'Dashboard',\n introduction: 'Introduction',\n documentation: 'Documentation',\n guide: 'Guide',\n permission: 'Permission',\n pagePermission: 'Page Permission',\n directivePermission: 'Directive Permission',\n icons: 'Icons',\n components: 'Components',\n componentIndex: 'Introduction',\n markdown: 'Markdown',\n jsonEditor: 'JSON Editor',\n dndList: 'Dnd List',\n splitPane: 'SplitPane',\n avatarUpload: 'Avatar Upload',\n dropzone: 'Dropzone',\n sticky: 'Sticky',\n countTo: 'CountTo',\n componentMixin: 'Mixin',\n backToTop: 'BackToTop',\n dragDialog: 'Drag Dialog',\n dragSelect: 'Drag Select',\n dragKanban: 'Drag Kanban',\n charts: 'Charts',\n keyboardChart: 'Keyboard Chart',\n lineChart: 'Line Chart',\n mixChart: 'Mix Chart',\n example: 'Example',\n nested: 'Nested Routes',\n menu1: 'Menu 1',\n 'menu1-1': 'Menu 1-1',\n 'menu1-2': 'Menu 1-2',\n 'menu1-2-1': 'Menu 1-2-1',\n 'menu1-2-2': 'Menu 1-2-2',\n 'menu1-3': 'Menu 1-3',\n menu2: 'Menu 2',\n Table: 'Table',\n dynamicTable: 'Dynamic Table',\n dragTable: 'Drag Table',\n inlineEditTable: 'Inline Edit',\n complexTable: 'Complex Table',\n treeTable: 'Tree Table',\n customTreeTable: 'Custom TreeTable',\n tab: 'Tab',\n form: 'Form',\n createArticle: 'Create Article',\n editArticle: 'Edit Article',\n articleList: 'Article List',\n errorPages: 'Error Pages',\n page401: '401',\n page404: '404',\n errorLog: 'Error Log',\n excel: 'Excel',\n exportExcel: 'Export Excel',\n selectExcel: 'Export Selected',\n uploadExcel: 'Upload Excel',\n zip: 'Zip',\n pdf: 'PDF',\n exportZip: 'Export Zip',\n theme: 'Theme',\n clipboardDemo: 'Clipboard',\n i18n: 'I18n',\n externalLink: 'External Link',\n users: 'Users',\n reports: 'Reports',\n settings: 'Settings',\n moderationLog: 'Moderation Log',\n 'emoji-packs': 'Emoji packs'\n },\n navbar: {\n logOut: 'Log Out',\n dashboard: 'Dashboard',\n github: 'Github',\n theme: 'Theme',\n size: 'Global Size'\n },\n login: {\n title: 'Login Form',\n logIn: 'Log in',\n logInViaPleromaFE: 'Log in via PleromaFE',\n username: 'username@host',\n password: 'password',\n omitHostname: 'omit hostname if Pleroma is located on this domain',\n errorMessage: 'Username must contain username and host, e.g. john@pleroma.social',\n any: 'any',\n thirdparty: 'Or connect with',\n pleromaFELoginFailed: 'Failed to login via PleromaFE, please login with username/password',\n pleromaFELoginSucceed: 'Logged in via PleromaFE'\n },\n documentation: {\n documentation: 'Documentation',\n github: 'Github Repository'\n },\n permission: {\n roles: 'Your roles',\n switchRoles: 'Switch roles',\n tips: 'In some cases it is not suitable to use v-permission, such as element Tab component or el-table-column and other asynchronous rendering dom cases which can only be achieved by manually setting the v-if.'\n },\n guide: {\n description: 'The guide page is useful for some people who entered the project for the first time. You can briefly introduce the features of the project. Demo is based on ',\n button: 'Show Guide'\n },\n components: {\n documentation: 'Documentation',\n dropzoneTips: 'Because my business has special needs, and has to upload images to qiniu, so instead of a third party, I chose encapsulate it by myself. It is very simple, you can see the detail code in @/components/element-ui/Dropzone.',\n stickyTips: 'when the page is scrolled to the preset position will be sticky on the top.',\n backToTopTips1: 'When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner',\n backToTopTips2: 'You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally',\n imageUploadTips: 'Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version.'\n },\n table: {\n dynamicTips1: 'Fixed header, sorted by header order',\n dynamicTips2: 'Not fixed header, sorted by click order',\n dragTips1: 'The default order',\n dragTips2: 'The after dragging order',\n title: 'Title',\n importance: 'Imp',\n type: 'Type',\n remark: 'Remark',\n search: 'Search',\n add: 'Add',\n export: 'Export',\n reviewer: 'reviewer',\n id: 'ID',\n date: 'Date',\n author: 'Author',\n readings: 'Readings',\n status: 'Status',\n actions: 'Actions',\n edit: 'Edit',\n publish: 'Publish',\n draft: 'Draft',\n delete: 'Delete',\n cancel: 'Cancel',\n confirm: 'Confirm'\n },\n errorLog: {\n tips: 'Please click the bug icon in the upper right corner',\n description: 'Now the management system are basically the form of the spa, it enhances the user experience, but it also increases the possibility of page problems, a small negligence may lead to the entire page deadlock. Fortunately Vue provides a way to catch handling exceptions, where you can handle errors or report exceptions.',\n documentation: 'Document introduction'\n },\n excel: {\n export: 'Export',\n selectedExport: 'Export Selected Items',\n placeholder: 'Please enter the file name(default excel-list)'\n },\n zip: {\n export: 'Export',\n placeholder: 'Please enter the file name(default file)'\n },\n pdf: {\n tips: 'Here we use window.print() to implement the feature of downloading pdf.'\n },\n theme: {\n change: 'Change Theme',\n documentation: 'Theme documentation',\n tips: 'Tips: It is different from the theme-pick on the navbar is two different skinning methods, each with different application scenarios. Refer to the documentation for details.'\n },\n tagsView: {\n refresh: 'Refresh',\n close: 'Close',\n closeOthers: 'Close Others',\n closeAll: 'Close All'\n },\n users: {\n users: 'Users',\n localUsersOnly: 'Local users only',\n search: 'Search',\n id: 'ID',\n name: 'Name',\n status: 'Status',\n local: 'local',\n external: 'external',\n deactivated: 'deactivated',\n active: 'active',\n unconfirmed: 'unconfirmed',\n actions: 'Actions',\n activate: 'Activate',\n deactivate: 'Deactivate',\n admin: 'admin',\n moderator: 'moderator',\n moderation: 'Moderation',\n revokeAdmin: 'Revoke Admin',\n grantAdmin: 'Grant Admin',\n revokeModerator: 'Revoke Moderator',\n grantModerator: 'Grant Moderator',\n activateAccount: 'Activate Account',\n activateAccounts: 'Activate Accounts',\n deactivateAccount: 'Deactivate Account',\n deactivateAccounts: 'Deactivate Accounts',\n deleteAccount: 'Delete Account',\n deleteAccounts: 'Delete Accounts',\n forceNsfw: 'Force posts to be NSFW',\n stripMedia: 'Force posts to not have media',\n forceUnlisted: 'Force posts to be unlisted',\n sandbox: 'Force posts to be followers-only',\n disableRemoteSubscription: 'Disallow following user from remote instances',\n disableRemoteSubscriptionForMultiple: 'Disallow following users from remote instances',\n disableAnySubscription: 'Disallow following user at all',\n disableAnySubscriptionForMultiple: 'Disallow following users at all',\n requirePasswordReset: 'Require password reset on next login',\n selectUsers: 'Select users to apply actions to multiple users',\n moderateUser: 'Moderate user',\n moderateUsers: 'Moderate multiple users',\n createAccount: 'Create new account',\n apply: 'apply',\n remove: 'remove',\n grantRightConfirmation: 'Are you sure you want to grant {right} rights to all selected users?',\n revokeRightConfirmation: 'Are you sure you want to revoke {right} rights from all selected users?',\n activateMultipleUsersConfirmation: 'Are you sure you want to activate accounts of all selected users?',\n deactivateMultipleUsersConfirmation: 'Are you sure you want to deactivate accounts of all selected users?',\n deleteMultipleUsersConfirmation: 'Are you sure you want to delete accounts of all selected users?',\n addTagForMultipleUsersConfirmation: 'Are you sure you want to apply tag to all selected users?',\n removeTagFromMultipleUsersConfirmation: 'Are you sure you want to remove tag from all selected users?',\n requirePasswordResetConfirmation: 'Are you sure you want to require password reset for all selected users?',\n confirmAccountsConfirmation: 'Are you sure you want to confirm emails for all selected users?',\n resendEmailConfirmation: 'Are you sure you want to resend confirmation email for all selected users?',\n mailerMustBeEnabled: 'To require user\\'s password reset you must enable mailer.',\n ok: 'Okay',\n completed: 'Completed',\n cancel: 'Cancel',\n canceled: 'Canceled',\n username: 'Username',\n email: 'E-mail',\n password: 'Password',\n create: 'Create',\n submitFormError: 'There are invalid values in the form. Please fix them before continuing.',\n emptyEmailError: 'Please input the e-mail',\n invalidEmailError: 'Please input valid e-mail',\n emptyPasswordError: 'Please input the password',\n emptyNicknameError: 'Please input the username',\n invalidNicknameError: 'Username can include \"a-z\", \"A-Z\" and \"0-9\" characters',\n getPasswordResetToken: 'Get password reset token',\n passwordResetTokenCreated: 'Password reset token was created',\n accountCreated: 'New account was created!',\n unconfirmedEmail: 'User didn\\'t confirm the email',\n confirmAccount: 'Confirm account',\n confirmAccounts: 'Confirm accounts',\n resendConfirmation: 'Resend confirmation email'\n },\n statuses: {\n statuses: 'Statuses',\n instanceFilter: 'Instance filter',\n loadMore: 'Load more',\n noInstances: 'No other instances found',\n onlyLocalStatuses: 'Show only local statuses',\n showPrivateStatuses: 'Show private statuses',\n direct: 'Direct',\n private: 'Private',\n public: 'Public',\n unlisted: 'Unlisted'\n },\n userProfile: {\n tags: 'Tags',\n moderator: 'Moderator',\n admin: 'Admin',\n local: 'local',\n external: 'external',\n localUppercase: 'Local',\n nickname: 'Nickname',\n recentStatuses: 'Recent Statuses',\n roles: 'Roles',\n activeUppercase: 'Active',\n active: 'active',\n deactivated: 'deactivated',\n noStatuses: 'No statuses to show',\n securitySettings: {\n email: 'Email',\n password: 'Password',\n securitySettings: 'Security settings',\n passwordChangeWarning1: 'Setting a new password will cause the user to be signed out from any client they have used before.',\n passwordChangeWarning2: 'When the user signs in with this password, they will be asked to set a new one.',\n passwordLengthNotice: 'Make sure it\\'s at least {minLength} characters long.',\n inputNewEmail: 'Input new email',\n inputNewPassword: 'Input new password',\n passwordUpdated: 'The password has been updated',\n emailUpdated: 'The email has been updated',\n success: 'Success',\n submit: 'Submit',\n close: 'Close'\n }\n },\n usersFilter: {\n inputPlaceholder: 'Select filter',\n byUserType: 'By user type',\n local: 'Local',\n external: 'External',\n byStatus: 'By status',\n active: 'Active',\n deactivated: 'Deactivated'\n },\n reports: {\n reports: 'Reports',\n report: 'Report',\n reply: 'Reply',\n from: 'From',\n showNotes: 'Show notes',\n newNote: 'New note',\n submit: 'Submit',\n confirmMsg: 'Are you sure you want to delete this note?',\n delete: 'Delete',\n cancel: 'Cancel',\n deleteCompleted: 'Delete comleted',\n deleteCanceled: 'Delete canceled',\n noNotes: 'No notes to display',\n changeState: \"Change report's state\",\n changeAllReports: 'Change all reports',\n changeScope: 'Change scope',\n moderateUser: 'Moderate user',\n resolve: 'Resolve',\n reopen: 'Reopen',\n close: 'Close',\n resolveAll: 'Resolve all',\n reopenAll: 'Reopen all',\n closeAll: 'Close all',\n addSensitive: 'Add Sensitive flag',\n removeSensitive: 'Remove Sensitive flag',\n public: 'Make status public',\n private: 'Make status private',\n unlisted: 'Make status unlisted',\n sensitive: 'Sensitive',\n deleteStatus: 'Delete status',\n reportOn: 'Report on',\n reportsOn: 'Reports on',\n id: 'ID',\n account: 'Account',\n actor: 'Actor',\n actors: 'Actors',\n content: 'Content',\n reportedStatus: 'Reported status',\n statusDeleted: 'This status has been deleted',\n leaveNote: 'Leave a note',\n postNote: 'Send',\n deleteNote: 'Delete',\n notFound: 'account not found'\n },\n reportsFilter: {\n inputPlaceholder: 'Select filter',\n open: 'Open',\n closed: 'Closed',\n resolved: 'Resolved'\n },\n moderationLog: {\n moderationLog: 'Moderation Log'\n },\n settings: {\n settings: 'Settings',\n instance: 'Instance',\n upload: 'Upload',\n mailer: 'Mailer',\n logger: 'Logger',\n activityPub: 'ActivityPub',\n auth: 'Authentication',\n autoLinker: 'Auto Linker',\n captcha: 'Captcha',\n frontend: 'Frontend',\n http: 'HTTP',\n mrf: 'MRF',\n mediaProxy: 'Media Proxy',\n metadata: 'Metadata',\n gopher: 'Gopher',\n jobQueue: 'Job queue',\n webPush: 'Web push encryption',\n esshd: 'BBS / SSH access',\n rateLimiters: 'Rate limiters',\n other: 'Other',\n relays: 'Relays',\n follow: 'Follow',\n followRelay: 'Follow new relay',\n instanceUrl: 'Instance URL',\n success: 'Settings changed successfully!',\n description: 'Description',\n removeFromDB: 'Remove setting from the DB',\n successfullyDownloaded: 'Successfully downloaded',\n successfullyImported: 'Successfully imported',\n nowNewPacksToImport: 'No new packs to import',\n successfullyUpdated: 'Successfully updated',\n metadatLowerCase: 'metadata',\n files: 'files',\n successfullyRemoved: 'Setting removed successfully!',\n seeDocs: 'See Documentation',\n assets: 'Assets',\n emoji: 'Emoji',\n markup: 'Markup settings',\n corsPlug: 'CORS plug config',\n instanceReboot: 'Reboot Instance',\n restartApp: 'You must restart the instance to apply settings',\n restartSuccess: 'Instance rebooted successfully!',\n removeSettingConfirmation: 'Are you sure you want to remove this setting\\'s value from the database?'\n },\n invites: {\n inviteTokens: 'Invite tokens',\n createInviteToken: 'Generate invite token',\n pickDate: 'Pick a date',\n maxUse: 'Max use',\n expiresAt: 'Expires at',\n tokenCreated: 'Invite token was created',\n token: 'Token',\n inviteLink: 'Invite link',\n uses: 'Uses',\n used: 'Used',\n cancel: 'Cancel',\n create: 'Create',\n revoke: 'Revoke',\n id: 'ID',\n actions: 'Actions',\n active: 'Active',\n inviteUserViaEmail: 'Invite user via email',\n sendRegistration: 'Send registration invite via email',\n email: 'Email',\n name: 'Name',\n emptyEmailError: 'Please input the e-mail',\n invalidEmailError: 'Please input valid e-mail',\n emailSent: 'Invite was sent',\n submitFormError: 'There are invalid values in the form. Please fix them before continuing.',\n inviteViaEmailAlert: 'To send invite via email make sure to enable `invites_enabled` and disable `registrations_open`'\n },\n emoji: {\n emojiPacks: 'Emoji packs',\n reloaded: 'Emoji reloaded successfully!',\n refreshed: 'Emoji refreshed successfully!',\n importEmojiTooltip: 'Importing from the filesystem will scan the directories and import those without pack.json but with emoji.txt or without neither',\n reloadEmoji: 'Reload emoji',\n importPacks: 'Import packs from the server filesystem',\n localPacks: 'Local packs',\n refreshLocalPacks: 'Refresh local packs',\n createLocalPack: 'Create a new local pack',\n remotePacks: 'Remote packs',\n remoteInstanceAddress: 'Remote instance address',\n refreshRemote: 'Refresh remote packs',\n sharePack: 'Share pack',\n required: 'required',\n homepage: 'Homepage',\n description: 'Description',\n packs: 'Packs',\n license: 'License',\n shortcode: 'Shortcode',\n fallbackSrc: 'Fallback source',\n fallbackSrcSha: 'Fallback source SHA',\n saveMetadata: 'Save metadata',\n deletePack: 'Delete pack',\n downloadPack: 'Download pack',\n downloadPackArchive: 'Download pack archive',\n addNewEmoji: 'Add new emoji to the pack',\n manageEmoji: 'Manage existing emoji',\n thisWillDownload: 'This will download the',\n downloadToCurrentInstance: 'pack to the current instance under the name',\n canBeChanged: 'can be changed below',\n willBeUsable: 'It will then be usable and shareable from the current instance',\n downloadAsOptional: 'Download as (optional)',\n downloadSharedPack: 'Download shared pack to current instance',\n downloadSharedPackMobile: 'Download pack to instance',\n optional: 'optional',\n uploadFile: 'Upload a file',\n url: 'URL',\n clickToUpload: 'Click to upload',\n upload: 'Upload',\n customFilename: 'Custom filename',\n customFilenameDesc: 'Custom file name (optional)',\n file: 'File',\n localPack: 'Local pack',\n leaveEmptyShortcode: 'leave empty to use the same shortcode',\n leaveEmptyFilename: 'leave empty to use the same filename',\n update: 'Update',\n remove: 'Remove',\n selectLocalPack: 'Select the local pack to copy to',\n specifyShortcode: 'Specify a custom shortcode',\n specifyFilename: 'Specify a custom filename',\n copy: 'Copy',\n copyToLocalPack: 'Copy to local pack'\n }\n}\n","export default {\n route: {\n dashboard: '首页',\n introduction: '简述',\n documentation: '文档',\n guide: '引导页',\n permission: '权限测试页',\n pagePermission: '页面权限',\n directivePermission: '指令权限',\n icons: '图标',\n components: '组件',\n componentIndex: '介绍',\n markdown: 'Markdown',\n jsonEditor: 'JSON编辑器',\n dndList: '列表拖拽',\n splitPane: 'Splitpane',\n avatarUpload: '头像上传',\n dropzone: 'Dropzone',\n sticky: 'Sticky',\n countTo: 'CountTo',\n componentMixin: '小组件',\n backToTop: '返回顶部',\n dragDialog: '拖拽 Dialog',\n dragSelect: '拖拽 Select',\n dragKanban: '可拖拽看板',\n charts: '图表',\n keyboardChart: '键盘图表',\n lineChart: '折线图',\n mixChart: '混合图表',\n example: '综合实例',\n nested: '路由嵌套',\n menu1: '菜单1',\n 'menu1-1': '菜单1-1',\n 'menu1-2': '菜单1-2',\n 'menu1-2-1': '菜单1-2-1',\n 'menu1-2-2': '菜单1-2-2',\n 'menu1-3': '菜单1-3',\n menu2: '菜单2',\n Table: 'Table',\n dynamicTable: '动态Table',\n dragTable: '拖拽Table',\n inlineEditTable: 'Table内编辑',\n complexTable: '综合Table',\n treeTable: '树形表格',\n customTreeTable: '自定义树表',\n tab: 'Tab',\n form: '表单',\n createArticle: '创建文章',\n editArticle: '编辑文章',\n articleList: '文章列表',\n errorPages: '错误页面',\n page401: '401',\n page404: '404',\n errorLog: '错误日志',\n excel: 'Excel',\n exportExcel: 'Export Excel',\n selectExcel: 'Export Selected',\n uploadExcel: 'Upload Excel',\n zip: 'Zip',\n pdf: 'PDF',\n exportZip: 'Export Zip',\n theme: '换肤',\n clipboardDemo: 'Clipboard',\n i18n: '国际化',\n externalLink: '外链'\n },\n navbar: {\n logOut: '退出登录',\n dashboard: '首页',\n github: '项目地址',\n theme: '换肤',\n size: '布局大小'\n },\n login: {\n title: '系统登录',\n logIn: '登录',\n username: '账号',\n password: '密码',\n any: '随便填',\n thirdparty: '第三方登录',\n thirdpartyTips: '本地不能模拟,请结合自己业务进行模拟!!!'\n },\n documentation: {\n documentation: '文档',\n github: 'Github 地址'\n },\n permission: {\n roles: '你的权限',\n switchRoles: '切换权限',\n tips: '在某些情况下,不适合使用 v-permission。例如:Element-UI 的 Tab 组件或 el-table-column 以及其它动态渲染 dom 的场景。你只能通过手动设置 v-if 来实现。'\n },\n guide: {\n description: '引导页对于一些第一次进入项目的人很有用,你可以简单介绍下项目的功能。本 Demo 是基于',\n button: '打开引导'\n },\n components: {\n documentation: '文档',\n dropzoneTips: '由于我司业务有特殊需求,而且要传七牛 所以没用第三方,选择了自己封装。代码非常的简单,具体代码你可以在这里看到 @/components/element-ui/Dropzone',\n stickyTips: '当页面滚动到预设的位置会吸附在顶部',\n backToTopTips1: '页面滚动到指定位置会在右下角出现返回顶部按钮',\n backToTopTips2: '可自定义按钮的样式、show/hide、出现的高度、返回的位置 如需文字提示,可在外部使用Element的el-tooltip元素',\n imageUploadTips: '由于我在使用时它只有vue@1版本,而且和mockjs不兼容,所以自己改造了一下,如果大家要使用的话,优先还是使用官方版本。'\n },\n table: {\n dynamicTips1: '固定表头, 按照表头顺序排序',\n dynamicTips2: '不固定表头, 按照点击顺序排序',\n dragTips1: '默认顺序',\n dragTips2: '拖拽后顺序',\n title: '标题',\n importance: '重要性',\n type: '类型',\n remark: '点评',\n search: '搜索',\n add: '添加',\n export: '导出',\n reviewer: '审核人',\n id: '序号',\n date: '时间',\n author: '作者',\n readings: '阅读数',\n status: '状态',\n actions: '操作',\n edit: '编辑',\n publish: '发布',\n draft: '草稿',\n delete: '删除',\n cancel: '取 消',\n confirm: '确 定'\n },\n errorLog: {\n tips: '请点击右上角bug小图标',\n description: '现在的管理后台基本都是spa的形式了,它增强了用户体验,但同时也会增加页面出问题的可能性,可能一个小小的疏忽就导致整个页面的死锁。好在 Vue 官网提供了一个方法来捕获处理异常,你可以在其中进行错误处理或者异常上报。',\n documentation: '文档介绍'\n },\n excel: {\n export: '导出',\n selectedExport: '导出已选择项',\n placeholder: '请输入文件名(默认excel-list)'\n },\n zip: {\n export: '导出',\n placeholder: '请输入文件名(默认file)'\n },\n pdf: {\n tips: '这里使用 window.print() 来实现下载pdf的功能'\n },\n theme: {\n change: '换肤',\n documentation: '换肤文档',\n tips: 'Tips: 它区别于 navbar 上的 theme-pick, 是两种不同的换肤方法,各自有不同的应用场景,具体请参考文档。'\n },\n tagsView: {\n refresh: '刷新',\n close: '关闭',\n closeOthers: '关闭其它',\n closeAll: '关闭所有'\n }\n}\n","export default {\n route: {\n dashboard: 'Panel de control',\n introduction: 'Introducción',\n documentation: 'Documentación',\n guide: 'Guía',\n permission: 'Permisos',\n pagePermission: 'Permisos de la página',\n directivePermission: 'Permisos de la directiva',\n icons: 'Iconos',\n components: 'Componentes',\n componentIndex: 'Introducción',\n markdown: 'Markdown',\n jsonEditor: 'Editor JSON',\n dndList: 'Lista Dnd',\n splitPane: 'Panel dividido',\n avatarUpload: 'Subir avatar',\n dropzone: 'Subir ficheros',\n sticky: 'Sticky',\n countTo: 'CountTo',\n componentMixin: 'Mixin',\n backToTop: 'Ir arriba',\n dragDialog: 'Drag Dialog',\n dragSelect: 'Drag Select',\n dragKanban: 'Drag Kanban',\n charts: 'Gráficos',\n keyboardChart: 'Keyboard Chart',\n lineChart: 'Gráfico de líneas',\n mixChart: 'Mix Chart',\n example: 'Ejemplo',\n nested: 'Rutas anidadass',\n menu1: 'Menu 1',\n 'menu1-1': 'Menu 1-1',\n 'menu1-2': 'Menu 1-2',\n 'menu1-2-1': 'Menu 1-2-1',\n 'menu1-2-2': 'Menu 1-2-2',\n 'menu1-3': 'Menu 1-3',\n menu2: 'Menu 2',\n Table: 'Tabla',\n dynamicTable: 'Tabla dinámica',\n dragTable: 'Arrastrar tabla',\n inlineEditTable: 'Editor',\n complexTable: 'Complex Table',\n treeTable: 'Tree Table',\n customTreeTable: 'Custom TreeTable',\n tab: 'Pestaña',\n form: 'Formulario',\n createArticle: 'Crear artículo',\n editArticle: 'Editar artículo',\n articleList: 'Listado de artículos',\n errorPages: 'Páginas de error',\n page401: '401',\n page404: '404',\n errorLog: 'Registro de errores',\n excel: 'Excel',\n exportExcel: 'Exportar a Excel',\n selectExcel: 'Export seleccionado',\n uploadExcel: 'Subir Excel',\n zip: 'Zip',\n pdf: 'PDF',\n exportZip: 'Exportar a Zip',\n theme: 'Tema',\n clipboardDemo: 'Clipboard',\n i18n: 'I18n',\n externalLink: 'Enlace externo'\n },\n navbar: {\n logOut: 'Salir',\n dashboard: 'Panel de control',\n github: 'Github',\n theme: 'Tema',\n size: 'Tamaño global'\n },\n login: {\n title: 'Formulario de acceso',\n logIn: 'Acceso',\n username: 'Usuario',\n password: 'Contraseña',\n any: 'nada',\n thirdparty: 'Conectar con',\n thirdpartyTips: 'No se puede simular en local, así que combine su propia simulación de negocios. ! !'\n },\n documentation: {\n documentation: 'Documentación',\n github: 'Repositorio Github'\n },\n permission: {\n roles: 'Tus permisos',\n switchRoles: 'Cambiar permisos',\n tips: 'In some cases it is not suitable to use v-permission, such as element Tab component or el-table-column and other asynchronous rendering dom cases which can only be achieved by manually setting the v-if.'\n },\n guide: {\n description: 'The guide page is useful for some people who entered the project for the first time. You can briefly introduce the features of the project. Demo is based on ',\n button: 'Ver guía'\n },\n components: {\n documentation: 'Documentación',\n dropzoneTips: 'Because my business has special needs, and has to upload images to qiniu, so instead of a third party, I chose encapsulate it by myself. It is very simple, you can see the detail code in @/components/element-ui/Dropzone.',\n stickyTips: 'when the page is scrolled to the preset position will be sticky on the top.',\n backToTopTips1: 'When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner',\n backToTopTips2: 'You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally',\n imageUploadTips: 'Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version.'\n },\n table: {\n dynamicTips1: 'Fixed header, sorted by header order',\n dynamicTips2: 'Not fixed header, sorted by click order',\n dragTips1: 'Orden por defecto',\n dragTips2: 'The after dragging order',\n title: 'Título',\n importance: 'Importancia',\n type: 'Tipo',\n remark: 'Remark',\n search: 'Buscar',\n add: 'Añadir',\n export: 'Exportar',\n reviewer: 'reviewer',\n id: 'ID',\n date: 'Fecha',\n author: 'Autor',\n readings: 'Lector',\n status: 'Estado',\n actions: 'Acciones',\n edit: 'Editar',\n publish: 'Publicar',\n draft: 'Draft',\n delete: 'Eliminar',\n cancel: 'Cancelar',\n confirm: 'Confirmar'\n },\n errorLog: {\n tips: 'Please click the bug icon in the upper right corner',\n description: 'Now the management system are basically the form of the spa, it enhances the user experience, but it also increases the possibility of page problems, a small negligence may lead to the entire page deadlock. Fortunately Vue provides a way to catch handling exceptions, where you can handle errors or report exceptions.',\n documentation: 'Documento de introducción'\n },\n excel: {\n export: 'Exportar',\n selectedExport: 'Exportar seleccionados',\n placeholder: 'Por favor escribe un nombre de fichero'\n },\n zip: {\n export: 'Exportar',\n placeholder: 'Por favor escribe un nombre de fichero'\n },\n pdf: {\n tips: 'Here we use window.print() to implement the feature of downloading pdf.'\n },\n theme: {\n change: 'Cambiar tema',\n documentation: 'Documentación del tema',\n tips: 'Tips: It is different from the theme-pick on the navbar is two different skinning methods, each with different application scenarios. Refer to the documentation for details.'\n },\n tagsView: {\n refresh: 'Actualizar',\n close: 'Cerrar',\n closeOthers: 'Cerrar otros',\n closeAll: 'Cerrar todos'\n }\n}\n","export default {\n route: {\n dashboard: 'Tablèu de bòrd',\n introduction: 'Introduccion',\n documentation: 'Documentacion',\n guide: 'Guida',\n permission: 'Autorizacions',\n pagePermission: 'Pagina d’autorizacion',\n directivePermission: 'Politica d’autorizacion',\n icons: 'Icònas',\n components: 'Compausants',\n componentIndex: 'Introduccion',\n markdown: 'Markdown',\n jsonEditor: 'JSON Editor',\n dndList: 'Dnd List',\n splitPane: 'SplitPane',\n avatarUpload: 'Mandadís d’avatar',\n dropzone: 'Dropzone',\n sticky: 'Sticky',\n countTo: 'CountTo',\n componentMixin: 'Mixin',\n backToTop: 'BackToTop',\n dragDialog: 'Drag Dialog',\n dragSelect: 'Drag Select',\n dragKanban: 'Drag Kanban',\n charts: 'Charts',\n keyboardChart: 'Keyboard Chart',\n lineChart: 'Line Chart',\n mixChart: 'Mix Chart',\n example: 'Exemple',\n nested: 'Rotas imbricadas',\n menu1: 'Menú 1',\n 'menu1-1': 'Menu 1-1',\n 'menu1-2': 'Menu 1-2',\n 'menu1-2-1': 'Menu 1-2-1',\n 'menu1-2-2': 'Menu 1-2-2',\n 'menu1-3': 'Menu 1-3',\n menu2: 'Menú 2',\n Table: 'Tablèu',\n dynamicTable: 'Tablèu dinamic',\n dragTable: 'Drag Table',\n inlineEditTable: 'Inline Edit',\n complexTable: 'Tablèu complèx',\n treeTable: 'Arborescéncia',\n customTreeTable: 'Arborescéncia personalizada',\n tab: 'Onglet',\n form: 'Formulari',\n createArticle: 'Crear un article',\n editArticle: 'Modificar l’article',\n articleList: 'Lista d’articles',\n errorPages: 'Paginas d’error',\n page401: '401',\n page404: '404',\n errorLog: 'Jornal d’error',\n excel: 'Excel',\n exportExcel: 'Exportacion Excel',\n selectExcel: 'Exportar los seleccionats',\n uploadExcel: 'Importacion Excel',\n zip: 'Zip',\n pdf: 'PDF',\n exportZip: 'Exportacion Zip',\n theme: 'Tèma',\n clipboardDemo: 'Clipboard',\n i18n: 'I18n',\n externalLink: 'Ligams extèrnes',\n users: 'Utilizaires'\n },\n navbar: {\n logOut: 'Desconnexion',\n dashboard: 'Tablèu de bòrd',\n github: 'Github',\n theme: 'Tèma',\n size: 'Talha totala'\n },\n login: {\n title: 'Formulari de connexion',\n logIn: 'Se connectar',\n username: 'Nom d’’utilizaire',\n password: 'Senhal',\n any: 'qual que siá',\n thirdparty: 'O se connectar amb',\n thirdpartyTips: 'Pòt pas èsser simulat en local, doncas montatz vòstra pròpria simulacion ! ! !'\n },\n documentation: {\n documentation: 'Documentacion',\n github: 'Repertòri Github'\n },\n permission: {\n roles: 'Vòstres ròtles',\n switchRoles: 'Cambiar de ròtle',\n tips: 'Dins qualques cases es pas de bon far d’utilizar v-permission, coma element d’onglet compausant, el-table-column o d’autres renduts dom asincròns que pòdon pas que foncionar amb un parametratge manual de v-if.'\n },\n guide: {\n description: 'La pagina de guida es utila pel monde que dintran dins lo projècte pel primièr còp. Podètz presentar en un mot las foncionalitats del projèctes. La demo es fondada sus ',\n button: 'Mostrar la guida'\n },\n components: {\n documentation: 'Documentacion',\n dropzoneTips: 'Because my business has special needs, and has to upload images to qiniu, so instead of a third party, I chose encapsulate it by myself. It is very simple, you can see the detail code in @/components/element-ui/Dropzone.',\n stickyTips: 'when the page is scrolled to the preset position will be sticky on the top.',\n backToTopTips1: 'When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner',\n backToTopTips2: 'You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally',\n imageUploadTips: 'Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version.'\n },\n table: {\n dynamicTips1: 'Bandièra fixa, triada per òrdre de bandièra',\n dynamicTips2: 'Bandièra pas fixa, triada per òrdre de clic',\n dragTips1: 'L’’òrdre per defaut',\n dragTips2: 'L’’òrdre aprèp lisar-depausar',\n title: 'Títol',\n importance: 'Imp',\n type: 'Tipe',\n remark: 'Remarca',\n search: 'Recercar',\n add: 'Ajustar',\n export: 'Exportar',\n reviewer: 'examinator',\n id: 'ID',\n date: 'Data',\n author: 'Autor',\n readings: 'Lecturas',\n status: 'Estatuts',\n actions: 'Accions',\n edit: 'Modificar',\n publish: 'Publicar',\n draft: 'Ensag',\n delete: 'Suprimir',\n cancel: 'Anullar',\n confirm: 'Confirmar'\n },\n errorLog: {\n tips: 'Mercés de clicar l’’icòna del babau amont a man drecha',\n description: 'Ara que lo sistèma de gestion es coma un spa, melhora l’experiéncia dels utilizaire mas aumenta tanben lo risc de problèmas sus la pagina, una pichona negligéncia pòt menar a un blocatge complèt de la pagina. Urosament Vue fornís de manièras per gerir las excepcions, trobar las errors o senhalar las excepcions.',\n documentation: 'Presentacion del document'\n },\n excel: {\n export: 'Exportar',\n selectedExport: 'Exportar los elements seleccionats',\n placeholder: 'Mercés de picar lo nom de fichièr (per defaut excel-list)'\n },\n zip: {\n export: 'Exportar',\n placeholder: 'Mercés de picar lo nom de fichièr (per defaut file)'\n },\n pdf: {\n tips: 'Aquí utilizam window.print() per prepausar lo telecargament de pdf.'\n },\n theme: {\n change: 'Cambiar lo tèma',\n documentation: 'Documentacion dels tèmas',\n tips: 'Astúcia : es diferent del theme-pick de la barra de navigacion, i a dos metòdes de personalizacion, caduna amb un biais de far diferent. Referiscam a la documentacion per mai de detalhs.'\n },\n tagsView: {\n refresh: 'Actualizar',\n close: 'Tampar',\n closeOthers: 'Tampar los autres',\n closeAll: 'Los tampar totes'\n }\n}\n","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function addNewEmojiFile(packName, file, shortcode, filename, host, token) {\n const data = new FormData()\n if (filename.trim() !== '') {\n data.set('filename', filename)\n }\n if (shortcode.trim() !== '') {\n data.set('shortcode', shortcode)\n }\n data.set('file', file)\n\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/packs/${packName}/files`,\n method: 'post',\n headers: authHeaders(token),\n data\n })\n}\n\nexport function addressOfEmojiInPack(host, packName, name) {\n return `${baseName(host)}/emoji/${packName}/${name}`\n}\n\nexport async function createPack(host, token, packName) {\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/packs/${packName}`,\n method: 'post',\n headers: authHeaders(token)\n })\n}\n\nexport async function deleteEmojiFile(packName, shortcode, host, token) {\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/packs/${packName}/files`,\n method: 'delete',\n headers: authHeaders(token),\n data: { shortcode }\n })\n}\n\nexport async function deletePack(host, token, packName) {\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/packs/${packName}`,\n method: 'delete',\n headers: authHeaders(token)\n })\n}\n\nexport async function downloadFrom(host, instance, packName, as, token) {\n if (as.trim() === '') {\n as = null\n }\n\n return await request({\n baseURL: baseName(host),\n url: '/api/pleroma/emoji/packs/download',\n method: 'post',\n headers: authHeaders(token),\n data: { url: baseName(instance), name: packName, as },\n timeout: 0\n })\n}\n\nexport async function fetchPack(packName, host, token) {\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/packs/${packName}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function importFromFS(host, token) {\n return await request({\n baseURL: baseName(host),\n url: '/api/pleroma/emoji/packs/import',\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function listPacks(host) {\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/packs/`,\n method: 'get'\n })\n}\n\nexport async function listRemotePacks(host, token, instance) {\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/packs/remote?url=${baseName(instance)}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function reloadEmoji(host, token) {\n return await request({\n baseURL: baseName(host),\n url: '/api/pleroma/admin/reload_emoji',\n method: 'post',\n headers: authHeaders(token)\n })\n}\n\nexport async function savePackMetadata(host, token, packName, metadata) {\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/packs/${packName}`,\n method: 'patch',\n headers: authHeaders(token),\n data: { metadata },\n timeout: 0 // This might take a long time\n })\n}\n\nexport async function updateEmojiFile(packName, shortcode, newShortcode, newFilename, force, host, token) {\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/packs/${packName}/files`,\n method: 'patch',\n headers: authHeaders(token),\n data: { shortcode, new_shortcode: newShortcode, new_filename: newFilename, force }\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-icon\",\n \"use\": \"icon-icon-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-404\",\n \"use\": \"icon-404-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-edit\",\n \"use\": \"icon-edit-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-lock\",\n \"use\": \"icon-lock-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-user\",\n \"use\": \"icon-user-usage\",\n \"viewBox\": \"0 0 130 130\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","// extracted by mini-css-extract-plugin\nmodule.exports = {\"menuText\":\"#bfcbd9\",\"menuActiveText\":\"#409EFF\",\"subMenuActiveText\":\"#f4f4f5\",\"menuBg\":\"#304156\",\"menuHover\":\"#263445\",\"subMenuBg\":\"#1f2d3d\",\"subMenuHover\":\"#001528\",\"sideBarWidth\":\"180px\"};","import axios from 'axios'\nimport { Message } from 'element-ui'\n\n// create an axios instance\nconst service = axios.create({\n timeout: 60000 // request timeout\n})\n\n// response interceptor\nservice.interceptors.response.use(\n response => response,\n error => {\n let errorMessage\n console.log(`Error ${error}`)\n\n if (error.response) {\n const edata = error.response.data.error ? error.response.data.error : error.response.data\n errorMessage = !error.response.headers['content-type'].includes('application/json')\n ? `${error.message}`\n : `${error.message} - ${edata}`\n } else {\n errorMessage = error\n }\n\n Message({\n message: errorMessage,\n type: 'error',\n duration: 5 * 1000\n })\n return Promise.reject(error)\n }\n)\n\nexport default service\n","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-clipboard\",\n \"use\": \"icon-clipboard-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-email\",\n \"use\": \"icon-email-usage\",\n \"viewBox\": \"0 0 128 96\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-chart\",\n \"use\": \"icon-chart-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',_vm._g({class:_vm.svgClass,attrs:{\"aria-hidden\":\"true\"}},_vm.$listeners),[_c('use',{attrs:{\"xlink:href\":_vm.iconName}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=17178ffc&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=17178ffc&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"17178ffc\",\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","// extracted by mini-css-extract-plugin\nmodule.exports = {\"menuText\":\"#bfcbd9\",\"menuActiveText\":\"#409EFF\",\"subMenuActiveText\":\"#f4f4f5\",\"menuBg\":\"#304156\",\"menuHover\":\"#263445\",\"subMenuBg\":\"#1f2d3d\",\"subMenuHover\":\"#001528\",\"sideBarWidth\":\"180px\"};"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/app.3fcec8f6.js b/priv/static/adminfe/static/js/app.3fcec8f6.js new file mode 100644 index 000000000..9a6fb1307 --- /dev/null +++ b/priv/static/adminfe/static/js/app.3fcec8f6.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["app"],{"+aF5":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-pdf",use:"icon-pdf-usage",viewBox:"0 0 1024 1024",content:''});o.a.add(i);t.default=i},"0Fbn":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-people",use:"icon-people-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},"1+ww":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-eye-open",use:"icon-eye-open-usage",viewBox:"0 0 1024 1024",content:''});o.a.add(i);t.default=i},"18BR":function(e,t,n){"use strict";var a=n("CzPo");n.n(a).a},"28eg":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-exit-fullscreen",use:"icon-exit-fullscreen-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},"3PhE":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-nested",use:"icon-nested-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},"5TQQ":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-theme",use:"icon-theme-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},"6xvN":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-form",use:"icon-form-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},"94Jb":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-dashboard",use:"icon-dashboard-usage",viewBox:"0 0 128 100",content:''});o.a.add(i);t.default=i},"9i3r":function(e,t,n){"use strict";n.d(t,"a",function(){return a});var a=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"localhost";return e.match(/https?:\/\//)?e:function(e){return e.startsWith("localhost:")||e.startsWith("127.0.0.1:")}(e)?"http://".concat(e):"https://".concat(e)}},CzPo:function(e,t,n){},EqXK:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-shopping",use:"icon-shopping-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},F3lI:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-bug",use:"icon-bug-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},"F9+T":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-international",use:"icon-international-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},FDDl:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-qq",use:"icon-qq-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},GPBF:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-link",use:"icon-link-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},HIWW:function(e,t,n){"use strict";var a=n("MoCq");n.n(a).a},Hnev:function(e,t,n){"use strict";var a=n("UqWv");n.n(a).a},ICep:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-guide 2",use:"icon-guide 2-usage",viewBox:"0 0 1000 1000",content:''});o.a.add(i);t.default=i},JYDz:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-language",use:"icon-language-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},Kcm3:function(e,t,n){},Kj24:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-password",use:"icon-password-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},LxGF:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-peoples",use:"icon-peoples-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},MEYL:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-money",use:"icon-money-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},MMMJ:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-example",use:"icon-example-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},MoCq:function(e,t,n){},MokB:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-list",use:"icon-list-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},P8iQ:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-settings",use:"icon-settings-usage",viewBox:"0 0 490.2 490.2",content:'\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n'});o.a.add(i);t.default=i},"R/8a":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-message",use:"icon-message-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},"R/Hx":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-table",use:"icon-table-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},SZWj:function(e,t,n){"use strict";var a=n("Xm3t");n.n(a).a},TfVu:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-eye",use:"icon-eye-usage",viewBox:"0 0 128 64",content:''});o.a.add(i);t.default=i},Tfa4:function(e,t,n){},"Uf/o":function(e,t,n){var a={"./404.svg":"oUrx","./bug.svg":"F3lI","./chart.svg":"yCkv","./clipboard.svg":"vDVG","./component.svg":"VtY+","./dashboard.svg":"94Jb","./documentation.svg":"kPu2","./drag.svg":"m7++","./edit.svg":"qkZ8","./email.svg":"y7eQ","./example.svg":"MMMJ","./excel.svg":"ZZmv","./exit-fullscreen.svg":"28eg","./eye-open.svg":"1+ww","./eye.svg":"TfVu","./form.svg":"6xvN","./fullscreen.svg":"mSHS","./guide 2.svg":"ICep","./guide.svg":"ZoO1","./icon.svg":"nZHn","./international.svg":"F9+T","./language.svg":"JYDz","./link.svg":"GPBF","./list.svg":"MokB","./lock.svg":"qwAt","./message.svg":"R/8a","./money.svg":"MEYL","./nested.svg":"3PhE","./password.svg":"Kj24","./pdf.svg":"+aF5","./people.svg":"0Fbn","./peoples.svg":"LxGF","./qq.svg":"FDDl","./search.svg":"jo2x","./settings.svg":"P8iQ","./shopping.svg":"EqXK","./size.svg":"hkRB","./star.svg":"cIpu","./tab.svg":"j7e1","./table.svg":"R/Hx","./theme.svg":"5TQQ","./tree.svg":"k80C","./user.svg":"s7Vf","./wechat.svg":"gNoN","./zip.svg":"iqZD"};function r(e){var t=s(e);return n(t)}function s(e){if(!n.o(a,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return a[e]}r.keys=function(){return Object.keys(a)},r.resolve=s,e.exports=r,r.id="Uf/o"},UqWv:function(e,t,n){},"VtY+":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-component",use:"icon-component-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},Vtdi:function(e,t,n){"use strict";n.r(t);var a={};n.r(a),n.d(a,"parseTime",function(){return me}),n.d(a,"formatTime",function(){return fe}),n.d(a,"timeAgo",function(){return na}),n.d(a,"numberFormatter",function(){return aa}),n.d(a,"toThousandFilter",function(){return ra});var r=n("Kw5r"),s=n("p46w"),o=n.n(s),i=(n("9d8Q"),n("XJYT")),c=n.n(i),u=(n("D66Q"),n("sg+I"),{name:"App"}),l=n("KHd+"),p=Object(l.a)(u,function(){var e=this.$createElement,t=this._self._c||e;return t("div",{attrs:{id:"app"}},[t("router-view")],1)},[],!1,null,null,null);p.options.__file="App.vue";var d=p.exports,h=n("L2JU"),m=n("o0o1"),f=n.n(m),v=n("yXPU"),g=n.n(v),w=n("t3Un"),b=n("X4fA"),y=n("9i3r");function T(e,t){return x.apply(this,arguments)}function x(){return(x=g()(f.a.mark(function e(t,n){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(t),url:"/api/pleroma/admin/need_reboot",method:"get",headers:k(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function E(e,t){return S.apply(this,arguments)}function S(){return(S=g()(f.a.mark(function e(t,n){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(t),url:"/api/pleroma/admin/restart",method:"get",headers:k(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var k=function(e){return e?{Authorization:"Bearer ".concat(Object(b.b)())}:{}},_={state:{sidebar:{opened:!o.a.get("sidebarStatus")||!!+o.a.get("sidebarStatus"),withoutAnimation:!1},device:"desktop",language:o.a.get("language")||"en",needReboot:!1,size:o.a.get("size")||"medium",invitesEnabled:!1},mutations:{TOGGLE_SIDEBAR:function(e){e.sidebar.opened=!e.sidebar.opened,e.sidebar.withoutAnimation=!1,e.sidebar.opened?o.a.set("sidebarStatus",1):o.a.set("sidebarStatus",0)},CLOSE_SIDEBAR:function(e,t){o.a.set("sidebarStatus",0),e.sidebar.opened=!1,e.sidebar.withoutAnimation=t},TOGGLE_DEVICE:function(e,t){e.device=t},SET_INVITES_ENABLED:function(e,t){e.invitesEnabled=t},SET_LANGUAGE:function(e,t){e.language=t,o.a.set("language",t)},TOGGLE_REBOOT:function(e,t){e.needReboot=t},SET_SIZE:function(e,t){e.size=t,o.a.set("size",t)}},actions:{closeSideBar:function(e,t){(0,e.commit)("CLOSE_SIDEBAR",t.withoutAnimation)},NeedReboot:function(){var e=g()(f.a.mark(function e(t){var n,a,r;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.commit,a=t.getters,e.next=3,T(a.authHost,a.token);case 3:r=e.sent,n("TOGGLE_REBOOT",r.data.need_reboot);case 5:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),RestartApplication:function(){var e=g()(f.a.mark(function e(t){var n,a;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.commit,a=t.getters,e.next=3,E(a.authHost,a.token);case 3:n("TOGGLE_REBOOT",!1);case 4:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),SetInvitesEnabled:function(e,t){(0,e.commit)("SET_INVITES_ENABLED",t)},setLanguage:function(e,t){(0,e.commit)("SET_LANGUAGE",t)},setSize:function(e,t){(0,e.commit)("SET_SIZE",t)},toggleDevice:function(e,t){(0,e.commit)("TOGGLE_DEVICE",t)},toggleSideBar:function(e){(0,e.commit)("TOGGLE_SIDEBAR")}}},O={state:{logs:[]},mutations:{ADD_ERROR_LOG:function(e,t){e.logs.push(t)}},actions:{addErrorLog:function(e,t){(0,e.commit)("ADD_ERROR_LOG",t)}}},A=n("MVZn"),L=n.n(A),I=n("LvDl"),C=n.n(I);function R(e,t,n){return D.apply(this,arguments)}function D(){return(D=g()(f.a.mark(function e(t,n,a){var r,s,o=arguments;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=o.length>3&&void 0!==o[3]?o[3]:1,s=new URLSearchParams(C.a.omitBy(L()({},a,{page:r}),C.a.isUndefined)).toString(),e.next=4,Object(w.a)({baseURL:Object(y.a)(t),url:"/api/pleroma/admin/moderation_log?".concat(s),method:"get",headers:z(n)});case 4:return e.abrupt("return",e.sent);case 5:case"end":return e.stop()}},e)}))).apply(this,arguments)}function V(e,t){return j.apply(this,arguments)}function j(){return(j=g()(f.a.mark(function e(t,n){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(t),url:"/api/pleroma/admin/users?filters=is_admin",method:"get",headers:z(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function P(e,t){return M.apply(this,arguments)}function M(){return(M=g()(f.a.mark(function e(t,n){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(t),url:"/api/pleroma/admin/users?filters=is_moderator",method:"get",headers:z(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var z=function(e){return e?{Authorization:"Bearer ".concat(Object(b.b)())}:{}},U={state:{fetchedLog:[],logItemsCount:0,admins:[],moderators:[],logLoading:!0,adminsLoading:!0},mutations:{SET_LOG_LOADING:function(e,t){e.logLoading=t},SET_ADMINS_LOADING:function(e,t){e.adminsLoading=t},SET_MODERATION_LOG:function(e,t){e.fetchedLog=t},SET_MODERATION_LOG_COUNT:function(e,t){e.logItemsCount=t},SET_ADMINS:function(e,t){e.admins=t},SET_MODERATORS:function(e,t){e.moderators=t}},actions:{FetchModerationLog:function(){var e=g()(f.a.mark(function e(t){var n,a,r,s,o=arguments;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.commit,a=t.getters,r=o.length>1&&void 0!==o[1]?o[1]:{},e.next=4,R(a.authHost,a.token,r);case 4:s=e.sent,n("SET_MODERATION_LOG",s.data.items),n("SET_MODERATION_LOG_COUNT",s.data.total),n("SET_LOG_LOADING",!1);case 8:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),FetchAdmins:function(){var e=g()(f.a.mark(function e(t){var n,a,r,s;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.commit,a=t.getters,e.next=3,V(a.authHost,a.token);case 3:return r=e.sent,e.next=6,P(a.authHost,a.token);case 6:s=e.sent,n("SET_ADMINS",r.data),n("SET_MODERATORS",s.data),n("SET_ADMINS_LOADING",!1);case 10:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}()}};function H(e,t,n,a){return B.apply(this,arguments)}function B(){return(B=g()(f.a.mark(function e(t,n,a,r){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/users/invite_token",method:"post",headers:K(r),data:n&&n.length>0?{max_use:t,expires_at:n}:{max_use:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function N(e,t,n,a){return F.apply(this,arguments)}function F(){return(F=g()(f.a.mark(function e(t,n,a,r){var s;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return s=n.length>0?{email:t,name:n}:{email:t},e.next=3,Object(w.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/users/email_invite",method:"post",headers:K(r),data:s});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}function G(e,t){return Y.apply(this,arguments)}function Y(){return(Y=g()(f.a.mark(function e(t,n){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(t),url:"/api/pleroma/admin/users/invites",method:"get",headers:K(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function $(e,t,n){return q.apply(this,arguments)}function q(){return(q=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/revoke_invite",method:"post",headers:K(a),data:{token:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var K=function(e){return e?{Authorization:"Bearer ".concat(Object(b.b)())}:{}},W=n("mSNy"),Z={state:{inviteTokens:[],loading:!1,newToken:{}},mutations:{SET_LOADING:function(e,t){e.loading=t},SET_NEW_TOKEN:function(e,t){e.newToken=t},SET_TOKENS:function(e,t){e.inviteTokens=t}},actions:{FetchInviteTokens:function(){var e=g()(f.a.mark(function e(t){var n,a,r;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.commit,a=t.getters,n("SET_LOADING",!0),e.next=4,G(a.authHost,a.token);case 4:r=e.sent,n("SET_TOKENS",r.data.invites.reverse()),n("SET_LOADING",!1);case 7:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),GenerateInviteToken:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.dispatch,s=t.getters,o=n.maxUse,i=n.expiresAt,e.prev=2,e.next=5,H(o,i,s.authHost,s.token);case 5:c=e.sent,u=c.data,a("SET_NEW_TOKEN",{token:u.token,maxUse:u.max_use,expiresAt:u.expires_at}),e.next=13;break;case 10:return e.prev=10,e.t0=e.catch(2),e.abrupt("return");case 13:r("FetchInviteTokens");case 14:case"end":return e.stop()}},e,null,[[2,10]])}));return function(t,n){return e.apply(this,arguments)}}(),InviteUserViaEmail:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t.commit,t.dispatch,a=t.getters,r=n.email,s=n.name,e.prev=2,e.next=5,N(r,s,a.authHost,a.token);case 5:e.next=10;break;case 7:return e.prev=7,e.t0=e.catch(2),e.abrupt("return");case 10:Object(i.Message)({message:W.a.t("invites.emailSent"),type:"success",duration:5e3});case 11:case"end":return e.stop()}},e,null,[[2,7]])}));return function(t,n){return e.apply(this,arguments)}}(),RemoveNewToken:function(e){(0,e.commit)("SET_NEW_TOKEN",{})},RevokeToken:function(){var e=g()(f.a.mark(function e(t,n){var a,r;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t.commit,a=t.dispatch,r=t.getters,e.prev=1,e.next=4,$(n,r.authHost,r.token);case 4:e.next=9;break;case 6:return e.prev=6,e.t0=e.catch(1),e.abrupt("return");case 9:a("FetchInviteTokens");case 10:case"end":return e.stop()}},e,null,[[1,6]])}));return function(t,n){return e.apply(this,arguments)}}()}},Q=n("RIqP"),J=n.n(Q);function X(e,t){return ee.apply(this,arguments)}function ee(){return(ee=g()(f.a.mark(function e(t,n){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(t),url:"/api/v1/instance/peers",method:"get",headers:te(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var te=function(e){return e?{Authorization:"Bearer ".concat(Object(b.b)())}:{}},ne={state:{fetchedPeers:[],loading:!0},mutations:{SET_PEERS:function(e,t){e.fetchedPeers=t},SET_LOADING:function(e,t){e.loading=t}},actions:{FetchPeers:function(){var e=g()(f.a.mark(function e(t){var n,a,r;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.commit,a=t.getters,e.next=3,X(a.authHost,a.token);case 3:r=e.sent,n("SET_PEERS",J()(r.data).sort()),n("SET_LOADING",!1);case 6:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}()}},ae=n("jE9Z"),re={name:"Hamburger",props:{isActive:{type:Boolean,default:!1},toggleClick:{type:Function,default:null}}},se=(n("18BR"),Object(l.a)(re,function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticStyle:{padding:"0 15px"},on:{click:this.toggleClick}},[t("svg",{staticClass:"hamburger",class:{"is-active":this.isActive},attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg",width:"64",height:"64"}},[t("path",{attrs:{d:"M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM142.4 642.1L298.7 519a8.84 8.84 0 0 0 0-13.9L142.4 381.9c-5.8-4.6-14.4-.5-14.4 6.9v246.3a8.9 8.9 0 0 0 14.4 7z"}})])])},[],!1,null,"69c6c5c4",null));se.options.__file="index.vue";var oe={components:{Hamburger:se.exports},computed:L()({},Object(h.b)(["sidebar","name","avatar","device"])),methods:{toggleSideBar:function(){this.$store.dispatch("toggleSideBar")},logout:function(){this.$store.dispatch("LogOut").then(function(){location.reload()})}}},ie=(n("fhHp"),Object(l.a)(oe,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"navbar"},[n("hamburger",{staticClass:"hamburger-container",attrs:{"toggle-click":e.toggleSideBar,"is-active":e.sidebar.opened}}),e._v(" "),n("div",{staticClass:"right-menu"},[n("el-dropdown",{staticClass:"avatar-container right-menu-item hover-effect",attrs:{trigger:"click"}},[n("div",{staticClass:"avatar-wrapper"},[n("img",{staticClass:"user-avatar",attrs:{src:e.avatar+"?imageView2/1/w/80/h/80"}})]),e._v(" "),n("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[n("el-dropdown-item",[n("span",{staticStyle:{display:"block"},on:{click:e.logout}},[e._v(e._s(e.$t("navbar.logOut")))])])],1)],1)],1)],1)},[],!1,null,"28de7ff2",null));ie.options.__file="Navbar.vue";var ce=ie.exports,ue=n("33yf"),le=n.n(ue);function pe(e){return this.$te("route."+e)?this.$t("route."+e):e}var de=n("cDf5"),he=n.n(de);function me(e,t){if(0===arguments.length)return null;var n,a=t||"{y}-{m}-{d} {h}:{i}:{s}";"object"===he()(e)?n=e:("string"==typeof e&&/^[0-9]+$/.test(e)&&(e=parseInt(e)),"number"==typeof e&&10===e.toString().length&&(e*=1e3),n=new Date(e));var r={y:n.getFullYear(),m:n.getMonth()+1,d:n.getDate(),h:n.getHours(),i:n.getMinutes(),s:n.getSeconds(),a:n.getDay()};return a.replace(/{(y|m|d|h|i|s|a)+}/g,function(e,t){var n=r[t];return"a"===t?["日","一","二","三","四","五","六"][n]:(e.length>0&&n<10&&(n="0"+n),n||0)})}function fe(e,t){e=1e3*+e;var n=new Date(e),a=(Date.now()-n)/1e3;return a<30?"刚刚":a<3600?Math.ceil(a/60)+"分钟前":a<86400?Math.ceil(a/3600)+"小时前":a<172800?"1天前":t?me(e,t):n.getMonth()+1+"月"+n.getDate()+"日"+n.getHours()+"时"+n.getMinutes()+"分"}function ve(e){return/^(https?:|mailto:|tel:)/.test(e)}var ge={name:"MenuItem",functional:!0,props:{icon:{type:String,default:""},title:{type:String,default:""}},render:function(e,t){var n=t.props,a=n.icon,r=n.title,s=[];return a&&s.push(e("svg-icon",{attrs:{"icon-class":a}})),r&&s.push(e("span",{slot:"title"},[r])),s}},we=Object(l.a)(ge,void 0,void 0,!1,null,null,null);we.options.__file="Item.vue";var be=we.exports,ye={props:{to:{type:String,required:!0}},methods:{linkProps:function(e){return ve(e)?{is:"a",href:e,target:"_blank",rel:"noopener"}:{is:"router-link",to:e}}}},Te=Object(l.a)(ye,function(){var e=this.$createElement;return(this._self._c||e)("component",this._b({},"component",this.linkProps(this.to),!1),[this._t("default")],2)},[],!1,null,null,null);Te.options.__file="Link.vue";var xe={name:"SidebarItem",components:{Item:be,AppLink:Te.exports},mixins:[{computed:{device:function(){return this.$store.state.app.device}},mounted:function(){this.fixBugIniOS()},methods:{fixBugIniOS:function(){var e=this,t=this.$refs.subMenu;if(t){var n=t.handleMouseleave;t.handleMouseleave=function(t){"mobile"!==e.device&&n(t)}}}}}],props:{item:{type:Object,required:!0},isNest:{type:Boolean,default:!1},basePath:{type:String,default:""}},data:function(){return{onlyOneChild:null}},computed:{invitesEnabled:function(){return"/invites"!==this.basePath||this.$store.state.app.invitesEnabled}},methods:{hasOneShowingChild:function(e,t){var n=this,a=e.filter(function(e){return!e.hidden&&(n.onlyOneChild=e,!0)});return 1===a.length||0===a.length&&(this.onlyOneChild=L()({},t,{path:"",noShowingChildren:!0}),!0)},resolvePath:function(e){return this.isExternalLink(e)?e:le.a.resolve(this.basePath,e)},isExternalLink:function(e){return ve(e)},generateTitle:pe}},Ee=Object(l.a)(xe,function(){var e=this,t=e.$createElement,n=e._self._c||t;return!e.item.hidden&&e.item.children&&e.invitesEnabled?n("div",{staticClass:"menu-wrapper"},[!e.hasOneShowingChild(e.item.children,e.item)||e.onlyOneChild.children&&!e.onlyOneChild.noShowingChildren||e.item.alwaysShow?n("el-submenu",{ref:"subMenu",attrs:{index:e.resolvePath(e.item.path)}},[n("template",{slot:"title"},[e.item.meta?n("item",{attrs:{icon:e.item.meta.icon,title:e.generateTitle(e.item.meta.title)}}):e._e()],1),e._v(" "),e._l(e.item.children,function(t){return[t.hidden?e._e():[t.children&&t.children.length>0?n("sidebar-item",{key:t.path,staticClass:"nest-menu",attrs:{"is-nest":!0,item:t,"base-path":e.resolvePath(t.path)}}):n("app-link",{key:t.name,attrs:{to:e.resolvePath(t.path)}},[n("el-menu-item",{attrs:{index:e.resolvePath(t.path)}},[t.meta?n("item",{attrs:{icon:t.meta.icon,title:e.generateTitle(t.meta.title)}}):e._e()],1)],1)]]})],2):[n("app-link",{attrs:{to:e.resolvePath(e.onlyOneChild.path)}},[n("el-menu-item",{class:{"submenu-title-noDropdown":!e.isNest},attrs:{index:e.resolvePath(e.onlyOneChild.path)}},[e.onlyOneChild.meta?n("item",{attrs:{icon:e.onlyOneChild.meta.icon||e.item.meta.icon,title:e.generateTitle(e.onlyOneChild.meta.title)}}):e._e()],1)],1)]],2):e._e()},[],!1,null,null,null);Ee.options.__file="SidebarItem.vue";var Se=Ee.exports,ke=n("zx4i"),_e=n.n(ke),Oe={components:{SidebarItem:Se},computed:L()({},Object(h.b)(["permission_routers","sidebar"]),{variables:function(){return _e.a},isCollapse:function(){return!this.sidebar.opened}})},Ae=Object(l.a)(Oe,function(){var e=this.$createElement,t=this._self._c||e;return t("el-scrollbar",{attrs:{"wrap-class":"scrollbar-wrapper"}},[t("el-menu",{attrs:{"default-active":this.$route.path,collapse:this.isCollapse,"background-color":this.variables.menuBg,"text-color":this.variables.menuText,"active-text-color":this.variables.menuActiveText,mode:"vertical"}},this._l(this.permission_routers,function(e){return t("sidebar-item",{key:e.path,attrs:{item:e,"base-path":e.path}})}),1)],1)},[],!1,null,null,null);Ae.options.__file="index.vue";var Le=Ae.exports,Ie={name:"ScrollPane",data:function(){return{left:0}},methods:{handleScroll:function(e){var t=e.wheelDelta||40*-e.deltaY,n=this.$refs.scrollContainer.$refs.wrap;n.scrollLeft=n.scrollLeft+t/4},moveToTarget:function(e){var t=this.$refs.scrollContainer.$el.offsetWidth,n=this.$refs.scrollContainer.$refs.wrap,a=this.$parent.$refs.tag,r=null,s=null;if(a.length>0&&(r=a[0],s=a[a.length-1]),r===e)n.scrollLeft=0;else if(s===e)n.scrollLeft=n.scrollWidth-t;else{var o=a.findIndex(function(t){return t===e}),i=a[o-1],c=a[o+1],u=c.$el.offsetLeft+c.$el.offsetWidth+4,l=i.$el.offsetLeft-4;u>n.scrollLeft+t?n.scrollLeft=u-t:l1&&void 0!==arguments[1]?arguments[1]:"/",a=[];return e.forEach(function(e){if(e.meta&&e.meta.affix&&a.push({path:le.a.resolve(n,e.path),name:e.name,meta:L()({},e.meta)}),e.children){var r=t.filterAffixTags(e.children,e.path);r.length>=1&&(a=[].concat(J()(a),J()(r)))}}),a},initTags:function(){var e=this.affixTags=this.filterAffixTags(this.routers),t=!0,n=!1,a=void 0;try{for(var r,s=e[Symbol.iterator]();!(t=(r=s.next()).done);t=!0){var o=r.value;o.name&&this.$store.dispatch("addVisitedView",o)}}catch(e){n=!0,a=e}finally{try{t||null==s.return||s.return()}finally{if(n)throw a}}},addTags:function(){return this.$route.name&&this.$store.dispatch("addView",this.$route),!1},moveToCurrentTag:function(){var e=this,t=this.$refs.tag;this.$nextTick(function(){var n=!0,a=!1,r=void 0;try{for(var s,o=t[Symbol.iterator]();!(n=(s=o.next()).done);n=!0){var i=s.value;if(i.to.path===e.$route.path){e.$refs.scrollPane.moveToTarget(i),i.to.fullPath!==e.$route.fullPath&&e.$store.dispatch("updateVisitedView",e.$route);break}}}catch(e){a=!0,r=e}finally{try{n||null==o.return||o.return()}finally{if(a)throw r}}})},refreshSelectedTag:function(e){var t=this;this.$store.dispatch("delCachedView",e).then(function(){var n=e.fullPath;t.$nextTick(function(){t.$router.replace({path:"/redirect"+n})})})},closeSelectedTag:function(e){var t=this;this.$store.dispatch("delView",e).then(function(n){var a=n.visitedViews;t.isActive(e)&&t.toLastView(a)})},closeOthersTags:function(){var e=this;this.$router.push(this.selectedTag),this.$store.dispatch("delOthersViews",this.selectedTag).then(function(){e.moveToCurrentTag()})},closeAllTags:function(e){var t=this;this.$store.dispatch("delAllViews").then(function(n){var a=n.visitedViews;t.affixTags.some(function(t){return t.path===e.path})||t.toLastView(a)})},toLastView:function(e){var t=e.slice(-1)[0];t?this.$router.push(t):this.$router.push("/")},openMenu:function(e,t){var n=this.$el.getBoundingClientRect().left,a=this.$el.offsetWidth-105,r=t.clientX-n+15;this.left=r>a?a:r,this.top=t.clientY,this.visible=!0,this.selectedTag=e},closeMenu:function(){this.visible=!1}}},De=(n("Hnev"),n("Yymj"),Object(l.a)(Re,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"tags-view-container"},[n("scroll-pane",{ref:"scrollPane",staticClass:"tags-view-wrapper"},e._l(e.visitedViews,function(t){return n("router-link",{key:t.path,ref:"tag",refInFor:!0,staticClass:"tags-view-item",class:e.isActive(t)?"active":"",attrs:{to:{path:t.path,query:t.query,fullPath:t.fullPath},tag:"span"},nativeOn:{mouseup:function(n){return"button"in n&&1!==n.button?null:e.closeSelectedTag(t)},contextmenu:function(n){return n.preventDefault(),e.openMenu(t,n)}}},[e._v("\n "+e._s(e.generateTitle(t.title))+"\n "),t.meta.affix?e._e():n("span",{staticClass:"el-icon-close",on:{click:function(n){return n.preventDefault(),n.stopPropagation(),e.closeSelectedTag(t)}}})])}),1),e._v(" "),n("ul",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"contextmenu",style:{left:e.left+"px",top:e.top+"px"}},[n("li",{on:{click:function(t){return e.refreshSelectedTag(e.selectedTag)}}},[e._v(e._s(e.$t("tagsView.refresh")))]),e._v(" "),e.selectedTag.meta&&e.selectedTag.meta.affix?e._e():n("li",{on:{click:function(t){return e.closeSelectedTag(e.selectedTag)}}},[e._v(e._s(e.$t("tagsView.close")))]),e._v(" "),n("li",{on:{click:e.closeOthersTags}},[e._v(e._s(e.$t("tagsView.closeOthers")))]),e._v(" "),n("li",{on:{click:function(t){return e.closeAllTags(e.selectedTag)}}},[e._v(e._s(e.$t("tagsView.closeAll")))])])],1)},[],!1,null,"e1cdb714",null));De.options.__file="TagsView.vue";var Ve=De.exports,je={name:"AppMain",computed:{cachedViews:function(){return this.$store.state.tagsView.cachedViews},key:function(){return this.$route.fullPath}}},Pe=(n("Z+gY"),Object(l.a)(je,function(){var e=this.$createElement,t=this._self._c||e;return t("section",{staticClass:"app-main"},[t("transition",{attrs:{name:"fade-transform",mode:"out-in"}},[t("keep-alive",{attrs:{include:this.cachedViews}},[t("router-view",{key:this.key})],1)],1)],1)},[],!1,null,"f852c4f2",null));Pe.options.__file="AppMain.vue";var Me=Pe.exports,ze=document.body,Ue={name:"Layout",components:{Navbar:ce,Sidebar:Le,AppMain:Me,TagsView:Ve},mixins:[{watch:{$route:function(e){"mobile"===this.device&&this.sidebar.opened&&Zn.dispatch("closeSideBar",{withoutAnimation:!1})}},beforeMount:function(){window.addEventListener("resize",this.resizeHandler)},mounted:function(){var e=this.isMobile(),t=this.isTablet();(e||t)&&(Zn.dispatch("toggleDevice",e?"mobile":"tablet"),Zn.dispatch("closeSideBar",{withoutAnimation:!0}))},methods:{isMobile:function(){return ze.getBoundingClientRect().width-3<480},isTablet:function(){var e=ze.getBoundingClientRect();return e.width-3<801&&e.width-3>480},resizeHandler:function(){if(!document.hidden){var e=this.isMobile(),t=this.isTablet();e||t?(Zn.dispatch("toggleDevice",e?"mobile":"tablet"),Zn.dispatch("closeSideBar",{withoutAnimation:!0})):Zn.dispatch("toggleDevice","desktop")}}}}],computed:{sidebar:function(){return this.$store.state.app.sidebar},device:function(){return this.$store.state.app.device},classObj:function(){return{hideSidebar:!this.sidebar.opened,openSidebar:this.sidebar.opened,withoutAnimation:this.sidebar.withoutAnimation,mobile:"mobile"===this.device}}},methods:{handleClickOutside:function(){this.$store.dispatch("closeSideBar",{withoutAnimation:!1})}}},He=(n("SZWj"),Object(l.a)(Ue,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"app-wrapper",class:e.classObj},["mobile"===e.device&&e.sidebar.opened?n("div",{staticClass:"drawer-bg",on:{click:e.handleClickOutside}}):e._e(),e._v(" "),n("sidebar",{staticClass:"sidebar-container"}),e._v(" "),n("div",{staticClass:"main-container"},[n("navbar"),e._v(" "),n("app-main")],1)],1)},[],!1,null,"767d264f",null));He.options.__file="Layout.vue";var Be=He.exports;r.default.use(ae.a);var Ne=[""]||!1,Fe=Ne.includes("settings"),Ge={path:"/settings",component:Be,children:[{path:"index",component:function(){return Promise.all([n.e("chunk-commons"),n.e("chunk-5118"),n.e("chunk-43ca")]).then(n.bind(null,"YcIK"))},name:"Settings",meta:{title:"Settings",icon:"settings",noCache:!0}}]},Ye=Ne.includes("statuses"),$e={path:"/statuses",component:Be,children:[{path:"index",component:function(){return Promise.all([n.e("chunk-commons"),n.e("chunk-df62"),n.e("ZhIB"),n.e("chunk-143c"),n.e("chunk-176e")]).then(n.bind(null,"FtQ1"))},name:"Statuses",meta:{title:"Statuses",icon:"form",noCache:!0}}]},qe=Ne.includes("reports"),Ke={path:"/reports",component:Be,children:[{path:"index",component:function(){return Promise.all([n.e("chunk-commons"),n.e("chunk-df62"),n.e("ZhIB"),n.e("chunk-e404")]).then(n.bind(null,"cEOe"))},name:"Reports",meta:{title:"Reports",icon:"documentation",noCache:!0}}]},We=Ne.includes("invites"),Ze={path:"/invites",component:Be,children:[{path:"index",component:function(){return Promise.all([n.e("chunk-commons"),n.e("chunk-7c6b")]).then(n.bind(null,"HMof"))},name:"Invites",meta:{title:"Invites",icon:"guide",noCache:!0}}]},Qe=Ne.includes("emoji-packs"),Je={path:"/emoji_packs",component:Be,children:[{path:"index",component:function(){return Promise.all([n.e("chunk-commons"),n.e("chunk-c5f4")]).then(n.bind(null,"26YS"))},name:"Emoji Packs",meta:{title:"Emoji Packs",icon:"eye-open",noCache:!0}}]},Xe=Ne.includes("moderation-log"),et={path:"/moderation_log",component:Be,children:[{path:"index",component:function(){return Promise.all([n.e("chunk-commons"),n.e("chunk-df62"),n.e("chunk-1609")]).then(n.bind(null,"CmY0"))},name:"Moderation Log",meta:{title:"moderationLog",icon:"list",noCache:!0}}]},tt=[{path:"/redirect",component:Be,hidden:!0,children:[{path:"/redirect/:path*",component:function(){return n.e("7zzA").then(n.bind(null,"7zzA"))}}]},{path:"/login-pleroma",component:function(){return Promise.all([n.e("oAJy"),n.e("chunk-16d0")]).then(n.bind(null,"iRgq"))},hidden:!0},{path:"/login",component:function(){return Promise.all([n.e("oAJy"),n.e("chunk-4e7e")]).then(n.bind(null,"ntYl"))},hidden:!0},{path:"/auth-redirect",component:function(){return n.e("JEtC").then(n.bind(null,"JEtC"))},hidden:!0},{path:"/404",component:function(){return n.e("chunk-070d").then(n.bind(null,"/eX4"))},hidden:!0},{path:"/401",component:function(){return n.e("chunk-6e81").then(n.bind(null,"UUO+"))},hidden:!0},{path:"",component:Be,redirect:"/users/index"}],nt=new ae.a({scrollBehavior:function(){return{y:0}},routes:tt}),at=[{path:"/users",component:Be,children:[{path:"index",component:function(){return Promise.all([n.e("chunk-commons"),n.e("ZhIB"),n.e("chunk-143c"),n.e("chunk-0cbc")]).then(n.bind(null,"RGjw"))},name:"Users",meta:{title:"users",icon:"peoples",noCache:!0}}]}].concat(J()(Ye?[]:[$e]),J()(qe?[]:[Ke]),J()(We?[]:[Ze]),J()(Qe?[]:[Je]),J()(Xe?[]:[et]),J()(Fe?[]:[Ge]),[{path:"/users/:id",component:Be,children:[{path:"",name:"UsersShow",component:function(){return Promise.all([n.e("chunk-commons"),n.e("chunk-df62"),n.e("chunk-5882")]).then(n.bind(null,"4bFr"))}}],hidden:!0},{path:"/statuses/:id",component:Be,children:[{path:"",name:"StatusShow",component:function(){return Promise.all([n.e("chunk-commons"),n.e("chunk-df62"),n.e("chunk-7506")]).then(n.bind(null,"rwwt"))}}],hidden:!0},{path:"*",redirect:"/404",hidden:!0}]);var rt={state:{routers:[],addRouters:[]},mutations:{SET_ROUTERS:function(e,t){e.addRouters=t,e.routers=tt.concat(t)}},actions:{GenerateRoutes:function(e,t){var n=e.commit;return new Promise(function(e){var a,r=t.roles;a=r.includes("admin")?at:function e(t,n){var a=[];return t.forEach(function(t){var r=L()({},t);(function(e,t){return!t.meta||!t.meta.roles||e.some(function(e){return t.meta.roles.includes(e)})})(n,r)&&(r.children&&(r.children=e(r.children,n)),a.push(r))}),a}(at,r),n("SET_ROUTERS",a),e()})}}};function st(e,t){return ot.apply(this,arguments)}function ot(){return(ot=g()(f.a.mark(function e(t,n){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(t),url:"/api/pleroma/admin/relay",method:"get",headers:pt(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function it(e,t,n){return ct.apply(this,arguments)}function ct(){return(ct=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/relay",method:"post",headers:pt(a),data:{relay_url:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function ut(e,t,n){return lt.apply(this,arguments)}function lt(){return(lt=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/relay",method:"delete",headers:pt(a),data:{relay_url:"https://".concat(t,"/actor")}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var pt=function(e){return e?{Authorization:"Bearer ".concat(Object(b.b)())}:{}},dt={state:{fetchedRelays:[],loading:!0},mutations:{SET_LOADING:function(e,t){e.loading=t},SET_RELAYS:function(e,t){e.fetchedRelays=t},ADD_RELAY:function(e,t){e.fetchedRelays=[].concat(J()(e.fetchedRelays),[t])},DELETE_RELAY:function(e,t){e.fetchedRelays=e.fetchedRelays.filter(function(e){return e!==t})}},actions:{FetchRelays:function(){var e=g()(f.a.mark(function e(t){var n,a,r;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.commit,a=t.getters,n("SET_LOADING",!0),e.next=4,st(a.authHost,a.token);case 4:r=e.sent,n("SET_RELAYS",r.data.relays),n("SET_LOADING",!1);case 7:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),AddRelay:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.dispatch,s=t.getters,a("ADD_RELAY",n),e.prev=2,e.next=5,it(n,s.authHost,s.token);case 5:e.next=10;break;case 7:return e.prev=7,e.t0=e.catch(2),e.abrupt("return");case 10:return e.prev=10,r("FetchRelays"),e.finish(10);case 13:case"end":return e.stop()}},e,null,[[2,7,10,13]])}));return function(t,n){return e.apply(this,arguments)}}(),DeleteRelay:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.dispatch,s=t.getters,a("DELETE_RELAY",n),e.prev=2,e.next=5,ut(n,s.authHost,s.token);case 5:e.next=10;break;case 7:return e.prev=7,e.t0=e.catch(2),e.abrupt("return");case 10:return e.prev=10,r("FetchRelays"),e.finish(10);case 13:case"end":return e.stop()}},e,null,[[2,7,10,13]])}));return function(t,n){return e.apply(this,arguments)}}()}};function ht(e,t,n){return mt.apply(this,arguments)}function mt(){return(mt=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/reports",method:"patch",headers:bt(a),data:{reports:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function ft(e,t,n,a,r){return vt.apply(this,arguments)}function vt(){return(vt=g()(f.a.mark(function e(t,n,a,r,s){var o;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return o=t.length>0?"/api/pleroma/admin/reports?state=".concat(t,"&page=").concat(n,"&page_size=").concat(a):"/api/pleroma/admin/reports?page=".concat(n,"&page_size=").concat(a),e.next=3,Object(w.a)({baseURL:Object(y.a)(r),url:o,method:"get",headers:bt(s)});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}function gt(){return(gt=g()(f.a.mark(function e(t,n,a,r){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/reports/".concat(n,"/notes"),method:"post",headers:bt(r),data:{content:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function wt(){return(wt=g()(f.a.mark(function e(t,n,a,r){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/reports/".concat(n,"/notes/").concat(t),method:"delete",headers:bt(r)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var bt=function(e){return e?{Authorization:"Bearer ".concat(Object(b.b)())}:{}},yt={state:{fetchedReports:[],totalReportsCount:0,currentPage:1,pageSize:50,stateFilter:"",loading:!0},mutations:{SET_LAST_REPORT_ID:function(e,t){e.idOfLastReport=t},SET_LOADING:function(e,t){e.loading=t},SET_PAGE:function(e,t){e.currentPage=t},SET_REPORTS:function(e,t){e.fetchedReports=t},SET_REPORTS_COUNT:function(e,t){e.totalReportsCount=t},SET_REPORTS_FILTER:function(e,t){e.stateFilter=t}},actions:{ChangeReportState:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.commit,r=t.getters,s=t.state,ht(n,r.authHost,r.token),o=s.fetchedReports.map(function(e){return n.map(function(e){return e.id}).includes(e.id)?L()({},e,{state:n[0].state}):e}),a("SET_REPORTS",o);case 4:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),ClearFetchedReports:function(e){(0,e.commit)("SET_REPORTS",[])},FetchReports:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,s=t.state,a("SET_LOADING",!0),e.next=4,ft(s.stateFilter,n,s.pageSize,r.authHost,r.token);case 4:o=e.sent,i=o.data,a("SET_REPORTS",i.reports),a("SET_REPORTS_COUNT",i.total),a("SET_PAGE",n),a("SET_LOADING",!1);case 10:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),SetFilter:function(e,t){(0,e.commit)("SET_REPORTS_FILTER",t)},CreateReportNote:function(e,t){var n=e.commit,a=e.getters,r=e.state,s=e.rootState,o=t.content,i=t.reportID;!function(e,t,n,a){gt.apply(this,arguments)}(o,i,a.authHost,a.token);var c={user:{avatar:s.user.avatar,nickname:s.user.name,id:s.user.id},content:o,created_at:(new Date).getTime()};n("SET_REPORTS",r.fetchedReports.map(function(e){return e.id===i&&(e.notes=[].concat(J()(e.notes),[c])),e}))},DeleteReportNote:function(e,t){var n=e.commit,a=e.getters,r=e.state,s=t.noteID,o=t.reportID;!function(e,t,n,a){wt.apply(this,arguments)}(s,o,a.authHost,a.token),n("SET_REPORTS",r.fetchedReports.map(function(e){return e.id===o&&(e.notes=e.notes.filter(function(e){return e.id!==s})),e}))}}},Tt=n("lSNA"),xt=n.n(Tt),Et=n("QILm"),St=n.n(Et);function kt(e,t){return _t.apply(this,arguments)}function _t(){return(_t=g()(f.a.mark(function e(t,n){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(t),url:"/api/pleroma/admin/config/descriptions",method:"get",headers:Dt(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Ot(e,t){return At.apply(this,arguments)}function At(){return(At=g()(f.a.mark(function e(t,n){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(t),url:"/api/pleroma/admin/config",method:"get",headers:Dt(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Lt(e,t,n){return It.apply(this,arguments)}function It(){return(It=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/config",method:"post",headers:Dt(a),data:{configs:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Ct(e,t,n){return Rt.apply(this,arguments)}function Rt(){return(Rt=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/config",method:"post",headers:Dt(a),data:{configs:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var Dt=function(e){return e?{Authorization:"Bearer ".concat(Object(b.b)())}:{}},Vt=n("h74u");function jt(e){var t=function(e,t){if("object"!==he()(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var a=n.call(e,t||"default");if("object"!==he()(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===he()(t)?t:String(t)}var Pt={state:{activeTab:"instance",configDisabled:!0,db:{},description:[],loading:!0,searchData:{},settings:{},updatedSettings:{}},mutations:{CLEAR_UPDATED_SETTINGS:function(e){e.updatedSettings={}},REMOVE_SETTING_FROM_UPDATED:function(e,t){var n=t.group,a=t.key,r=t.subkeys;if(C.a.get(e.updatedSettings,[n,a,r[0]])){var s=e.updatedSettings[n][a],o=(s[r[0]],St()(s,[r[0]].map(jt)));e.updatedSettings=o}},SET_ACTIVE_TAB:function(e,t){e.activeTab=t},SET_DESCRIPTION:function(e,t){e.description=t},SET_LOADING:function(e,t){e.loading=t},SET_SEARCH:function(e,t){e.searchData=t},SET_SETTINGS:function(e,t){var n=t.reduce(function(e,t){var n=t.group,a=t.key,r=t.value,s=Object(Vt.g)(a,r)?{value:Object(Vt.d)(a,r)}:Object(Vt.e)(r,a);return e[n]=e[n]?L()({},e[n],xt()({},a,s)):xt()({},a,s),e},{}),a=t.reduce(function(e,t){var n=t.group,a=t.key,r=t.db;return r&&(e[n]=e[n]?L()({},e[n],xt()({},a,r)):xt()({},a,r)),e},{});e.settings=n,e.db=a},TOGGLE_TABS:function(e,t){e.configDisabled=t},UPDATE_SETTINGS:function(e,t){var n=t.group,a=t.key,r=t.input,s=t.value,o=t.type,i=!e.updatedSettings[n]||"Pleroma.Emails.Mailer"===a&&":adapter"===r?xt()({},a,xt()({},r,[o,s])):xt()({},a,L()({},e.updatedSettings[n][a],xt()({},r,[o,s])));e.updatedSettings[n]=L()({},e.updatedSettings[n],i)},UPDATE_STATE:function(e,t){var n=t.group,a=t.key,r=t.input,s=t.value,o="Pleroma.Emails.Mailer"===a&&":adapter"===r?xt()({},a,xt()({},r,s)):xt()({},a,L()({},e.settings[n][a],xt()({},r,s)));e.settings[n]=L()({},e.settings[n],o)}},actions:{FetchSettings:function(){var e=g()(f.a.mark(function e(t){var n,a,r,s,o;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.commit,a=t.getters,n("SET_LOADING",!0),e.prev=2,e.next=5,Ot(a.authHost,a.token);case 5:return r=e.sent,e.next=8,kt(a.authHost,a.token);case 8:s=e.sent,n("SET_DESCRIPTION",s.data),o=Object(Vt.b)(s.data),n("SET_SEARCH",o),n("SET_SETTINGS",r.data.configs),e.next=21;break;case 15:return e.prev=15,e.t0=e.catch(2),n("TOGGLE_TABS",!0),n("SET_ACTIVE_TAB","relays"),n("SET_LOADING",!1),e.abrupt("return");case 21:n("TOGGLE_TABS",!1),n("SET_LOADING",!1);case 23:case"end":return e.stop()}},e,null,[[2,15]])}));return function(t){return e.apply(this,arguments)}}(),RemoveSetting:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,e.next=3,Ct(n,r.authHost,r.token);case 3:return e.next=5,Ot(r.authHost,r.token);case 5:s=e.sent,o=n[0],i=o.group,c=o.key,u=o.subkeys,a("SET_SETTINGS",s.data.configs),a("TOGGLE_REBOOT",s.data.need_reboot),a("REMOVE_SETTING_FROM_UPDATED",{group:i,key:c,subkeys:u||[]});case 10:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),SetActiveTab:function(e,t){(0,e.commit)("SET_ACTIVE_TAB",t)},SubmitChanges:function(){var e=g()(f.a.mark(function e(t){var n,a,r,s,o,i;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.getters,a=t.commit,r=t.state,s=Object(Vt.a)(r.settings,r.updatedSettings,r.description),o=Object.keys(s).reduce(function(e,t){return[].concat(J()(e),J()(Object(Vt.h)(t,s[t],r.settings)))},[]),e.next=5,Lt(o,n.authHost,n.token);case 5:return e.next=7,Ot(n.authHost,n.token);case 7:i=e.sent,a("SET_SETTINGS",i.data.configs),a("TOGGLE_REBOOT",i.data.need_reboot),a("CLEAR_UPDATED_SETTINGS");case 11:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),UpdateSettings:function(e,t){var n=e.commit,a=t.group,r=t.key,s=t.input,o=t.value,i=t.type;n("UPDATE_SETTINGS",r?{group:a,key:r,input:s,value:o,type:i}:{group:a,key:s,input:"_value",value:o,type:i})},UpdateState:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u,l,p;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(a=t.commit,r=t.getters,s=t.state,o=n.group,i=n.key,c=n.input,u=n.value,"Pleroma.Emails.Mailer"!==i||":adapter"!==c){e.next=8;break}return l=Object.keys(s.settings[o][i]).filter(function(e){return":adapter"!==e}),e.next=6,Ct([{group:o,key:i,delete:!0,subkeys:l}],r.authHost,r.token);case 6:e.next=12;break;case 8:if("Pleroma.Upload"!==i||":uploader"!==c){e.next=12;break}return p="Pleroma.Uploaders.Local"===u?"Pleroma.Uploaders.S3":"Pleroma.Uploaders.Local",e.next=12,Ct([{group:o,key:p,delete:!0}],r.authHost,r.token);case 12:a("UPDATE_STATE",i?{group:o,key:i,input:c,value:u}:{group:o,key:c,input:"value",value:u});case 13:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}()}};function Mt(e,t,n,a,r){return zt.apply(this,arguments)}function zt(){return(zt=g()(f.a.mark(function e(t,n,a,r,s){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(r),url:"/api/pleroma/admin/statuses/".concat(t),method:"put",headers:Wt(s),data:{sensitive:n,visibility:a}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Ut(e,t,n){return Ht.apply(this,arguments)}function Ht(){return(Ht=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/statuses/".concat(t),method:"delete",headers:Wt(a)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Bt(e,t,n){return Nt.apply(this,arguments)}function Nt(){return(Nt=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/statuses/".concat(t),method:"get",headers:Wt(a)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Ft(e){return Gt.apply(this,arguments)}function Gt(){return(Gt=g()(f.a.mark(function e(t){var n,a,r,s,o,i;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.godmode,a=t.localOnly,r=t.authHost,s=t.token,o=t.pageSize,i=t.page,e.next=3,Object(w.a)({baseURL:Object(y.a)(r),url:"/api/pleroma/admin/statuses?godmode=".concat(n,"&local_only=").concat(a,"&page=").concat(i,"&page_size=").concat(o),method:"get",headers:Wt(s)});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Yt(e,t,n){return $t.apply(this,arguments)}function $t(){return($t=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:t?"/api/pleroma/admin/stats?instance=".concat(t):"/api/pleroma/admin/stats",method:"get",headers:Wt(a)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function qt(e){return Kt.apply(this,arguments)}function Kt(){return(Kt=g()(f.a.mark(function e(t){var n,a,r,s,o;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.instance,a=t.authHost,r=t.token,s=t.pageSize,o=t.page,e.next=3,Object(w.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/instances/".concat(n,"/statuses?page=").concat(o,"&page_size=").concat(s),method:"get",headers:Wt(r)});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}var Wt=function(e){return e?{Authorization:"Bearer ".concat(Object(b.b)())}:{}},Zt={state:{fetchedStatus:{},fetchedStatuses:[],loading:!1,statusAuthor:{},statusesByInstance:{selectedInstance:"",showLocal:!1,showPrivate:!1,page:1,pageSize:20,buttonLoading:!1,allLoaded:!1},statusVisibility:{}},mutations:{CHANGE_GODMODE_CHECKBOX_VALUE:function(e,t){e.statusesByInstance.showPrivate=t},CHANGE_LOCAL_CHECKBOX_VALUE:function(e,t){e.statusesByInstance.showLocal=t},CHANGE_PAGE:function(e,t){e.statusesByInstance.page=t},CHANGE_SELECTED_INSTANCE:function(e,t){e.statusesByInstance.selectedInstance=t},SET_STATUS:function(e,t){e.fetchedStatus=t},SET_STATUSES_BY_INSTANCE:function(e,t){e.fetchedStatuses=t},PUSH_STATUSES:function(e,t){e.fetchedStatuses=[].concat(J()(e.fetchedStatuses),J()(t))},SET_ALL_LOADED:function(e,t){e.statusesByInstance.allLoaded=t},SET_BUTTON_LOADING:function(e,t){e.statusesByInstance.buttonLoading=t},SET_LOADING:function(e,t){e.loading=t},SET_STATUS_VISIBILITY:function(e,t){e.statusVisibility=t},SET_STATUS_AUTHOR:function(e,t){e.statusAuthor=t}},actions:{ChangeStatusScope:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u,l,p;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.dispatch,r=t.getters,s=n.statusId,o=n.isSensitive,i=n.visibility,c=n.reportCurrentPage,u=n.userId,l=n.godmode,p=n.fetchStatusesByInstance,e.next=4,Mt(s,o,i,r.authHost,r.token);case 4:0!==c?a("FetchReports",c):u.length>0?a("FetchUserStatuses",{userId:u,godmode:l}):p?a("FetchStatusesByInstance"):a("FetchStatusAfterUserModeration",s);case 5:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),ClearState:function(e){var t=e.commit;t("CHANGE_SELECTED_INSTANCE",""),t("SET_STATUSES_BY_INSTANCE",[]),t("CHANGE_LOCAL_CHECKBOX_VALUE",!1),t("CHANGE_GODMODE_CHECKBOX_VALUE",!1),t("SET_ALL_LOADED",!1),t("CHANGE_PAGE",1)},DeleteStatus:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.dispatch,r=t.getters,s=n.statusId,o=n.reportCurrentPage,i=n.userId,c=n.godmode,u=n.fetchStatusesByInstance,e.next=4,Ut(s,r.authHost,r.token);case 4:0!==o?a("FetchReports",o):i.length>0?a("FetchUserStatuses",{userId:i,godmode:c}):u&&a("FetchStatusesByInstance");case 5:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),FetchStatus:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.dispatch,s=t.getters,o=t.state,a("SET_LOADING",!0),e.next=4,Bt(n,s.authHost,s.token);case 4:i=e.sent,a("SET_STATUS",i.data),a("SET_STATUS_AUTHOR",i.data.account),a("SET_LOADING",!1),r("FetchUserStatuses",{userId:o.fetchedStatus.account.id,godmode:!1});case 9:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),FetchStatusAfterUserModeration:function(e,t){var n=e.commit,a=e.dispatch,r=e.getters;e.state;n("SET_LOADING",!0),Bt(t,r.authHost,r.token).then(function(e){return a("SetStatus",e.data)}),n("SET_LOADING",!1)},FetchStatusesCount:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,a("SET_LOADING",!0),e.next=4,Yt(n,r.authHost,r.token);case 4:s=e.sent,o=s.data,a("SET_STATUS_VISIBILITY",o.status_visibility),a("SET_LOADING",!1);case 8:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),FetchStatusesByInstance:function(){var e=g()(f.a.mark(function e(t){var n,a,r,s,o,i;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.commit,a=t.dispatch,r=t.getters,s=t.state,o=t.rootState,n("SET_LOADING",!0),a("FetchStatusesCount",s.statusesByInstance.selectedInstance),""!==s.statusesByInstance.selectedInstance){e.next=7;break}n("SET_STATUSES_BY_INSTANCE",[]),e.next=19;break;case 7:if(s.statusesByInstance.selectedInstance!==o.user.authHost){e.next=13;break}return e.next=10,Ft({godmode:s.statusesByInstance.showPrivate,localOnly:s.statusesByInstance.showLocal,authHost:r.authHost,token:r.token,pageSize:s.statusesByInstance.pageSize,page:s.statusesByInstance.page});case 10:e.t0=e.sent,e.next=16;break;case 13:return e.next=15,qt({instance:s.statusesByInstance.selectedInstance,authHost:r.authHost,token:r.token,pageSize:s.statusesByInstance.pageSize,page:s.statusesByInstance.page});case 15:e.t0=e.sent;case 16:i=e.t0,n("SET_STATUSES_BY_INSTANCE",i.data),i.data.lengthThis user doesn`t have admin rights. Try another credentials or see the docs to find out how to make this user an admin'),t("SET_NAME",r.username),t("SET_ID",r.id),t("SET_AVATAR",r.avatar),t("SET_INTRODUCTION",""),e(n)}).catch(function(e){a(e)})})},LogOut:function(e){var t=e.commit;t("SET_TOKEN",""),t("SET_ROLES",[]),Object(b.d)(),Object(b.c)()},FedLogOut:function(e){var t=e.commit;return new Promise(function(e){t("SET_TOKEN",""),Object(b.d)(),Object(b.c)(),e()})},LoginByPleromaFE:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.commit,r=t.dispatch,s=n.token,a("SET_TOKEN",s),Object(b.f)(s),a("SET_AUTH_HOST",window.location.host),Object(b.e)(window.location.host),r("GetUserInfo");case 7:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}()}};function on(e,t,n){return cn.apply(this,arguments)}function cn(){return(cn=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/activate",method:"patch",headers:Nn(a),data:{nicknames:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function un(e,t,n,a){return ln.apply(this,arguments)}function ln(){return(ln=g()(f.a.mark(function e(t,n,a,r){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/users/permission_group/".concat(n),method:"post",headers:Nn(r),data:{nicknames:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function pn(e,t,n,a,r){return dn.apply(this,arguments)}function dn(){return(dn=g()(f.a.mark(function e(t,n,a,r,s){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(r),url:"/api/pleroma/admin/users",method:"post",headers:Nn(s),data:{users:[{nickname:t,email:n,password:a}]}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function hn(e,t,n){return mn.apply(this,arguments)}function mn(){return(mn=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/deactivate",method:"patch",headers:Nn(a),data:{nicknames:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function fn(e,t,n,a){return vn.apply(this,arguments)}function vn(){return(vn=g()(f.a.mark(function e(t,n,a,r){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/users/permission_group/".concat(n),method:"delete",headers:Nn(r),data:{nicknames:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function gn(e,t,n){return wn.apply(this,arguments)}function wn(){return(wn=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users",method:"delete",headers:Nn(a),data:{nicknames:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function bn(e,t,n){return yn.apply(this,arguments)}function yn(){return(yn=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/".concat(t),method:"get",headers:Nn(a)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Tn(e,t,n){return xn.apply(this,arguments)}function xn(){return(xn=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/".concat(t,"/credentials"),method:"get",headers:Nn(a)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function En(e,t,n,a){return Sn.apply(this,arguments)}function Sn(){return(Sn=g()(f.a.mark(function e(t,n,a,r){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/users/".concat(t,"/credentials"),method:"patch",headers:Nn(r),data:n});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function kn(e,t,n){return _n.apply(this,arguments)}function _n(){return(_n=g()(f.a.mark(function e(t,n,a){var r,s=arguments;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=s.length>3&&void 0!==s[3]?s[3]:1,e.next=3,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users?page=".concat(r,"&filters=").concat(t),method:"get",headers:Nn(a)});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}function On(e,t,n){return An.apply(this,arguments)}function An(){return(An=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/".concat(t,"/password_reset"),method:"get",headers:Nn(a)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Ln(e,t,n){return In.apply(this,arguments)}function In(){return(In=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/force_password_reset",method:"patch",headers:Nn(a),data:{nicknames:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Cn(e,t,n,a){return Rn.apply(this,arguments)}function Rn(){return(Rn=g()(f.a.mark(function e(t,n,a,r){var s,o=arguments;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return s=o.length>4&&void 0!==o[4]?o[4]:1,e.next=3,Object(w.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/users?query=".concat(t,"&page=").concat(s,"&filters=").concat(n),method:"get",headers:Nn(r)});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Dn(e,t,n,a){return Vn.apply(this,arguments)}function Vn(){return(Vn=g()(f.a.mark(function e(t,n,a,r){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/users/tag",method:"put",headers:Nn(r),data:{nicknames:t,tags:n}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function jn(e,t,n,a){return Pn.apply(this,arguments)}function Pn(){return(Pn=g()(f.a.mark(function e(t,n,a,r){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/users/tag",method:"delete",headers:Nn(r),data:{nicknames:t,tags:n}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Mn(){return(Mn=g()(f.a.mark(function e(t,n,a,r){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/".concat(t,"/statuses?godmode=").concat(a),method:"get",headers:Nn(r)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function zn(e,t,n){return Un.apply(this,arguments)}function Un(){return(Un=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/confirm_email",method:"patch",headers:Nn(a),data:{nicknames:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Hn(e,t,n){return Bn.apply(this,arguments)}function Bn(){return(Bn=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/resend_confirmation_email",method:"patch",headers:Nn(a),data:{nicknames:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var Nn=function(e){return e?{Authorization:"Bearer ".concat(Object(b.b)())}:{}},Fn={state:{statuses:[],statusesLoading:!0,user:{},userCredentials:{},userProfileLoading:!0},mutations:{SET_STATUSES:function(e,t){e.statuses=t},SET_STATUSES_LOADING:function(e,t){e.statusesLoading=t},SET_USER:function(e,t){e.user=t},SET_USER_PROFILE_LOADING:function(e,t){e.userProfileLoading=t},SET_USER_CREDENTIALS:function(e,t){e.userCredentials=t}},actions:{FetchUserProfile:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.dispatch,s=t.getters,o=n.userId,i=n.godmode,a("SET_USER_PROFILE_LOADING",!0),e.next=5,bn(o,s.authHost,s.token);case 5:c=e.sent,a("SET_USER",c.data),a("SET_USER_PROFILE_LOADING",!1),r("FetchUserStatuses",{userId:o,godmode:i});case 9:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),FetchUserStatuses:function(e,t){var n=e.commit,a=e.dispatch,r=e.getters,s=t.userId,o=t.godmode;n("SET_STATUSES_LOADING",!0),function(e,t,n,a){return Mn.apply(this,arguments)}(s,r.authHost,o,r.token).then(function(e){return a("SetStatuses",e.data)}),n("SET_STATUSES_LOADING",!1)},FetchUserCredentials:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,s=n.nickname,e.next=4,Tn(s,r.authHost,r.token);case 4:o=e.sent,a("SET_USER_CREDENTIALS",o.data);case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),SetStatuses:function(e,t){(0,e.commit)("SET_STATUSES",t)},UpdateUserCredentials:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.dispatch,r=t.getters,s=n.nickname,o=n.credentials,e.next=4,En(s,o,r.authHost,r.token);case 4:a("FetchUserCredentials",{nickname:s});case 5:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}()}},Gn={state:{fetchedUsers:[],loading:!0,searchQuery:"",totalUsersCount:0,currentPage:1,pageSize:50,filters:{local:!1,external:!1,active:!1,deactivated:!1},passwordResetToken:{token:"",link:""}},mutations:{SET_USERS:function(e,t){e.fetchedUsers=t},SET_LOADING:function(e,t){e.loading=t},SWAP_USERS:function(e,t){var n=t.reduce(function(e,t){return e.filter(function(e){return e.id!==t.id})},e.fetchedUsers);if(0!==e.fetchedUsers.length){var a=[].concat(J()(n),J()(t));e.fetchedUsers=a.filter(function(e){return e.nickname&&e.id}).sort(function(e,t){return e.nickname.localeCompare(t.nickname)}).concat(a.filter(function(e){return!e.nickname||!e.id}))}},SET_COUNT:function(e,t){e.totalUsersCount=t},SET_PAGE:function(e,t){e.currentPage=t},SET_PAGE_SIZE:function(e,t){e.pageSize=t},SET_PASSWORD_RESET_TOKEN:function(e,t){var n=t.token,a=t.link;e.passwordResetToken.token=n,e.passwordResetToken.link=a},SET_SEARCH_QUERY:function(e,t){e.searchQuery=t},SET_USERS_FILTERS:function(e,t){e.filters=t}},actions:{ActivateUsers:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.dispatch,r=t.getters,s=n.users,o=n._userId,i=s.map(function(e){return L()({},e,{deactivated:!1})}),c=s.map(function(e){return e.nickname}),a("ApplyChanges",{updatedUsers:i,callApiFn:function(){var e=g()(f.a.mark(function e(){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,on(c,r.authHost,r.token);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(){return e.apply(this,arguments)}}(),userId:o});case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),ApplyChanges:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.dispatch,s=t.state,o=n.updatedUsers,i=n.callApiFn,c=n.userId,u=n.statusId,a("SWAP_USERS",o),e.prev=3,e.next=6,i();case 6:e.next=11;break;case 8:return e.prev=8,e.t0=e.catch(3),e.abrupt("return");case 11:return e.prev=11,r("SearchUsers",{query:s.searchQuery,page:s.currentPage}),e.finish(11);case 14:u?r("FetchStatusAfterUserModeration",u):c&&r("FetchUserProfile",{userId:c,godmode:!1}),r("SuccessMessage");case 16:case"end":return e.stop()}},e,null,[[3,8,11,14]])}));return function(t,n){return e.apply(this,arguments)}}(),AddRight:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u,l;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.dispatch,r=t.getters,s=n.users,o=n.right,i=n._userId,c=n._statusId,u=s.map(function(e){return e.local?L()({},e,{roles:L()({},e.roles,xt()({},o,!0))}):e}),l=s.map(function(e){return e.nickname}),a("ApplyChanges",{updatedUsers:u,callApiFn:function(){var e=g()(f.a.mark(function e(){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,un(l,o,r.authHost,r.token);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(){return e.apply(this,arguments)}}(),userId:i,statusId:c});case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),AddTag:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u,l;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.dispatch,r=t.getters,s=n.users,o=n.tag,i=n._userId,c=n._statusId,u=s.map(function(e){return L()({},e,{tags:[].concat(J()(e.tags),[o])})}),l=s.map(function(e){return e.nickname}),a("ApplyChanges",{updatedUsers:u,callApiFn:function(){var e=g()(f.a.mark(function e(){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Dn(l,[o],r.authHost,r.token);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(){return e.apply(this,arguments)}}(),userId:i,statusId:c});case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),ClearUsersState:function(e){var t=e.commit;t("SET_SEARCH_QUERY",""),t("SET_USERS_FILTERS",{local:!1,external:!1,active:!1,deactivated:!1})},ClearFilters:function(){var e=g()(f.a.mark(function e(t){var n,a,r;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:n=t.commit,a=t.dispatch,r=t.state,n("CLEAR_USERS_FILTERS"),a("SearchUsers",{query:r.searchQuery,page:1});case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),CreateNewAccount:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.dispatch,r=t.getters,s=t.state,o=n.nickname,i=n.email,c=n.password,e.prev=2,e.next=5,pn(o,i,c,r.authHost,r.token);case 5:e.next=10;break;case 7:return e.prev=7,e.t0=e.catch(2),e.abrupt("return");case 10:return e.prev=10,a("SearchUsers",{query:s.searchQuery,page:s.currentPage}),e.finish(10);case 13:a("SuccessMessage");case 14:case"end":return e.stop()}},e,null,[[2,7,10,13]])}));return function(t,n){return e.apply(this,arguments)}}(),DeactivateUsers:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.dispatch,r=t.getters,s=n.users,o=n._userId,i=s.map(function(e){return L()({},e,{deactivated:!0})}),c=s.map(function(e){return e.nickname}),a("ApplyChanges",{updatedUsers:i,callApiFn:function(){var e=g()(f.a.mark(function e(){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,hn(c,r.authHost,r.token);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(){return e.apply(this,arguments)}}(),userId:o});case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),ConfirmUsersEmail:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.dispatch,r=t.getters,s=n.users,o=n._userId,i=n._statusId,c=s.map(function(e){return L()({},e,{confirmation_pending:!1})}),u=s.map(function(e){return e.nickname}),a("ApplyChanges",{updatedUsers:c,callApiFn:function(){var e=g()(f.a.mark(function e(){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,zn(u,r.authHost,r.token);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(){return e.apply(this,arguments)}}(),userId:o,statusId:i});case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),ResendConfirmationEmail:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.dispatch,r=t.getters,s=n.map(function(e){return e.nickname}),e.prev=2,e.next=5,Hn(s,r.authHost,r.token);case 5:e.next=10;break;case 7:return e.prev=7,e.t0=e.catch(2),e.abrupt("return");case 10:a("SuccessMessage");case 11:case"end":return e.stop()}},e,null,[[2,7]])}));return function(t,n){return e.apply(this,arguments)}}(),DeleteRight:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u,l;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.dispatch,r=t.getters,s=n.users,o=n.right,i=n._userId,c=n._statusId,u=s.map(function(e){return e.local?L()({},e,{roles:L()({},e.roles,xt()({},o,!1))}):e}),l=s.map(function(e){return e.nickname}),a("ApplyChanges",{updatedUsers:u,callApiFn:function(){var e=g()(f.a.mark(function e(){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fn(l,o,r.authHost,r.token);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(){return e.apply(this,arguments)}}(),userId:i,statusId:c});case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),DeleteUsers:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u,l,p;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.dispatch,s=t.getters,o=t.state,i=n.users,c=n._userId,u=i.map(function(e){return e.nickname}),e.prev=3,e.next=6,gn(u,s.authHost,s.token);case 6:e.next=11;break;case 8:return e.prev=8,e.t0=e.catch(3),e.abrupt("return");case 11:l=i.map(function(e){return e.id}),p=o.fetchedUsers.filter(function(e){return!l.includes(e.id)}),a("SET_USERS",p),r("FetchUserProfile",{userId:c,godmode:!1}),r("SuccessMessage");case 16:case"end":return e.stop()}},e,null,[[3,8]])}));return function(t,n){return e.apply(this,arguments)}}(),FetchUsers:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.dispatch,s=t.getters,o=t.state,i=n.page,a("SET_LOADING",!0),c=Object.keys(o.filters).filter(function(e){return o.filters[e]}).join(),e.next=6,kn(c,s.authHost,s.token,i);case 6:return u=e.sent,e.next=9,r("GetNodeInfo");case 9:Yn(a,i,u.data);case 10:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),GetPasswordResetToken:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,e.next=3,On(n,r.authHost,r.token);case 3:s=e.sent,o=s.data,a("SET_PASSWORD_RESET_TOKEN",o);case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),RemovePasswordToken:function(e){(0,e.commit)("SET_PASSWORD_RESET_TOKEN",{link:"",token:""})},RemoveTag:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u,l;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.dispatch,r=t.getters,s=n.users,o=n.tag,i=n._userId,c=n._statusId,u=s.map(function(e){return L()({},e,{tags:e.tags.filter(function(e){return e!==o})})}),l=s.map(function(e){return e.nickname}),a("ApplyChanges",{updatedUsers:u,callApiFn:function(){var e=g()(f.a.mark(function e(){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,jn(l,[o],r.authHost,r.token);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(){return e.apply(this,arguments)}}(),userId:i,statusId:c});case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),RequirePasswordReset:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.dispatch,r=t.getters,s=n.map(function(e){return e.nickname}),e.prev=2,e.next=5,Ln(s,r.authHost,r.token);case 5:e.next=10;break;case 7:return e.prev=7,e.t0=e.catch(2),e.abrupt("return");case 10:a("SuccessMessage");case 11:case"end":return e.stop()}},e,null,[[2,7]])}));return function(t,n){return e.apply(this,arguments)}}(),SearchUsers:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u,l;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(a=t.commit,r=t.dispatch,s=t.state,o=t.getters,i=n.query,c=n.page,0!==i.length){e.next=7;break}a("SET_SEARCH_QUERY",i),r("FetchUsers",{page:c}),e.next=14;break;case 7:return a("SET_LOADING",!0),a("SET_SEARCH_QUERY",i),u=Object.keys(s.filters).filter(function(e){return s.filters[e]}).join(),e.next=12,Cn(i,u,o.authHost,o.token,c);case 12:l=e.sent,Yn(a,c,l.data);case 14:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),SuccessMessage:function(){i.Message.success({message:W.a.t("users.completed"),duration:5e3})},ToggleUsersFilter:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.commit,r=t.dispatch,s=t.state,o={local:!1,external:!1,active:!1,deactivated:!1},i=L()({},o,n),a("SET_USERS_FILTERS",i),r("SearchUsers",{query:s.searchQuery,page:1});case 5:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}()}},Yn=function(e,t,n){var a=n.users,r=n.count,s=n.page_size;e("SET_USERS",a),e("SET_COUNT",r),e("SET_PAGE",t),e("SET_PAGE_SIZE",s),e("SET_LOADING",!1)},$n=Gn,qn={sidebar:function(e){return e.app.sidebar},language:function(e){return e.app.language},size:function(e){return e.app.size},device:function(e){return e.app.device},visitedViews:function(e){return e.tagsView.visitedViews},cachedViews:function(e){return e.tagsView.cachedViews},token:function(e){return e.user.token},avatar:function(e){return e.user.avatar},name:function(e){return e.user.name},introduction:function(e){return e.user.introduction},status:function(e){return e.user.status},roles:function(e){return e.user.roles},setting:function(e){return e.user.setting},permission_routers:function(e){return e.permission.routers},addRouters:function(e){return e.permission.addRouters},errorLogs:function(e){return e.errorLog.logs},users:function(e){return e.users.fetchedUsers},authHost:function(e){return e.user.authHost},settings:function(e){return e.settings}},Kn=n("mm8V"),Wn={state:{activeCollapseItems:[],localPacks:{},remoteInstance:"",remotePacks:{}},mutations:{SET_ACTIVE_COLLAPSE_ITEMS:function(e,t){e.activeCollapseItems=t},SET_LOCAL_PACKS:function(e,t){e.localPacks=t},SET_REMOTE_INSTANCE:function(e,t){e.remoteInstance=t},SET_REMOTE_PACKS:function(e,t){e.remotePacks=t},UPDATE_LOCAL_PACK_VAL:function(e,t){var n=t.name,a=t.key,s=t.value;r.default.set(e.localPacks[n].pack,a,s)},UPDATE_LOCAL_PACK_PACK:function(e,t){var n=t.name,a=t.pack;e.localPacks[n].pack=a},UPDATE_LOCAL_PACK_FILES:function(e,t){var n=t.name,a=t.files;r.default.set(e.localPacks[n],"files",a)}},actions:{AddNewEmojiFile:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,c,u,l;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,s=n.packName,o=n.file,c=n.shortcode,u=n.filename,e.prev=2,e.next=5,Object(Kn.a)(s,o,c,u,r.authHost,r.token);case 5:l=e.sent,e.next=11;break;case 8:return e.prev=8,e.t0=e.catch(2),e.abrupt("return");case 11:Object(i.Message)({message:"".concat(W.a.t("settings.successfullyUpdated")," ").concat(s," ").concat(W.a.t("settings.metadatLowerCase")),type:"success",duration:5e3}),a("UPDATE_LOCAL_PACK_FILES",{name:s,files:l.data});case 13:case"end":return e.stop()}},e,null,[[2,8]])}));return function(t,n){return e.apply(this,arguments)}}(),DeleteEmojiFile:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,c;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,s=n.packName,o=n.shortcode,e.prev=2,e.next=5,Object(Kn.d)(s,o,r.authHost,r.token);case 5:c=e.sent,e.next=11;break;case 8:return e.prev=8,e.t0=e.catch(2),e.abrupt("return");case 11:Object(i.Message)({message:"".concat(W.a.t("settings.successfullyUpdated")," ").concat(s," ").concat(W.a.t("settings.metadatLowerCase")),type:"success",duration:5e3}),a("UPDATE_LOCAL_PACK_FILES",{name:s,files:c.data});case 13:case"end":return e.stop()}},e,null,[[2,8]])}));return function(t,n){return e.apply(this,arguments)}}(),CreatePack:function(){var e=g()(f.a.mark(function e(t,n){var a,r;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.getters,r=n.name,e.next=4,Object(Kn.c)(a.authHost,a.token,r);case 4:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),DeletePack:function(){var e=g()(f.a.mark(function e(t,n){var a,r;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.getters,r=n.name,e.next=4,Object(Kn.e)(a.authHost,a.token,r);case 4:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),DownloadFrom:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.getters,r=n.instanceAddress,s=n.packName,o=n.as,e.next=4,Object(Kn.f)(a.authHost,r,s,o,a.token);case 4:"ok"===e.sent.data&&Object(i.Message)({message:"".concat(W.a.t("settings.successfullyDownloaded")," ").concat(s),type:"success",duration:5e3});case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),ImportFromFS:function(){var e=g()(f.a.mark(function e(t){var n,a,r;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.getters,e.next=3,Object(Kn.g)(n.authHost,n.token);case 3:200===(a=e.sent).status&&(r=a.data.length>0?"".concat(W.a.t("settings.successfullyImported")," ").concat(a.data):W.a.t("settings.nowNewPacksToImport"),Object(i.Message)({message:r,type:"success",duration:5e3}));case 5:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),ReloadEmoji:function(){var e=g()(f.a.mark(function e(t){var n;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.getters,e.next=3,Object(Kn.j)(n.authHost,n.token);case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),SavePackMetadata:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,c;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,s=t.state,o=n.packName,e.next=4,Object(Kn.k)(r.authHost,r.token,o,s.localPacks[o].pack);case 4:200===(c=e.sent).status&&(Object(i.Message)({message:"".concat(W.a.t("settings.successfullyUpdated")," ").concat(o," ").concat(W.a.t("settings.metadatLowerCase")),type:"success",duration:5e3}),a("UPDATE_LOCAL_PACK_PACK",{name:o,pack:c.data}));case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),SetActiveCollapseItems:function(e,t){var n=e.commit;e.state;n("SET_ACTIVE_COLLAPSE_ITEMS",t)},SetLocalEmojiPacks:function(){var e=g()(f.a.mark(function e(t){var n,a,r,s;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.commit,a=t.getters,e.next=3,Object(Kn.h)(a.authHost);case 3:r=e.sent,s=r.data,n("SET_LOCAL_PACKS",s);case 6:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),SetRemoteEmojiPacks:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,s=n.remoteInstance,e.next=4,Object(Kn.i)(r.authHost,r.token,s);case 4:o=e.sent,i=o.data,a("SET_REMOTE_INSTANCE",s),a("SET_REMOTE_PACKS",i);case 8:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),SetRemoteInstance:function(e,t){(0,e.commit)("SET_REMOTE_INSTANCE",t)},UpdateEmojiFile:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,c,u,l,p;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,s=n.packName,o=n.shortcode,c=n.newShortcode,u=n.newFilename,l=n.force,e.prev=2,e.next=5,Object(Kn.l)(s,o,c,u,l,r.authHost,r.token);case 5:p=e.sent,e.next=11;break;case 8:return e.prev=8,e.t0=e.catch(2),e.abrupt("return");case 11:Object(i.Message)({message:"".concat(W.a.t("settings.successfullyUpdated")," ").concat(s," ").concat(W.a.t("settings.metadatLowerCase")),type:"success",duration:5e3}),a("UPDATE_LOCAL_PACK_FILES",{name:s,files:p.data});case 13:case"end":return e.stop()}},e,null,[[2,8]])}));return function(t,n){return e.apply(this,arguments)}}(),UpdateLocalPackVal:function(){var e=g()(f.a.mark(function e(t,n){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:(0,t.commit)("UPDATE_LOCAL_PACK_VAL",n);case 2:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}()}};r.default.use(h.a);var Zn=new h.a.Store({modules:{app:_,errorLog:O,moderationLog:U,invites:Z,peers:ne,permission:rt,relays:dt,reports:yt,settings:Pt,status:Zt,tagsView:Xt,user:sn,userProfile:Fn,users:$n,emojiPacks:Wn},getters:qn}),Qn=n("zT9a");r.default.component("svg-icon",Qn.a);!function(e){e.keys().map(e)}(n("Uf/o")),r.default.config.errorHandler=function(e,t,n,a){r.default.nextTick(function(){Zn.dispatch("addErrorLog",{err:e,vm:t,info:n,url:window.location.href}),console.error(e,n)})};var Jn=n("Mj6V"),Xn=n.n(Jn);n("pdi6");Xn.a.configure({showSpinner:!1});var ea=["/login","/auth-redirect","/login-pleroma"];function ta(e,t){return 1===e?e+t:e+t+"s"}function na(e){var t=Date.now()/1e3-Number(e);return t<3600?ta(~~(t/60)," minute"):t<86400?ta(~~(t/3600)," hour"):ta(~~(t/86400)," day")}function aa(e,t){for(var n=[{value:1e18,symbol:"E"},{value:1e15,symbol:"P"},{value:1e12,symbol:"T"},{value:1e9,symbol:"G"},{value:1e6,symbol:"M"},{value:1e3,symbol:"k"}],a=0;a=n[a].value)return(e/n[a].value+.1).toFixed(t).replace(/\.0+$|(\.[0-9]*[1-9])0+$/,"$1")+n[a].symbol;return e.toString()}function ra(e){return(+e||0).toString().replace(/^-?\d+/g,function(e){return e.replace(/(?=(?!\b)(\d{3})+$)/g,",")})}nt.beforeEach(function(e,t,n){Xn.a.start(),Object(b.b)()?"/login"===e.path?(n({path:"/"}),Xn.a.done()):0===Zn.getters.roles.length?Zn.dispatch("GetUserInfo").then(function(t){var a=t.data.pleroma.is_admin?["admin"]:[];Zn.dispatch("GenerateRoutes",{roles:a}).then(function(){nt.addRoutes(Zn.getters.addRouters),n(L()({},e,{replace:!0}))})}).catch(function(e){Zn.dispatch("FedLogOut").then(function(){Object(i.Message)({dangerouslyUseHTMLString:!0,message:e,type:"error",duration:1e4}),n({path:"/"})})}):function(e,t){return e.indexOf("admin")>=0||!t||e.some(function(e){return t.indexOf(e)>=0})}(Zn.getters.roles,e.meta.roles)?n():n({path:"/401",replace:!0,query:{noGoBack:!0}}):-1!==ea.indexOf(e.path)?n():(n("/login?redirect=".concat(e.path)),Xn.a.done())}),nt.afterEach(function(){Xn.a.done()}),r.default.use(c.a,{size:o.a.get("size")||"medium",i18n:function(e,t){return W.a.t(e,t)}}),Object.keys(a).forEach(function(e){r.default.filter(e,a[e])}),r.default.config.productionTip=!1,new r.default({el:"#app",router:nt,store:Zn,i18n:W.a,render:function(e){return e(d)}})},X4fA:function(e,t,n){"use strict";n.d(t,"b",function(){return i}),n.d(t,"f",function(){return c}),n.d(t,"d",function(){return u}),n.d(t,"a",function(){return l}),n.d(t,"e",function(){return p}),n.d(t,"c",function(){return d});var a=n("p46w"),r=n.n(a),s="Admin-Token",o="Auth-Host";function i(){return r.a.get(s)}function c(e){return r.a.set(s,e)}function u(){return r.a.remove(s)}function l(){return r.a.get(o)}function p(e){return r.a.set(o,e)}function d(){return r.a.remove(o)}},Xm3t:function(e,t,n){},Yymj:function(e,t,n){"use strict";var a=n("jf83");n.n(a).a},"Z+gY":function(e,t,n){"use strict";var a=n("Kcm3");n.n(a).a},ZZmv:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-excel",use:"icon-excel-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},ZoO1:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-guide",use:"icon-guide-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},cIpu:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-star",use:"icon-star-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},fhHp:function(e,t,n){"use strict";var a=n("lt0h");n.n(a).a},gNoN:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-wechat",use:"icon-wechat-usage",viewBox:"0 0 128 110",content:''});o.a.add(i);t.default=i},h74u:function(e,t,n){"use strict";n.d(t,"c",function(){return g}),n.d(t,"a",function(){return w}),n.d(t,"d",function(){return y}),n.d(t,"e",function(){return T}),n.d(t,"f",function(){return k}),n.d(t,"g",function(){return O}),n.d(t,"h",function(){return A}),n.d(t,"b",function(){return I});var a=n("RIqP"),r=n.n(a),s=n("cDf5"),o=n.n(s),i=n("lSNA"),c=n.n(i),u=n("MVZn"),l=n.n(u),p=n("J4zp"),d=n.n(p),h=n("SA+Z"),m=n.n(h),f=n("LvDl"),v=n.n(f),g=function(e){return"true"===e||"false"!==e&&e},w=function(e,t,n){return Object.keys(t).reduce(function(a,r){return a[r]=Object.keys(t[r]).reduce(function(a,s){if(!S(r,s)){var o=Object.keys(e[r][s]).reduce(function(t,a){var o=n.find(function(e){return e.group===r&&e.key===s}).children.find(function(e){return e.key===a}),i=o?o.type:"";return t[a]=[i,e[r][s][a]],t},{});return a[s]=o,a}return a[s]=t[r][s],a},{}),a},{})},b=function(e,t,n){if("state"===e)return v.a.get(t,n);var a=m()(n),r=a[0],s=a.slice(1),o=t[r];if(0!==s.length&&o){return function e(t,n){var a=m()(n),r=a[0],s=a.slice(1);return 0===n.length?t:e(t[1][r],s)}(o,s)}return o||!1},y=function(e,t){if(":backends"===e){var n=t.findIndex(function(e){return"object"===o()(e)&&e.tuple.includes(":ex_syslogger")});return t.map(function(e,t){return t===n?":ex_syslogger":e})}if(":args"===e){if("string"==typeof t)return[t];var a=t.findIndex(function(e){return"object"===o()(e)&&e.tuple.includes("implode")});return t.map(function(e,t){return t===a?"implode":e})}return t},T=function e(t,n){return t.reduce(function(t,a){return":rate_limit"===n?t[a.tuple[0]]=Array.isArray(a.tuple[1])?a.tuple[1].map(function(e){return e.tuple}):a.tuple[1].tuple:":mascots"===a.tuple[0]?t[a.tuple[0]]=a.tuple[1].reduce(function(e,t){return[].concat(r()(e),[c()({},t.tuple[0],l()({},t.tuple[1],{id:"f".concat((~~(1e8*Math.random())).toString(16))}))])},[]):!Array.isArray(a.tuple[1])||":groups"!==a.tuple[0]&&":replace"!==a.tuple[0]&&":retries"!==a.tuple[0]?":crontab"===a.tuple[0]?t[a.tuple[0]]=a.tuple[1].reduce(function(e,t){return l()({},e,c()({},t.tuple[1],t.tuple[0]))},{}):":match_actor"===a.tuple[0]?t[a.tuple[0]]=Object.keys(a.tuple[1]).reduce(function(e,t){return[].concat(r()(e),[c()({},t,{value:a.tuple[1][t],id:"f".concat((~~(1e8*Math.random())).toString(16))})])},[]):":icons"===a.tuple[0]?t[a.tuple[0]]=a.tuple[1].map(function(e){return Object.keys(e).map(function(t){return{key:t,value:e[t],id:"f".concat((~~(1e8*Math.random())).toString(16))}})},[]):":prune"===a.tuple[0]?t[a.tuple[0]]=":disabled"===a.tuple[1]?[a.tuple[1]]:a.tuple[1].tuple:":proxy_url"===a.tuple[0]?t[a.tuple[0]]=E(a.tuple[1]):":args"===a.tuple[0]?t[a.tuple[0]]=y(a.tuple[0],a.tuple[1]):Array.isArray(a.tuple[1])&&"object"===o()(a.tuple[1][0])&&!Array.isArray(a.tuple[1][0])&&a.tuple[1][0].tuple?t[a.tuple[0]]=e(a.tuple[1],a.tuple[0]):Array.isArray(a.tuple[1])?t[a.tuple[0]]=a.tuple[1]:":ip"===a.tuple[0]?t[a.tuple[0]]=a.tuple[1].tuple.join("."):a.tuple[1]&&"object"===o()(a.tuple[1])?t[a.tuple[0]]=x(a.tuple[1]):t[a.tuple[0]]=a.tuple[1]:t[a.tuple[0]]=a.tuple[1].reduce(function(e,t){return[].concat(r()(e),[c()({},t.tuple[0],{value:t.tuple[1],id:"f".concat((~~(1e8*Math.random())).toString(16))})])},[]),t},{})},x=function(e){return Object.keys(e).reduce(function(t,n){return t[n]=e[n],t},{})},E=function(e){if(e&&!Array.isArray(e)&&"object"===o()(e)&&3===e.tuple.length&&":socks5"===e.tuple[0]){var t=d()(e.tuple,3);return{socks5:!0,host:t[1],port:t[2]}}if("string"==typeof e){var n=e.split(":"),a=d()(n,2);return{socks5:!1,host:a[0],port:a[1]}}return{socks5:!1,host:null,port:null}},S=function(e,t){return!(":auto_linker"===e&&":opts"===t)},k=function e(t,n,a,s,o,i,u){var p=m()(o),d=p[0],h=d.key,f=d.type,v=p.slice(1),g=[a,s].concat(r()(o.reverse().map(function(e){return e.key}).slice(0,-1))),w=_("state",i,g)?l()({},b("state",i[a][s],o.map(function(e){return e.key}).slice(0,-1)),c()({},h,t)):c()({},h,t),y=_("updatedSettings",u,g)?l()({},b("updatedSettings",u[a][s],o.map(function(e){return e.key}).slice(0,-1))[1],c()({},h,[f,n])):c()({},h,[f,n]);return":mime"===a&&":types"===o[0].key&&(w=i[a][o[0].key]?l()({},i[a][o[0].key].value,w):w,y=i[a][o[0].key]?l()({},Object.keys(i[a][o[0].key].value).reduce(function(e,t){return l()({},e,c()({},t,[f,i[a][o[0].key].value[t]]))},{}),y):y),1===v.length?{valueForState:w,valueForUpdatedSettings:y,setting:v[0]}:e(w,y,a,s,v,i,u)},_=function(e,t,n){if("state"===e)return v.a.get(t,n);var a=m()(n),r=a[0],s=a[1],o=a[2],i=a.slice(3),c=v.a.get(t,[r,s,o]);if(0!==i.length&&c){return function e(t,n){if(0===n.length)return!0;var a=m()(n),r=a[0],s=a.slice(1);return!!t[1][r]&&e(t[1][r],s)}(c,i)}return c||!1},O=function(e,t){var n=Array.isArray(t)&&t.length>0&&t.every(function(e){return"object"!==o()(e)});return":meta"===e||":types"===e||":backends"===e||":compiled_template_engines"===e||":compiled_format_encoders"===e||"string"==typeof t||"number"==typeof t||"boolean"==typeof t||null===t||n},A=function(e,t,n){return Object.keys(t).map(function(a){return t[a]._value?{group:e,key:a,value:function(e,t){var n=d()(t,2),a=n[0],r=n[1];if("atom"===a&&r.length>1)return":".concat(r);if(":backends"===e){var s=r.findIndex(function(e){return":ex_syslogger"===e}),o=r.slice();return-1!==s&&(o[s]={tuple:["ExSyslogger",":ex_syslogger"]}),o}return":types"===e?Object.keys(r).reduce(function(e,t){return l()({},e,c()({},t,r[t][1]))},{}):r}(a,t[a]._value)}:{group:e,key:a,value:L(t[a],n[e][a])}})},L=function e(t,n){return Object.keys(t).map(function(a){var r=d()(t[a],2),s=r[0],o=r[1];if("keyword"===s||s.includes("keyword")||s.includes("tuple")&&s.includes("list")||":replace"===a)return{tuple:[a,e(o,n)]};if("atom"===s&&o.length>0)return{tuple:[a,":".concat(o)]};if(s.includes("tuple")&&(s.includes("string")||s.includes("atom")))return"string"==typeof o?{tuple:[a,o]}:{tuple:[a,{tuple:o}]};if("reversed_tuple"===s)return{tuple:[o,a]};if("map"===s){var i=Object.keys(o).reduce(function(e,t){return e[t]=":match_actor"===a?o[t]:o[t][1],e},{}),u=":match_actor"===a?n[a].reduce(function(e,t){return l()({},e,c()({},Object.keys(t)[0],Object.values(t)[0].value))},{}):n[a];return{tuple:[a,l()({},u,i)]}}if(":ip"===a){var p=o.split(".").map(function(e){return parseInt(e,10)});return{tuple:[a,{tuple:p}]}}if(":args"===a){var h=o.findIndex(function(e){return"implode"===e}),m=o.slice();return-1!==h&&(m[h]={tuple:["implode","1"]}),{tuple:[a,m]}}return{tuple:[a,o]}})},I=function(e){return e.reduce(function(e,t){var n=v.a.compact([t.key,t.label,t.description]).map(function(e){return e.toLowerCase()}),a={label:t.label,key:t.key||t.group,groupKey:t.key||t.group,groupLabel:t.label,search:n};if(t.children){var s=t.key||":pleroma"!==t.group?[].concat(r()(e),[a]):e;return[].concat(r()(s),r()(function e(t,n,a){return t.reduce(function(t,s){var o=v.a.compact([s.key,s.label,s.description]).map(function(e){return e.toLowerCase()}),i={label:s.label,key:s.key||s.group,groupKey:a,groupLabel:n,search:o};if(s.children){var c=[].concat(r()(t),[i]);return[].concat(r()(c),r()(e(s.children,n,a)))}return[].concat(r()(t),[i])},[])}(t.children,t.label,t.key||t.group)))}return t.key||":pleroma"!==t.group?[].concat(r()(e),[a]):e},[])}},hkRB:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-size",use:"icon-size-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},iqZD:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-zip",use:"icon-zip-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},j7e1:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-tab",use:"icon-tab-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},jf83:function(e,t,n){},jo2x:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-search",use:"icon-search-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},k80C:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-tree",use:"icon-tree-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},kPu2:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-documentation",use:"icon-documentation-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},lt0h:function(e,t,n){},"m7++":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-drag",use:"icon-drag-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},mDMp:function(e,t,n){"use strict";var a=n("Tfa4");n.n(a).a},mSHS:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-fullscreen",use:"icon-fullscreen-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},mSNy:function(e,t,n){"use strict";var a=n("MVZn"),r=n.n(a),s=n("Kw5r"),o=n("qSUR"),i=n("p46w"),c=n.n(i),u=n("stYL"),l=n.n(u),p=n("8NkQ"),d=n.n(p),h=n("PtZe"),m=n.n(h);s.default.use(o.a);var f={en:r()({},{route:{dashboard:"Dashboard",introduction:"Introduction",documentation:"Documentation",guide:"Guide",permission:"Permission",pagePermission:"Page Permission",directivePermission:"Directive Permission",icons:"Icons",components:"Components",componentIndex:"Introduction",markdown:"Markdown",jsonEditor:"JSON Editor",dndList:"Dnd List",splitPane:"SplitPane",avatarUpload:"Avatar Upload",dropzone:"Dropzone",sticky:"Sticky",countTo:"CountTo",componentMixin:"Mixin",backToTop:"BackToTop",dragDialog:"Drag Dialog",dragSelect:"Drag Select",dragKanban:"Drag Kanban",charts:"Charts",keyboardChart:"Keyboard Chart",lineChart:"Line Chart",mixChart:"Mix Chart",example:"Example",nested:"Nested Routes",menu1:"Menu 1","menu1-1":"Menu 1-1","menu1-2":"Menu 1-2","menu1-2-1":"Menu 1-2-1","menu1-2-2":"Menu 1-2-2","menu1-3":"Menu 1-3",menu2:"Menu 2",Table:"Table",dynamicTable:"Dynamic Table",dragTable:"Drag Table",inlineEditTable:"Inline Edit",complexTable:"Complex Table",treeTable:"Tree Table",customTreeTable:"Custom TreeTable",tab:"Tab",form:"Form",createArticle:"Create Article",editArticle:"Edit Article",articleList:"Article List",errorPages:"Error Pages",page401:"401",page404:"404",errorLog:"Error Log",excel:"Excel",exportExcel:"Export Excel",selectExcel:"Export Selected",uploadExcel:"Upload Excel",zip:"Zip",pdf:"PDF",exportZip:"Export Zip",theme:"Theme",clipboardDemo:"Clipboard",i18n:"I18n",externalLink:"External Link",users:"Users",reports:"Reports",settings:"Settings",moderationLog:"Moderation Log","emoji-packs":"Emoji packs"},navbar:{logOut:"Log Out",dashboard:"Dashboard",github:"Github",theme:"Theme",size:"Global Size"},login:{title:"Login Form",logIn:"Log in",logInViaPleromaFE:"Log in via PleromaFE",username:"username@host",password:"password",omitHostname:"omit hostname if Pleroma is located on this domain",errorMessage:"Username must contain username and host, e.g. john@pleroma.social",any:"any",thirdparty:"Or connect with",pleromaFELoginFailed:"Failed to login via PleromaFE, please login with username/password",pleromaFELoginSucceed:"Logged in via PleromaFE"},documentation:{documentation:"Documentation",github:"Github Repository"},permission:{roles:"Your roles",switchRoles:"Switch roles",tips:"In some cases it is not suitable to use v-permission, such as element Tab component or el-table-column and other asynchronous rendering dom cases which can only be achieved by manually setting the v-if."},guide:{description:"The guide page is useful for some people who entered the project for the first time. You can briefly introduce the features of the project. Demo is based on ",button:"Show Guide"},components:{documentation:"Documentation",dropzoneTips:"Because my business has special needs, and has to upload images to qiniu, so instead of a third party, I chose encapsulate it by myself. It is very simple, you can see the detail code in @/components/element-ui/Dropzone.",stickyTips:"when the page is scrolled to the preset position will be sticky on the top.",backToTopTips1:"When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner",backToTopTips2:"You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally",imageUploadTips:"Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version."},table:{dynamicTips1:"Fixed header, sorted by header order",dynamicTips2:"Not fixed header, sorted by click order",dragTips1:"The default order",dragTips2:"The after dragging order",title:"Title",importance:"Imp",type:"Type",remark:"Remark",search:"Search",add:"Add",export:"Export",reviewer:"reviewer",id:"ID",date:"Date",author:"Author",readings:"Readings",status:"Status",actions:"Actions",edit:"Edit",publish:"Publish",draft:"Draft",delete:"Delete",cancel:"Cancel",confirm:"Confirm"},errorLog:{tips:"Please click the bug icon in the upper right corner",description:"Now the management system are basically the form of the spa, it enhances the user experience, but it also increases the possibility of page problems, a small negligence may lead to the entire page deadlock. Fortunately Vue provides a way to catch handling exceptions, where you can handle errors or report exceptions.",documentation:"Document introduction"},excel:{export:"Export",selectedExport:"Export Selected Items",placeholder:"Please enter the file name(default excel-list)"},zip:{export:"Export",placeholder:"Please enter the file name(default file)"},pdf:{tips:"Here we use window.print() to implement the feature of downloading pdf."},theme:{change:"Change Theme",documentation:"Theme documentation",tips:"Tips: It is different from the theme-pick on the navbar is two different skinning methods, each with different application scenarios. Refer to the documentation for details."},tagsView:{refresh:"Refresh",close:"Close",closeOthers:"Close Others",closeAll:"Close All"},users:{users:"Users",localUsersOnly:"Local users only",search:"Search",id:"ID",name:"Name",status:"Status",local:"Local",external:"External",deactivated:"Deactivated",active:"Active",unconfirmed:"Unconfirmed",actions:"Actions",activate:"Activate",deactivate:"Deactivate",admin:"Admin",moderator:"Moderator",moderation:"Moderation",revokeAdmin:"Revoke Admin",grantAdmin:"Grant Admin",revokeModerator:"Revoke Moderator",grantModerator:"Grant Moderator",activateAccount:"Activate Account",activateAccounts:"Activate Accounts",deactivateAccount:"Deactivate Account",deactivateAccounts:"Deactivate Accounts",deleteAccount:"Delete Account",deleteAccounts:"Delete Accounts",forceNsfw:"Force posts to be NSFW",stripMedia:"Force posts to not have media",forceUnlisted:"Force posts to be unlisted",sandbox:"Force posts to be followers-only",disableRemoteSubscription:"Disallow following user from remote instances",disableRemoteSubscriptionForMultiple:"Disallow following users from remote instances",disableAnySubscription:"Disallow following user at all",disableAnySubscriptionForMultiple:"Disallow following users at all",requirePasswordReset:"Require password reset on next login",selectUsers:"Select users to apply actions to multiple users",moderateUser:"Moderate user",moderateUsers:"Moderate multiple users",createAccount:"Create new account",apply:"Apply",remove:"Remove",grantRightConfirmation:"Are you sure you want to grant {right} rights to all selected users?",revokeRightConfirmation:"Are you sure you want to revoke {right} rights from all selected users?",activateMultipleUsersConfirmation:"Are you sure you want to activate accounts of all selected users?",deactivateMultipleUsersConfirmation:"Are you sure you want to deactivate accounts of all selected users?",deleteMultipleUsersConfirmation:"Are you sure you want to delete accounts of all selected users?",addTagForMultipleUsersConfirmation:"Are you sure you want to apply tag to all selected users?",removeTagFromMultipleUsersConfirmation:"Are you sure you want to remove tag from all selected users?",requirePasswordResetConfirmation:"Are you sure you want to require password reset for all selected users?",confirmAccountsConfirmation:"Are you sure you want to confirm emails for all selected users?",resendEmailConfirmation:"Are you sure you want to resend confirmation email for all selected users?",mailerMustBeEnabled:"To require user's password reset you must enable mailer.",ok:"Okay",completed:"Completed",cancel:"Cancel",canceled:"Canceled",username:"Username",email:"E-mail",password:"Password",create:"Create",submitFormError:"There are invalid values in the form. Please fix them before continuing.",emptyEmailError:"Please input the e-mail",invalidEmailError:"Please input valid e-mail",emptyPasswordError:"Please input the password",emptyNicknameError:"Please input the username",invalidNicknameError:'Username can include "a-z", "A-Z" and "0-9" characters',getPasswordResetToken:"Get password reset token",passwordResetTokenCreated:"Password reset token was created",accountCreated:"New account was created!",unconfirmedEmail:"User didn't confirm the email",confirmAccount:"Confirm account",confirmAccounts:"Confirm accounts",resendConfirmation:"Resend confirmation email",invalidAccount:"This account has invalid nickname and can't be modified",invalidNickname:"invalid nickname",passwordResetTokenGenerated:"Password reset token was generated:",linkToResetPassword:"You can also use this link to reset password:"},statuses:{statuses:"Statuses",instanceFilter:"Instance filter",loadMore:"Load more",noInstances:"No other instances found",onlyLocalStatuses:"Show only local statuses",showPrivateStatuses:"Show private statuses",direct:"Direct",private:"Private",public:"Public",unlisted:"Unlisted",openStatusInInstance:"Open status in instance"},userProfile:{tags:"Tags",moderator:"Moderator",admin:"Admin",local:"Local",external:"External",accountType:"Account type",nickname:"Nickname",recentStatuses:"Recent Statuses",roles:"Roles",active:"Active",status:"Status",deactivated:"Deactivated",noStatuses:"No statuses to show",openAccountInInstance:"Open account in instance",securitySettings:{email:"Email",password:"Password",securitySettings:"Security settings",passwordChangeWarning1:"Setting a new password will cause the user to be signed out from any client they have used before.",passwordChangeWarning2:"When the user signs in with this password, they will be asked to set a new one.",passwordLengthNotice:"Make sure it's at least {minLength} characters long.",inputNewEmail:"Input new email",inputNewPassword:"Input new password",passwordUpdated:"The password has been updated",emailUpdated:"The email has been updated",success:"Success",submit:"Submit",close:"Close"}},usersFilter:{inputPlaceholder:"Select filter",byAccountType:"By account type",local:"Local",external:"External",byStatus:"By status",active:"Active",deactivated:"Deactivated"},reports:{reports:"Reports",report:"Report",reply:"Reply",from:"From",showNotes:"Show notes",newNote:"New note",submit:"Submit",confirmMsg:"Are you sure you want to delete this note?",delete:"Delete",cancel:"Cancel",deleteCompleted:"Delete comleted",deleteCanceled:"Delete canceled",noNotes:"No notes to display",changeState:"Change report's state",changeAllReports:"Change all reports",changeScope:"Change scope",moderateUser:"Moderate user",resolve:"Resolve",reopen:"Reopen",close:"Close",resolveAll:"Resolve all",reopenAll:"Reopen all",closeAll:"Close all",addSensitive:"Add Sensitive flag",removeSensitive:"Remove Sensitive flag",public:"Make status public",private:"Make status private",unlisted:"Make status unlisted",sensitive:"Sensitive",deleteStatus:"Delete status",reportOn:"Report on",reportsOn:"Reports on",id:"ID",account:"Account",actor:"Actor",actors:"Actors",content:"Content",reportedStatus:"Reported status",statusDeleted:"This status has been deleted",leaveNote:"Leave a note",postNote:"Send",deleteNote:"Delete",notFound:"account not found"},reportsFilter:{inputPlaceholder:"Select filter",open:"Open",closed:"Closed",resolved:"Resolved"},moderationLog:{moderationLog:"Moderation Log"},settings:{settings:"Settings",instance:"Instance",upload:"Upload",mailer:"Mailer",logger:"Logger",activityPub:"ActivityPub",auth:"Authentication",autoLinker:"Auto Linker",captcha:"Captcha",frontend:"Frontend",http:"HTTP",mrf:"MRF",mediaProxy:"Media Proxy",metadata:"Metadata",gopher:"Gopher",jobQueue:"Job queue",webPush:"Web push encryption",esshd:"BBS / SSH access",rateLimiters:"Rate limiters",other:"Other",relays:"Relays",follow:"Follow",followRelay:"Follow new relay",instanceUrl:"Instance URL",success:"Settings changed successfully!",description:"Description",removeFromDB:"Remove setting from the DB",successfullyDownloaded:"Successfully downloaded",successfullyImported:"Successfully imported",nowNewPacksToImport:"No new packs to import",successfullyUpdated:"Successfully updated",metadatLowerCase:"metadata",files:"files",successfullyRemoved:"Setting removed successfully!",seeDocs:"See Documentation",assets:"Assets",emoji:"Emoji",markup:"Markup settings",corsPlug:"CORS plug config",instanceReboot:"Reboot Instance",restartApp:"You must restart the instance to apply settings",restartSuccess:"Instance rebooted successfully!",removeSettingConfirmation:"Are you sure you want to remove this setting's value from the database?"},invites:{inviteTokens:"Invite tokens",createInviteToken:"Generate invite token",pickDate:"Pick a date",maxUse:"Max use",expiresAt:"Expires at",tokenCreated:"Invite token was created",token:"Token",inviteLink:"Invite link",uses:"Uses",used:"Used",cancel:"Cancel",create:"Create",revoke:"Revoke",id:"ID",actions:"Actions",active:"Active",inviteUserViaEmail:"Invite user via email",sendRegistration:"Send registration invite via email",email:"Email",name:"Name",emptyEmailError:"Please input the e-mail",invalidEmailError:"Please input valid e-mail",emailSent:"Invite was sent",submitFormError:"There are invalid values in the form. Please fix them before continuing.",inviteViaEmailAlert:"To send invite via email make sure to enable `invites_enabled` and disable `registrations_open`"},emoji:{emojiPacks:"Emoji packs",reloaded:"Emoji reloaded successfully!",refreshed:"Emoji refreshed successfully!",importEmojiTooltip:"Importing from the filesystem will scan the directories and import those without pack.json but with emoji.txt or without neither",reloadEmoji:"Reload emoji",importPacks:"Import packs from the server filesystem",localPacks:"Local packs",refreshLocalPacks:"Refresh local packs",createLocalPack:"Create a new local pack",remotePacks:"Remote packs",remoteInstanceAddress:"Remote instance address",refreshRemote:"Refresh remote packs",sharePack:"Share pack",required:"required",homepage:"Homepage",description:"Description",packs:"Packs",license:"License",shortcode:"Shortcode",fallbackSrc:"Fallback source",fallbackSrcSha:"Fallback source SHA",saveMetadata:"Save metadata",deletePack:"Delete pack",downloadPack:"Download pack",downloadPackArchive:"Download pack archive",addNewEmoji:"Add new emoji to the pack",manageEmoji:"Manage existing emoji",thisWillDownload:"This will download the",downloadToCurrentInstance:"pack to the current instance under the name",canBeChanged:"can be changed below",willBeUsable:"It will then be usable and shareable from the current instance",downloadAsOptional:"Download as (optional)",downloadSharedPack:"Download shared pack to current instance",downloadSharedPackMobile:"Download pack to instance",optional:"optional",uploadFile:"Upload a file",url:"URL",clickToUpload:"Click to upload",upload:"Upload",customFilename:"Custom filename",customFilenameDesc:"Custom file name (optional)",file:"File",localPack:"Local pack",leaveEmptyShortcode:"leave empty to use the same shortcode",leaveEmptyFilename:"leave empty to use the same filename",update:"Update",remove:"Remove",selectLocalPack:"Select the local pack to copy to",specifyShortcode:"Specify a custom shortcode",specifyFilename:"Specify a custom filename",copy:"Copy",copyToLocalPack:"Copy to local pack"}},l.a),zh:r()({},{route:{dashboard:"首页",introduction:"简述",documentation:"文档",guide:"引导页",permission:"权限测试页",pagePermission:"页面权限",directivePermission:"指令权限",icons:"图标",components:"组件",componentIndex:"介绍",markdown:"Markdown",jsonEditor:"JSON编辑器",dndList:"列表拖拽",splitPane:"Splitpane",avatarUpload:"头像上传",dropzone:"Dropzone",sticky:"Sticky",countTo:"CountTo",componentMixin:"小组件",backToTop:"返回顶部",dragDialog:"拖拽 Dialog",dragSelect:"拖拽 Select",dragKanban:"可拖拽看板",charts:"图表",keyboardChart:"键盘图表",lineChart:"折线图",mixChart:"混合图表",example:"综合实例",nested:"路由嵌套",menu1:"菜单1","menu1-1":"菜单1-1","menu1-2":"菜单1-2","menu1-2-1":"菜单1-2-1","menu1-2-2":"菜单1-2-2","menu1-3":"菜单1-3",menu2:"菜单2",Table:"Table",dynamicTable:"动态Table",dragTable:"拖拽Table",inlineEditTable:"Table内编辑",complexTable:"综合Table",treeTable:"树形表格",customTreeTable:"自定义树表",tab:"Tab",form:"表单",createArticle:"创建文章",editArticle:"编辑文章",articleList:"文章列表",errorPages:"错误页面",page401:"401",page404:"404",errorLog:"错误日志",excel:"Excel",exportExcel:"Export Excel",selectExcel:"Export Selected",uploadExcel:"Upload Excel",zip:"Zip",pdf:"PDF",exportZip:"Export Zip",theme:"换肤",clipboardDemo:"Clipboard",i18n:"国际化",externalLink:"外链"},navbar:{logOut:"退出登录",dashboard:"首页",github:"项目地址",theme:"换肤",size:"布局大小"},login:{title:"系统登录",logIn:"登录",username:"账号",password:"密码",any:"随便填",thirdparty:"第三方登录",thirdpartyTips:"本地不能模拟,请结合自己业务进行模拟!!!"},documentation:{documentation:"文档",github:"Github 地址"},permission:{roles:"你的权限",switchRoles:"切换权限",tips:"在某些情况下,不适合使用 v-permission。例如:Element-UI 的 Tab 组件或 el-table-column 以及其它动态渲染 dom 的场景。你只能通过手动设置 v-if 来实现。"},guide:{description:"引导页对于一些第一次进入项目的人很有用,你可以简单介绍下项目的功能。本 Demo 是基于",button:"打开引导"},components:{documentation:"文档",dropzoneTips:"由于我司业务有特殊需求,而且要传七牛 所以没用第三方,选择了自己封装。代码非常的简单,具体代码你可以在这里看到 @/components/element-ui/Dropzone",stickyTips:"当页面滚动到预设的位置会吸附在顶部",backToTopTips1:"页面滚动到指定位置会在右下角出现返回顶部按钮",backToTopTips2:"可自定义按钮的样式、show/hide、出现的高度、返回的位置 如需文字提示,可在外部使用Element的el-tooltip元素",imageUploadTips:"由于我在使用时它只有vue@1版本,而且和mockjs不兼容,所以自己改造了一下,如果大家要使用的话,优先还是使用官方版本。"},table:{dynamicTips1:"固定表头, 按照表头顺序排序",dynamicTips2:"不固定表头, 按照点击顺序排序",dragTips1:"默认顺序",dragTips2:"拖拽后顺序",title:"标题",importance:"重要性",type:"类型",remark:"点评",search:"搜索",add:"添加",export:"导出",reviewer:"审核人",id:"序号",date:"时间",author:"作者",readings:"阅读数",status:"状态",actions:"操作",edit:"编辑",publish:"发布",draft:"草稿",delete:"删除",cancel:"取 消",confirm:"确 定"},errorLog:{tips:"请点击右上角bug小图标",description:"现在的管理后台基本都是spa的形式了,它增强了用户体验,但同时也会增加页面出问题的可能性,可能一个小小的疏忽就导致整个页面的死锁。好在 Vue 官网提供了一个方法来捕获处理异常,你可以在其中进行错误处理或者异常上报。",documentation:"文档介绍"},excel:{export:"导出",selectedExport:"导出已选择项",placeholder:"请输入文件名(默认excel-list)"},zip:{export:"导出",placeholder:"请输入文件名(默认file)"},pdf:{tips:"这里使用 window.print() 来实现下载pdf的功能"},theme:{change:"换肤",documentation:"换肤文档",tips:"Tips: 它区别于 navbar 上的 theme-pick, 是两种不同的换肤方法,各自有不同的应用场景,具体请参考文档。"},tagsView:{refresh:"刷新",close:"关闭",closeOthers:"关闭其它",closeAll:"关闭所有"}},d.a),es:r()({},{route:{dashboard:"Panel de control",introduction:"Introducción",documentation:"Documentación",guide:"Guía",permission:"Permisos",pagePermission:"Permisos de la página",directivePermission:"Permisos de la directiva",icons:"Iconos",components:"Componentes",componentIndex:"Introducción",markdown:"Markdown",jsonEditor:"Editor JSON",dndList:"Lista Dnd",splitPane:"Panel dividido",avatarUpload:"Subir avatar",dropzone:"Subir ficheros",sticky:"Sticky",countTo:"CountTo",componentMixin:"Mixin",backToTop:"Ir arriba",dragDialog:"Drag Dialog",dragSelect:"Drag Select",dragKanban:"Drag Kanban",charts:"Gráficos",keyboardChart:"Keyboard Chart",lineChart:"Gráfico de líneas",mixChart:"Mix Chart",example:"Ejemplo",nested:"Rutas anidadass",menu1:"Menu 1","menu1-1":"Menu 1-1","menu1-2":"Menu 1-2","menu1-2-1":"Menu 1-2-1","menu1-2-2":"Menu 1-2-2","menu1-3":"Menu 1-3",menu2:"Menu 2",Table:"Tabla",dynamicTable:"Tabla dinámica",dragTable:"Arrastrar tabla",inlineEditTable:"Editor",complexTable:"Complex Table",treeTable:"Tree Table",customTreeTable:"Custom TreeTable",tab:"Pestaña",form:"Formulario",createArticle:"Crear artículo",editArticle:"Editar artículo",articleList:"Listado de artículos",errorPages:"Páginas de error",page401:"401",page404:"404",errorLog:"Registro de errores",excel:"Excel",exportExcel:"Exportar a Excel",selectExcel:"Export seleccionado",uploadExcel:"Subir Excel",zip:"Zip",pdf:"PDF",exportZip:"Exportar a Zip",theme:"Tema",clipboardDemo:"Clipboard",i18n:"I18n",externalLink:"Enlace externo"},navbar:{logOut:"Salir",dashboard:"Panel de control",github:"Github",theme:"Tema",size:"Tamaño global"},login:{title:"Formulario de acceso",logIn:"Acceso",username:"Usuario",password:"Contraseña",any:"nada",thirdparty:"Conectar con",thirdpartyTips:"No se puede simular en local, así que combine su propia simulación de negocios. ! !"},documentation:{documentation:"Documentación",github:"Repositorio Github"},permission:{roles:"Tus permisos",switchRoles:"Cambiar permisos",tips:"In some cases it is not suitable to use v-permission, such as element Tab component or el-table-column and other asynchronous rendering dom cases which can only be achieved by manually setting the v-if."},guide:{description:"The guide page is useful for some people who entered the project for the first time. You can briefly introduce the features of the project. Demo is based on ",button:"Ver guía"},components:{documentation:"Documentación",dropzoneTips:"Because my business has special needs, and has to upload images to qiniu, so instead of a third party, I chose encapsulate it by myself. It is very simple, you can see the detail code in @/components/element-ui/Dropzone.",stickyTips:"when the page is scrolled to the preset position will be sticky on the top.",backToTopTips1:"When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner",backToTopTips2:"You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally",imageUploadTips:"Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version."},table:{dynamicTips1:"Fixed header, sorted by header order",dynamicTips2:"Not fixed header, sorted by click order",dragTips1:"Orden por defecto",dragTips2:"The after dragging order",title:"Título",importance:"Importancia",type:"Tipo",remark:"Remark",search:"Buscar",add:"Añadir",export:"Exportar",reviewer:"reviewer",id:"ID",date:"Fecha",author:"Autor",readings:"Lector",status:"Estado",actions:"Acciones",edit:"Editar",publish:"Publicar",draft:"Draft",delete:"Eliminar",cancel:"Cancelar",confirm:"Confirmar"},errorLog:{tips:"Please click the bug icon in the upper right corner",description:"Now the management system are basically the form of the spa, it enhances the user experience, but it also increases the possibility of page problems, a small negligence may lead to the entire page deadlock. Fortunately Vue provides a way to catch handling exceptions, where you can handle errors or report exceptions.",documentation:"Documento de introducción"},excel:{export:"Exportar",selectedExport:"Exportar seleccionados",placeholder:"Por favor escribe un nombre de fichero"},zip:{export:"Exportar",placeholder:"Por favor escribe un nombre de fichero"},pdf:{tips:"Here we use window.print() to implement the feature of downloading pdf."},theme:{change:"Cambiar tema",documentation:"Documentación del tema",tips:"Tips: It is different from the theme-pick on the navbar is two different skinning methods, each with different application scenarios. Refer to the documentation for details."},tagsView:{refresh:"Actualizar",close:"Cerrar",closeOthers:"Cerrar otros",closeAll:"Cerrar todos"}},m.a),oc:r()({},{route:{dashboard:"Tablèu de bòrd",introduction:"Introduccion",documentation:"Documentacion",guide:"Guida",permission:"Autorizacions",pagePermission:"Pagina d’autorizacion",directivePermission:"Politica d’autorizacion",icons:"Icònas",components:"Compausants",componentIndex:"Introduccion",markdown:"Markdown",jsonEditor:"JSON Editor",dndList:"Dnd List",splitPane:"SplitPane",avatarUpload:"Mandadís d’avatar",dropzone:"Dropzone",sticky:"Sticky",countTo:"CountTo",componentMixin:"Mixin",backToTop:"BackToTop",dragDialog:"Drag Dialog",dragSelect:"Drag Select",dragKanban:"Drag Kanban",charts:"Charts",keyboardChart:"Keyboard Chart",lineChart:"Line Chart",mixChart:"Mix Chart",example:"Exemple",nested:"Rotas imbricadas",menu1:"Menú 1","menu1-1":"Menu 1-1","menu1-2":"Menu 1-2","menu1-2-1":"Menu 1-2-1","menu1-2-2":"Menu 1-2-2","menu1-3":"Menu 1-3",menu2:"Menú 2",Table:"Tablèu",dynamicTable:"Tablèu dinamic",dragTable:"Drag Table",inlineEditTable:"Inline Edit",complexTable:"Tablèu complèx",treeTable:"Arborescéncia",customTreeTable:"Arborescéncia personalizada",tab:"Onglet",form:"Formulari",createArticle:"Crear un article",editArticle:"Modificar l’article",articleList:"Lista d’articles",errorPages:"Paginas d’error",page401:"401",page404:"404",errorLog:"Jornal d’error",excel:"Excel",exportExcel:"Exportacion Excel",selectExcel:"Exportar los seleccionats",uploadExcel:"Importacion Excel",zip:"Zip",pdf:"PDF",exportZip:"Exportacion Zip",theme:"Tèma",clipboardDemo:"Clipboard",i18n:"I18n",externalLink:"Ligams extèrnes",users:"Utilizaires"},navbar:{logOut:"Desconnexion",dashboard:"Tablèu de bòrd",github:"Github",theme:"Tèma",size:"Talha totala"},login:{title:"Formulari de connexion",logIn:"Se connectar",username:"Nom d’’utilizaire",password:"Senhal",any:"qual que siá",thirdparty:"O se connectar amb",thirdpartyTips:"Pòt pas èsser simulat en local, doncas montatz vòstra pròpria simulacion ! ! !"},documentation:{documentation:"Documentacion",github:"Repertòri Github"},permission:{roles:"Vòstres ròtles",switchRoles:"Cambiar de ròtle",tips:"Dins qualques cases es pas de bon far d’utilizar v-permission, coma element d’onglet compausant, el-table-column o d’autres renduts dom asincròns que pòdon pas que foncionar amb un parametratge manual de v-if."},guide:{description:"La pagina de guida es utila pel monde que dintran dins lo projècte pel primièr còp. Podètz presentar en un mot las foncionalitats del projèctes. La demo es fondada sus ",button:"Mostrar la guida"},components:{documentation:"Documentacion",dropzoneTips:"Because my business has special needs, and has to upload images to qiniu, so instead of a third party, I chose encapsulate it by myself. It is very simple, you can see the detail code in @/components/element-ui/Dropzone.",stickyTips:"when the page is scrolled to the preset position will be sticky on the top.",backToTopTips1:"When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner",backToTopTips2:"You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally",imageUploadTips:"Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version."},table:{dynamicTips1:"Bandièra fixa, triada per òrdre de bandièra",dynamicTips2:"Bandièra pas fixa, triada per òrdre de clic",dragTips1:"L’’òrdre per defaut",dragTips2:"L’’òrdre aprèp lisar-depausar",title:"Títol",importance:"Imp",type:"Tipe",remark:"Remarca",search:"Recercar",add:"Ajustar",export:"Exportar",reviewer:"examinator",id:"ID",date:"Data",author:"Autor",readings:"Lecturas",status:"Estatuts",actions:"Accions",edit:"Modificar",publish:"Publicar",draft:"Ensag",delete:"Suprimir",cancel:"Anullar",confirm:"Confirmar"},errorLog:{tips:"Mercés de clicar l’’icòna del babau amont a man drecha",description:"Ara que lo sistèma de gestion es coma un spa, melhora l’experiéncia dels utilizaire mas aumenta tanben lo risc de problèmas sus la pagina, una pichona negligéncia pòt menar a un blocatge complèt de la pagina. Urosament Vue fornís de manièras per gerir las excepcions, trobar las errors o senhalar las excepcions.",documentation:"Presentacion del document"},excel:{export:"Exportar",selectedExport:"Exportar los elements seleccionats",placeholder:"Mercés de picar lo nom de fichièr (per defaut excel-list)"},zip:{export:"Exportar",placeholder:"Mercés de picar lo nom de fichièr (per defaut file)"},pdf:{tips:"Aquí utilizam window.print() per prepausar lo telecargament de pdf."},theme:{change:"Cambiar lo tèma",documentation:"Documentacion dels tèmas",tips:"Astúcia : es diferent del theme-pick de la barra de navigacion, i a dos metòdes de personalizacion, caduna amb un biais de far diferent. Referiscam a la documentacion per mai de detalhs."},tagsView:{refresh:"Actualizar",close:"Tampar",closeOthers:"Tampar los autres",closeAll:"Los tampar totes"}})},v=new o.a({locale:c.a.get("language")||"en",messages:f});t.a=v},mm8V:function(e,t,n){"use strict";n.d(t,"a",function(){return l}),n.d(t,"b",function(){return d}),n.d(t,"c",function(){return h}),n.d(t,"d",function(){return f}),n.d(t,"e",function(){return g}),n.d(t,"f",function(){return b}),n.d(t,"g",function(){return T}),n.d(t,"h",function(){return E}),n.d(t,"i",function(){return k}),n.d(t,"j",function(){return O}),n.d(t,"k",function(){return L}),n.d(t,"l",function(){return C});var a=n("o0o1"),r=n.n(a),s=n("yXPU"),o=n.n(s),i=n("t3Un"),c=n("X4fA"),u=n("9i3r");function l(e,t,n,a,r,s){return p.apply(this,arguments)}function p(){return(p=o()(r.a.mark(function e(t,n,a,s,o,c){var l;return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return l=new FormData,""!==s.trim()&&l.set("filename",s),""!==a.trim()&&l.set("shortcode",a),l.set("file",n),e.next=6,Object(i.a)({baseURL:Object(u.a)(o),url:"/api/pleroma/emoji/packs/".concat(t,"/files"),method:"post",headers:D(c),data:l});case 6:return e.abrupt("return",e.sent);case 7:case"end":return e.stop()}},e)}))).apply(this,arguments)}function d(e,t,n){return"".concat(Object(u.a)(e),"/emoji/").concat(t,"/").concat(n)}function h(e,t,n){return m.apply(this,arguments)}function m(){return(m=o()(r.a.mark(function e(t,n,a){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(t),url:"/api/pleroma/emoji/packs/".concat(a),method:"post",headers:D(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function f(e,t,n,a){return v.apply(this,arguments)}function v(){return(v=o()(r.a.mark(function e(t,n,a,s){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(a),url:"/api/pleroma/emoji/packs/".concat(t,"/files"),method:"delete",headers:D(s),data:{shortcode:n}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function g(e,t,n){return w.apply(this,arguments)}function w(){return(w=o()(r.a.mark(function e(t,n,a){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(t),url:"/api/pleroma/emoji/packs/".concat(a),method:"delete",headers:D(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function b(e,t,n,a,r){return y.apply(this,arguments)}function y(){return(y=o()(r.a.mark(function e(t,n,a,s,o){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return""===s.trim()&&(s=null),e.next=3,Object(i.a)({baseURL:Object(u.a)(t),url:"/api/pleroma/emoji/packs/download",method:"post",headers:D(o),data:{url:Object(u.a)(n),name:a,as:s},timeout:0});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}function T(e,t){return x.apply(this,arguments)}function x(){return(x=o()(r.a.mark(function e(t,n){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(t),url:"/api/pleroma/emoji/packs/import",method:"get",headers:D(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function E(e){return S.apply(this,arguments)}function S(){return(S=o()(r.a.mark(function e(t){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(t),url:"/api/pleroma/emoji/packs/",method:"get"});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function k(e,t,n){return _.apply(this,arguments)}function _(){return(_=o()(r.a.mark(function e(t,n,a){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(t),url:"/api/pleroma/emoji/packs/remote?url=".concat(Object(u.a)(a)),method:"get",headers:D(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function O(e,t){return A.apply(this,arguments)}function A(){return(A=o()(r.a.mark(function e(t,n){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(t),url:"/api/pleroma/admin/reload_emoji",method:"post",headers:D(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function L(e,t,n,a){return I.apply(this,arguments)}function I(){return(I=o()(r.a.mark(function e(t,n,a,s){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(t),url:"/api/pleroma/emoji/packs/".concat(a),method:"patch",headers:D(n),data:{metadata:s},timeout:0});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function C(e,t,n,a,r,s,o){return R.apply(this,arguments)}function R(){return(R=o()(r.a.mark(function e(t,n,a,s,o,c,l){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(c),url:"/api/pleroma/emoji/packs/".concat(t,"/files"),method:"patch",headers:D(l),data:{shortcode:n,new_shortcode:a,new_filename:s,force:o}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var D=function(e){return e?{Authorization:"Bearer ".concat(Object(c.b)())}:{}}},nZHn:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-icon",use:"icon-icon-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},oUrx:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-404",use:"icon-404-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},qkZ8:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-edit",use:"icon-edit-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},qwAt:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-lock",use:"icon-lock-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},s7Vf:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-user",use:"icon-user-usage",viewBox:"0 0 130 130",content:''});o.a.add(i);t.default=i},"sg+I":function(e,t,n){e.exports={menuText:"#bfcbd9",menuActiveText:"#409EFF",subMenuActiveText:"#f4f4f5",menuBg:"#304156",menuHover:"#263445",subMenuBg:"#1f2d3d",subMenuHover:"#001528",sideBarWidth:"180px"}},t3Un:function(e,t,n){"use strict";var a=n("vDqi"),r=n.n(a),s=n("XJYT"),o=r.a.create({timeout:6e4});o.interceptors.response.use(function(e){return e},function(e){var t;if(console.log("Error ".concat(e)),e.response){var n=e.response.data.error?e.response.data.error:e.response.data;t=e.response.headers["content-type"].includes("application/json")?"".concat(e.message," - ").concat(n):"".concat(e.message)}else t=e;return Object(s.Message)({message:t,type:"error",duration:5e3}),Promise.reject(e)}),t.a=o},vDVG:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-clipboard",use:"icon-clipboard-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},y7eQ:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-email",use:"icon-email-usage",viewBox:"0 0 128 96",content:''});o.a.add(i);t.default=i},yCkv:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-chart",use:"icon-chart-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},zT9a:function(e,t,n){"use strict";var a={name:"SvgIcon",props:{iconClass:{type:String,required:!0},className:{type:String,default:""}},computed:{iconName:function(){return"#icon-".concat(this.iconClass)},svgClass:function(){return this.className?"svg-icon "+this.className:"svg-icon"}}},r=(n("mDMp"),n("KHd+")),s=Object(r.a)(a,function(){var e=this.$createElement,t=this._self._c||e;return t("svg",this._g({class:this.svgClass,attrs:{"aria-hidden":"true"}},this.$listeners),[t("use",{attrs:{"xlink:href":this.iconName}})])},[],!1,null,"17178ffc",null);s.options.__file="index.vue";t.a=s.exports},zx4i:function(e,t,n){e.exports={menuText:"#bfcbd9",menuActiveText:"#409EFF",subMenuActiveText:"#f4f4f5",menuBg:"#304156",menuHover:"#263445",subMenuBg:"#1f2d3d",subMenuHover:"#001528",sideBarWidth:"180px"}}},[["Vtdi","runtime","chunk-elementUI","chunk-libs"]]]); +//# sourceMappingURL=app.3fcec8f6.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/app.3fcec8f6.js.map b/priv/static/adminfe/static/js/app.3fcec8f6.js.map new file mode 100644 index 000000000..cc4ce87b3 --- /dev/null +++ b/priv/static/adminfe/static/js/app.3fcec8f6.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/icons/svg/pdf.svg","webpack:///./src/icons/svg/people.svg","webpack:///./src/icons/svg/eye-open.svg","webpack:///./src/components/element-ui/Hamburger/index.vue?8f92","webpack:///./src/icons/svg/exit-fullscreen.svg","webpack:///./src/icons/svg/nested.svg","webpack:///./src/icons/svg/theme.svg","webpack:///./src/icons/svg/form.svg","webpack:///./src/icons/svg/dashboard.svg","webpack:///./src/api/utils.js","webpack:///./src/icons/svg/shopping.svg","webpack:///./src/icons/svg/bug.svg","webpack:///./src/icons/svg/international.svg","webpack:///./src/icons/svg/qq.svg","webpack:///./src/icons/svg/link.svg","webpack:///./src/components/element-ui/ScrollPane/index.vue?8407","webpack:///./src/views/layout/components/TagsView.vue?6ab0","webpack:///./src/icons/svg/guide 2.svg","webpack:///./src/icons/svg/language.svg","webpack:///./src/icons/svg/password.svg","webpack:///./src/icons/svg/peoples.svg","webpack:///./src/icons/svg/money.svg","webpack:///./src/icons/svg/example.svg","webpack:///./src/icons/svg/list.svg","webpack:///./src/icons/svg/settings.svg","webpack:///./src/icons/svg/message.svg","webpack:///./src/icons/svg/table.svg","webpack:///./src/views/layout/Layout.vue?d1f6","webpack:///./src/icons/svg/eye.svg","webpack:///./src/icons/svg sync nonrecursive \\.svg$","webpack:///./src/icons/svg/component.svg","webpack:///./src/App.vue?9edb","webpack:///src/App.vue","webpack:///./src/App.vue","webpack:///./src/App.vue?1e50","webpack:///./src/api/app.js","webpack:///./src/store/modules/app.js","webpack:///./src/store/modules/errorLog.js","webpack:///./src/api/moderationLog.js","webpack:///./src/store/modules/moderationLog.js","webpack:///./src/api/invites.js","webpack:///./src/store/modules/invites.js","webpack:///./src/api/peers.js","webpack:///./src/store/modules/peers.js","webpack:///./src/components/element-ui/Hamburger/index.vue?1751","webpack:///src/components/element-ui/Hamburger/index.vue","webpack:///./src/components/element-ui/Hamburger/index.vue","webpack:///./src/components/element-ui/Hamburger/index.vue?78c1","webpack:///./src/views/layout/components/Navbar.vue?138b","webpack:///src/views/layout/components/Navbar.vue","webpack:///./src/views/layout/components/Navbar.vue","webpack:///./src/views/layout/components/Navbar.vue?b672","webpack:///./src/utils/i18n.js","webpack:///./src/utils/index.js","webpack:///src/views/layout/components/Sidebar/Item.vue","webpack:///./src/views/layout/components/Sidebar/Item.vue?425b","webpack:///./src/views/layout/components/Sidebar/Item.vue","webpack:///./src/views/layout/components/Sidebar/Link.vue?a99f","webpack:///src/views/layout/components/Sidebar/Link.vue","webpack:///./src/views/layout/components/Sidebar/Link.vue","webpack:///./src/views/layout/components/Sidebar/Link.vue?d88c","webpack:///./src/views/layout/components/Sidebar/SidebarItem.vue?f0b2","webpack:///src/views/layout/components/Sidebar/SidebarItem.vue","webpack:///./src/views/layout/components/Sidebar/FixiOSBug.js","webpack:///./src/views/layout/components/Sidebar/SidebarItem.vue","webpack:///./src/views/layout/components/Sidebar/SidebarItem.vue?4829","webpack:///./src/views/layout/components/Sidebar/index.vue?3b50","webpack:///src/views/layout/components/Sidebar/index.vue","webpack:///./src/views/layout/components/Sidebar/index.vue","webpack:///./src/views/layout/components/Sidebar/index.vue?29d8","webpack:///./src/components/element-ui/ScrollPane/index.vue?a39e","webpack:///src/components/element-ui/ScrollPane/index.vue","webpack:///./src/components/element-ui/ScrollPane/index.vue","webpack:///./src/components/element-ui/ScrollPane/index.vue?7344","webpack:///./src/views/layout/components/TagsView.vue?f016","webpack:///src/views/layout/components/TagsView.vue","webpack:///./src/views/layout/components/TagsView.vue","webpack:///./src/views/layout/components/TagsView.vue?d863","webpack:///./src/views/layout/components/AppMain.vue?4460","webpack:///src/views/layout/components/AppMain.vue","webpack:///./src/views/layout/components/AppMain.vue","webpack:///./src/views/layout/components/AppMain.vue?367b","webpack:///./src/views/layout/mixin/ResizeHandler.js","webpack:///./src/views/layout/Layout.vue?de6d","webpack:///src/views/layout/Layout.vue","webpack:///./src/views/layout/Layout.vue","webpack:///./src/views/layout/Layout.vue?9516","webpack:///./src/router/index.js","webpack:///./src/store/modules/permission.js","webpack:///./src/api/relays.js","webpack:///./src/store/modules/relays.js","webpack:///./src/api/reports.js","webpack:///./src/store/modules/reports.js","webpack:///./src/api/settings.js","webpack:///./src/store/modules/settings.js","webpack:///./src/api/status.js","webpack:///./src/store/modules/status.js","webpack:///./src/store/modules/tagsView.js","webpack:///./src/api/login.js","webpack:///./src/api/nodeInfo.js","webpack:///./src/store/modules/user.js","webpack:///./src/api/users.js","webpack:///./src/store/modules/userProfile.js","webpack:///./src/store/modules/users.js","webpack:///./src/store/getters.js","webpack:///./src/store/modules/emojiPacks.js","webpack:///./src/store/index.js","webpack:///./src/icons/index.js","webpack:///./src/errorLog.js","webpack:///./src/permission.js","webpack:///./src/filters/index.js","webpack:///./src/main.js","webpack:///./src/utils/auth.js","webpack:///./src/views/layout/components/TagsView.vue?da45","webpack:///./src/views/layout/components/AppMain.vue?2c3a","webpack:///./src/icons/svg/excel.svg","webpack:///./src/icons/svg/guide.svg","webpack:///./src/icons/svg/star.svg","webpack:///./src/views/layout/components/Navbar.vue?a40e","webpack:///./src/icons/svg/wechat.svg","webpack:///./src/store/modules/normalizers.js","webpack:///./src/icons/svg/size.svg","webpack:///./src/icons/svg/zip.svg","webpack:///./src/icons/svg/tab.svg","webpack:///./src/icons/svg/search.svg","webpack:///./src/icons/svg/tree.svg","webpack:///./src/icons/svg/documentation.svg","webpack:///./src/icons/svg/drag.svg","webpack:///./src/components/element-ui/SvgIcon/index.vue?928c","webpack:///./src/icons/svg/fullscreen.svg","webpack:///./src/lang/index.js","webpack:///./src/lang/en.js","webpack:///./src/lang/zh.js","webpack:///./src/lang/es.js","webpack:///./src/lang/oc.js","webpack:///./src/api/emojiPacks.js","webpack:///./src/icons/svg/icon.svg","webpack:///./src/icons/svg/404.svg","webpack:///./src/icons/svg/edit.svg","webpack:///./src/icons/svg/lock.svg","webpack:///./src/icons/svg/user.svg","webpack:///./src/styles/index.scss","webpack:///./src/utils/request.js","webpack:///./src/icons/svg/clipboard.svg","webpack:///./src/icons/svg/email.svg","webpack:///./src/icons/svg/chart.svg","webpack:///./src/components/element-ui/SvgIcon/index.vue?8767","webpack:///./src/components/element-ui/SvgIcon/index.vue?c01f","webpack:///src/components/element-ui/SvgIcon/index.vue","webpack:///./src/components/element-ui/SvgIcon/index.vue","webpack:///./src/styles/variables.scss"],"names":["__webpack_require__","r","__webpack_exports__","svg_baker_runtime_browser_symbol__WEBPACK_IMPORTED_MODULE_0__","svg_baker_runtime_browser_symbol__WEBPACK_IMPORTED_MODULE_0___default","n","svg_sprite_loader_runtime_browser_sprite_build__WEBPACK_IMPORTED_MODULE_1__","svg_sprite_loader_runtime_browser_sprite_build__WEBPACK_IMPORTED_MODULE_1___default","symbol","a","id","use","viewBox","content","add","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_7_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_7_2_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_69c6c5c4_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","d","baseName","instanceName","arguments","length","undefined","match","startsWith","isLocalhost","concat","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_591d6778_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_TagsView_vue_vue_type_style_index_0_id_e1cdb714_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Layout_vue_vue_type_style_index_0_id_767d264f_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","map","./404.svg","./bug.svg","./chart.svg","./clipboard.svg","./component.svg","./dashboard.svg","./documentation.svg","./drag.svg","./edit.svg","./email.svg","./example.svg","./excel.svg","./exit-fullscreen.svg","./eye-open.svg","./eye.svg","./form.svg","./fullscreen.svg","./guide 2.svg","./guide.svg","./icon.svg","./international.svg","./language.svg","./link.svg","./list.svg","./lock.svg","./message.svg","./money.svg","./nested.svg","./password.svg","./pdf.svg","./people.svg","./peoples.svg","./qq.svg","./search.svg","./settings.svg","./shopping.svg","./size.svg","./star.svg","./tab.svg","./table.svg","./theme.svg","./tree.svg","./user.svg","./wechat.svg","./zip.svg","webpackContext","req","webpackContextResolve","o","e","Error","code","keys","Object","resolve","module","exports","src_Appvue_type_script_lang_js_","name","component","componentNormalizer","_h","this","$createElement","_c","_self","attrs","options","__file","App","needReboot","_x","_x2","_needReboot","apply","_callee","authHost","token","regenerator_default","wrap","_context","prev","next","request","baseURL","url","method","headers","authHeaders","abrupt","sent","stop","restartApp","_x3","_x4","_restartApp","_callee2","_context2","Authorization","getToken","app","state","sidebar","opened","Cookies","get","withoutAnimation","device","language","size","invitesEnabled","mutations","TOGGLE_SIDEBAR","set","CLOSE_SIDEBAR","TOGGLE_DEVICE","SET_INVITES_ENABLED","SET_LANGUAGE","TOGGLE_REBOOT","SET_SIZE","actions","closeSideBar","_ref","_ref2","commit","NeedReboot","_NeedReboot","asyncToGenerator_default","mark","_ref3","getters","response","data","RestartApplication","_RestartApplication","_ref4","SetInvitesEnabled","_ref5","setLanguage","_ref6","setSize","_ref7","toggleDevice","_ref8","toggleSideBar","_ref9","errorLog","logs","ADD_ERROR_LOG","log","push","addErrorLog","fetchLog","_fetchLog","params","page","normalizedParams","_args","URLSearchParams","_","omitBy","objectSpread_default","isUndefined","toString","fetchAdmins","_x5","_fetchAdmins","fetchModerators","_x6","_x7","_fetchModerators","_callee3","_context3","moderationLog","fetchedLog","logItemsCount","admins","moderators","logLoading","adminsLoading","SET_LOG_LOADING","status","SET_ADMINS_LOADING","SET_MODERATION_LOG","SET_MODERATION_LOG_COUNT","count","SET_ADMINS","SET_MODERATORS","FetchModerationLog","_FetchModerationLog","opts","items","total","FetchAdmins","_FetchAdmins","adminsResponse","moderatorsResponse","generateInviteToken","_generateInviteToken","max_use","expires_at","inviteViaEmail","_x8","_inviteViaEmail","email","listInviteTokens","_x9","_x10","_listInviteTokens","revokeToken","_x11","_x12","_x13","_revokeToken","_callee4","tokenToRevoke","_context4","invites","inviteTokens","loading","newToken","SET_LOADING","SET_NEW_TOKEN","SET_TOKENS","tokens","FetchInviteTokens","_FetchInviteTokens","reverse","GenerateInviteToken","_GenerateInviteToken","dispatch","maxUse","expiresAt","t0","InviteUserViaEmail","_InviteUserViaEmail","Message","message","i18n","t","type","duration","RemoveNewToken","RevokeToken","_RevokeToken","fetchPeers","_fetchPeers","peers","fetchedPeers","SET_PEERS","FetchPeers","_FetchPeers","toConsumableArray_default","sort","element_ui_Hamburgervue_type_script_lang_js_","props","isActive","Boolean","default","toggleClick","Function","Hamburger_component","staticStyle","padding","on","click","staticClass","class","is-active","xmlns","width","height","components_Navbarvue_type_script_lang_js_","components","Hamburger","computed","vuex_esm","methods","$store","logout","then","location","reload","Navbar_component","_vm","toggle-click","_v","trigger","src","avatar","slot","display","_s","$t","Navbar","generateTitle","title","$te","parseTime","time","cFormat","date","format","typeof_default","test","parseInt","Date","formatObj","y","getFullYear","m","getMonth","getDate","h","getHours","i","getMinutes","s","getSeconds","getDay","replace","result","key","value","formatTime","option","diff","now","Math","ceil","isExternal","path","Sidebar_Itemvue_type_script_lang_js_","functional","icon","String","render","context","_context$props","vnodes","icon-class","Item_component","Item_render","Item_staticRenderFns","Item","Sidebar_Linkvue_type_script_lang_js_","to","required","linkProps","is","href","target","rel","Link_component","_b","_t","Sidebar_SidebarItemvue_type_script_lang_js_","AppLink","mixins","mounted","fixBugIniOS","_this","$subMenu","$refs","subMenu","handleMouseleave","item","isNest","basePath","onlyOneChild","hasOneShowingChild","children","parent","showingChildren","filter","hidden","noShowingChildren","resolvePath","routePath","isExternalLink","path_browserify_default","SidebarItem_component","alwaysShow","ref","index","meta","_e","_l","child","is-nest","base-path","submenu-title-noDropdown","SidebarItem","components_Sidebarvue_type_script_lang_js_","variables","variables_default","isCollapse","Sidebar_component","wrap-class","default-active","$route","collapse","background-color","menuBg","text-color","menuText","active-text-color","menuActiveText","mode","route","Sidebar","element_ui_ScrollPanevue_type_script_lang_js_","left","handleScroll","eventDelta","wheelDelta","deltaY","$scrollWrapper","scrollContainer","scrollLeft","moveToTarget","currentTag","$containerWidth","$el","offsetWidth","tagList","$parent","tag","firstTag","lastTag","scrollWidth","currentIndex","findIndex","prevTag","nextTag","afterNextTagOffsetLeft","offsetLeft","beforePrevTagOffsetLeft","ScrollPane_component","vertical","nativeOn","wheel","$event","preventDefault","components_TagsViewvue_type_script_lang_js_","ScrollPane","visible","top","selectedTag","affixTags","visitedViews","tagsView","routers","permission","watch","addTags","moveToCurrentTag","document","body","addEventListener","closeMenu","removeEventListener","initTags","filterAffixTags","routes","tags","forEach","affix","tempTags","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","Symbol","iterator","done","err","return","_this2","$nextTick","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","scrollPane","fullPath","refreshSelectedTag","view","_this3","$router","closeSelectedTag","_this4","toLastView","closeOthersTags","_this5","closeAllTags","_this6","some","latestView","slice","openMenu","getBoundingClientRect","maxLeft","clientX","clientY","TagsView_component","refInFor","query","mouseup","button","contextmenu","stopPropagation","directives","rawName","expression","style","TagsView","components_AppMainvue_type_script_lang_js_","cachedViews","AppMain_component","include","AppMain","layout_Layoutvue_type_script_lang_js_","store","beforeMount","window","resizeHandler","isMobile","isTablet","rect","classObj","hideSidebar","openSidebar","mobile","handleClickOutside","Layout_component","Layout","Vue","Router","disabledFeatures","process","settingsDisabled","includes","settings","Promise","all","bind","noCache","statusesDisabled","statuses","reportsDisabled","reports","invitesDisabled","emojiPacksDisabled","emojiPacks","moderationLogDisabled","constantRouterMap","redirect","router","scrollBehavior","asyncRouterMap","addRouters","SET_ROUTERS","GenerateRoutes","accessedRouters","roles","filterAsyncRouter","res","tmp","role","hasPermission","fetchRelays","_fetchRelays","addRelay","_addRelay","relay","relay_url","deleteRelay","_deleteRelay","relays","fetchedRelays","SET_RELAYS","ADD_RELAY","DELETE_RELAY","fetchedRelay","FetchRelays","_FetchRelays","AddRelay","_AddRelay","finish","DeleteRelay","_DeleteRelay","changeState","_changeState","fetchReports","_fetchReports","pageSize","reportID","noteID","fetchedReports","totalReportsCount","currentPage","stateFilter","SET_LAST_REPORT_ID","idOfLastReport","SET_PAGE","SET_REPORTS","SET_REPORTS_COUNT","SET_REPORTS_FILTER","ChangeReportState","_ChangeReportState","reportsData","updatedReports","report","ClearFetchedReports","FetchReports","_FetchReports","SetFilter","CreateReportNote","rootState","_createNote","createNote","optimisticNote","user","nickname","created_at","getTime","notes","DeleteReportNote","_ref10","_x14","_x15","_x16","_deleteNote","deleteNote","note","fetchDescription","_fetchDescription","fetchSettings","_fetchSettings","updateSettings","_updateSettings","configs","removeSettings","_removeSettings","activeTab","configDisabled","db","description","searchData","updatedSettings","CLEAR_UPDATED_SETTINGS","REMOVE_SETTING_FROM_UPDATED","group","subkeys","_state$updatedSetting","objectWithoutProperties_default","_toPropertyKey","SET_ACTIVE_TAB","tab","SET_DESCRIPTION","SET_SEARCH","searchObject","SET_SETTINGS","newSettings","reduce","acc","parsedValue","valueHasTuples","parseNonTuples","parseTuples","defineProperty_default","newDbSettings","TOGGLE_TABS","UPDATE_SETTINGS","input","updatedSetting","UPDATE_STATE","updatedState","FetchSettings","_FetchSettings","_ref12","formSearchObject","RemoveSetting","_RemoveSetting","_ref13","_configs$","need_reboot","SetActiveTab","_ref14","SubmitChanges","_SubmitChanges","_ref15","updatedData","checkPartialUpdate","wrapUpdatedSettings","UpdateSettings","_ref16","_ref17","UpdateState","_UpdateState","_ref18","_ref19","deletedKey","el","delete","changeStatusScope","_changeStatusScope","sensitive","visibility","deleteStatus","_deleteStatus","fetchStatus","_fetchStatus","fetchStatuses","_fetchStatuses","godmode","localOnly","fetchStatusesCount","_fetchStatusesCount","_callee5","instance","_context5","fetchStatusesByInstance","_fetchStatusesByInstance","_callee6","_context6","fetchedStatus","fetchedStatuses","statusAuthor","statusesByInstance","selectedInstance","showLocal","showPrivate","buttonLoading","allLoaded","statusVisibility","CHANGE_GODMODE_CHECKBOX_VALUE","CHANGE_LOCAL_CHECKBOX_VALUE","CHANGE_PAGE","CHANGE_SELECTED_INSTANCE","SET_STATUS","SET_STATUSES_BY_INSTANCE","PUSH_STATUSES","SET_ALL_LOADED","SET_BUTTON_LOADING","SET_STATUS_VISIBILITY","SET_STATUS_AUTHOR","ChangeStatusScope","_ChangeStatusScope","statusId","isSensitive","reportCurrentPage","userId","ClearState","DeleteStatus","_DeleteStatus","FetchStatus","_FetchStatus","account","FetchStatusAfterUserModeration","FetchStatusesCount","_FetchStatusesCount","status_visibility","FetchStatusesByInstance","_FetchStatusesByInstance","FetchStatusesPageByInstance","_FetchStatusesPageByInstance","_ref11","HandleGodmodeCheckboxChange","HandleLocalCheckboxChange","HandleFilterChange","HandlePageChange","SetStatus","ADD_VISITED_VIEW","v","assign","ADD_CACHED_VIEW","DEL_VISITED_VIEW","entries","_step$value","slicedToArray_default","splice","DEL_CACHED_VIEW","indexOf","DEL_OTHERS_VISITED_VIEWS","DEL_OTHERS_CACHED_VIEWS","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","DEL_ALL_VISITED_VIEWS","DEL_ALL_CACHED_VIEWS","UPDATE_VISITED_VIEW","_iteratorNormalCompletion4","_didIteratorError4","_iteratorError4","_step4","_iterator4","addView","addVisitedView","addCachedView","delView","delVisitedView","delCachedView","delOthersViews","delOthersVisitedViews","delOthersCachedViews","delAllViews","delAllVisitedViews","delAllCachedViews","updateVisitedView","loginByUsername","_loginByUsername","username","password","appsRequest","client_name","random","redirect_uris","origin","scopes","client_id","client_secret","grant_type","getUserInfo","getNodeInfo","_getNodeInfo","getAuthHost","introduction","setting","articlePlatform","nodeInfo","SET_CODE","SET_TOKEN","SET_INTRODUCTION","SET_SETTING","SET_NAME","SET_AVATAR","SET_ROLES","SET_ID","SET_AUTH_HOST","SET_NODE_INFO","LoginByUsername","reject","access_token","setToken","setAuthHost","catch","error","GetNodeInfo","_GetNodeInfo","metadata","GetUserInfo","pleroma","is_admin","LogOut","removeToken","removeAuthHost","FedLogOut","LoginByPleromaFE","_LoginByPleromaFE","host","activateUsers","_activateUsers","nicknames","addRight","_addRight","right","createNewAccount","_createNewAccount","users","deactivateUsers","_deactivateUsers","deleteRight","_x17","_x18","_x19","_deleteRight","deleteUsers","_x20","_x21","_x22","_deleteUsers","fetchUser","_x23","_x24","_x25","_fetchUser","_callee7","_context7","fetchUserCredentials","_x26","_x27","_x28","_fetchUserCredentials","_callee8","_context8","updateUserCredentials","_x29","_x30","_x31","_x32","_updateUserCredentials","_callee9","credentials","_context9","fetchUsers","_x33","_x34","_x35","_fetchUsers","_callee10","filters","_args10","_context10","getPasswordResetToken","_x36","_x37","_x38","_getPasswordResetToken","_callee11","_context11","forcePasswordReset","_x39","_x40","_x41","_forcePasswordReset","_callee12","_context12","searchUsers","_x42","_x43","_x44","_x45","_searchUsers","_callee13","_args13","_context13","tagUser","_x46","_x47","_x48","_x49","_tagUser","_callee14","_context14","untagUser","_x50","_x51","_x52","_x53","_untagUser","_callee15","_context15","_callee16","_context16","confirmUserEmail","_x58","_x59","_x60","_confirmUserEmail","_callee17","_context17","resendConfirmationEmail","_x61","_x62","_x63","_resendConfirmationEmail","_callee18","_context18","userProfile","statusesLoading","userCredentials","userProfileLoading","SET_STATUSES","SET_STATUSES_LOADING","SET_USER","SET_USER_PROFILE_LOADING","SET_USER_CREDENTIALS","FetchUserProfile","_FetchUserProfile","userResponse","FetchUserStatuses","_x54","_x55","_x56","_x57","_fetchUserStatuses","fetchUserStatuses","FetchUserCredentials","_FetchUserCredentials","SetStatuses","UpdateUserCredentials","_UpdateUserCredentials","fetchedUsers","searchQuery","totalUsersCount","local","external","active","deactivated","passwordResetToken","link","SET_USERS","SWAP_USERS","usersWithoutSwapped","u","updatedUsers","b","localeCompare","SET_COUNT","SET_PAGE_SIZE","SET_PASSWORD_RESET_TOKEN","SET_SEARCH_QUERY","SET_USERS_FILTERS","ActivateUsers","_ActivateUsers","_userId","callApiFn","ApplyChanges","_ApplyChanges","AddRight","_AddRight","_statusId","AddTag","_AddTag","ClearUsersState","ClearFilters","_ClearFilters","CreateNewAccount","_CreateNewAccount","DeactivateUsers","_DeactivateUsers","ConfirmUsersEmail","_ConfirmUsersEmail","_ref20","_ref21","confirmation_pending","_ref22","ResendConfirmationEmail","_ResendConfirmationEmail","_ref23","usersNicknames","DeleteRight","_DeleteRight","_ref24","_ref25","_ref26","DeleteUsers","_DeleteUsers","_ref27","_ref28","deletedUsersIds","deletedUser","FetchUsers","_FetchUsers","_ref29","_ref30","join","loadUsers","GetPasswordResetToken","_GetPasswordResetToken","_callee19","_ref31","_ref32","_context19","RemovePasswordToken","_ref33","RemoveTag","_RemoveTag","_callee21","_ref34","_ref35","_context21","userTag","_ref36","_callee20","_context20","RequirePasswordReset","_RequirePasswordReset","_callee22","_ref37","_context22","SearchUsers","_SearchUsers","_callee23","_ref38","_ref39","_context23","SuccessMessage","success","ToggleUsersFilter","_ToggleUsersFilter","_callee24","_ref40","defaultFilters","currentFilters","_context24","_ref41","page_size","permission_routers","errorLogs","packs","activeCollapseItems","localPacks","remoteInstance","remotePacks","SET_ACTIVE_COLLAPSE_ITEMS","SET_LOCAL_PACKS","SET_REMOTE_INSTANCE","SET_REMOTE_PACKS","UPDATE_LOCAL_PACK_VAL","UPDATE_LOCAL_PACK_PACK","pack","UPDATE_LOCAL_PACK_FILES","files","AddNewEmojiFile","_AddNewEmojiFile","packName","file","shortcode","filename","addNewEmojiFile","DeleteEmojiFile","_DeleteEmojiFile","deleteEmojiFile","CreatePack","_CreatePack","createPack","DeletePack","_DeletePack","deletePack","DownloadFrom","_DownloadFrom","instanceAddress","as","downloadFrom","ImportFromFS","_ImportFromFS","importFromFS","ReloadEmoji","_ReloadEmoji","reloadEmoji","SavePackMetadata","_SavePackMetadata","savePackMetadata","SetActiveCollapseItems","activeItems","SetLocalEmojiPacks","_SetLocalEmojiPacks","listPacks","SetRemoteEmojiPacks","_SetRemoteEmojiPacks","listRemotePacks","SetRemoteInstance","UpdateEmojiFile","_UpdateEmojiFile","newShortcode","newFilename","force","updateEmojiFile","UpdateLocalPackVal","_UpdateLocalPackVal","args","Vuex","Store","modules","SvgIcon","requireContext","requireAll","require","config","errorHandler","vm","info","nextTick","console","NProgress","configure","showSpinner","whiteList","pluralize","label","timeAgo","between","Number","numberFormatter","num","digits","si","toFixed","toThousandFilter","beforeEach","from","start","addRoutes","dangerouslyUseHTMLString","permissionRoles","noGoBack","afterEach","Element","productionTip","js_cookie__WEBPACK_IMPORTED_MODULE_0__","js_cookie__WEBPACK_IMPORTED_MODULE_0___default","TokenKey","AuthHostKey","remove","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_TagsView_vue_vue_type_style_index_1_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_7_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_7_2_node_modules_vue_loader_lib_index_js_vue_loader_options_AppMain_vue_vue_type_style_index_0_id_f852c4f2_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Navbar_vue_vue_type_style_index_0_id_28de7ff2_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","getBooleanValue","partialUpdate","updated","settingName","find","element","getCurrentValue","_path","_babel_runtime_helpers_toArray__WEBPACK_IMPORTED_MODULE_5___default","firstSettingName","restKeys","firstSegment","secondSegment","_keys","rest","_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_1___default","tuple","tuples","accum","Array","isArray","mascot","_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default","_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default","_babel_runtime_helpers_objectSpread__WEBPACK_IMPORTED_MODULE_3___default","regex","parseProxyUrl","parseObject","object","_value$tuple","_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_4___default","socks5","port","_value$split","split","_value$split2","processNested","valueForState","valueForUpdatedSettings","parentKey","parents","_parents","_parents$","otherParents","updatedValueForState","valueExists","updatedValueForUpdatedSettings","_path2","_keys2","valueIsArrayOfNonObjects","every","currentState","_value","updatedArray","getValueWithoutKey","wrapValues","_settings$setting","mapValue","mapCurrentState","values","ip","searchArray","compact","toLowerCase","resultObject","groupKey","groupLabel","search","updatedAcc","parseNestedSettings","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_7_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_7_2_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_17178ffc_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","VueI18n","messages","en","dashboard","documentation","guide","pagePermission","directivePermission","icons","componentIndex","markdown","jsonEditor","dndList","splitPane","avatarUpload","dropzone","sticky","countTo","componentMixin","backToTop","dragDialog","dragSelect","dragKanban","charts","keyboardChart","lineChart","mixChart","example","nested","menu1","menu1-1","menu1-2","menu1-2-1","menu1-2-2","menu1-3","menu2","Table","dynamicTable","dragTable","inlineEditTable","complexTable","treeTable","customTreeTable","form","createArticle","editArticle","articleList","errorPages","page401","page404","excel","exportExcel","selectExcel","uploadExcel","zip","pdf","exportZip","theme","clipboardDemo","externalLink","emoji-packs","navbar","logOut","github","login","logIn","logInViaPleromaFE","omitHostname","errorMessage","any","thirdparty","pleromaFELoginFailed","pleromaFELoginSucceed","switchRoles","tips","dropzoneTips","stickyTips","backToTopTips1","backToTopTips2","imageUploadTips","table","dynamicTips1","dynamicTips2","dragTips1","dragTips2","importance","remark","export","reviewer","author","readings","edit","publish","draft","cancel","confirm","selectedExport","placeholder","change","refresh","close","closeOthers","closeAll","localUsersOnly","unconfirmed","activate","deactivate","admin","moderator","moderation","revokeAdmin","grantAdmin","revokeModerator","grantModerator","activateAccount","activateAccounts","deactivateAccount","deactivateAccounts","deleteAccount","deleteAccounts","forceNsfw","stripMedia","forceUnlisted","sandbox","disableRemoteSubscription","disableRemoteSubscriptionForMultiple","disableAnySubscription","disableAnySubscriptionForMultiple","requirePasswordReset","selectUsers","moderateUser","moderateUsers","createAccount","grantRightConfirmation","revokeRightConfirmation","activateMultipleUsersConfirmation","deactivateMultipleUsersConfirmation","deleteMultipleUsersConfirmation","addTagForMultipleUsersConfirmation","removeTagFromMultipleUsersConfirmation","requirePasswordResetConfirmation","confirmAccountsConfirmation","resendEmailConfirmation","mailerMustBeEnabled","ok","completed","canceled","create","submitFormError","emptyEmailError","invalidEmailError","emptyPasswordError","emptyNicknameError","invalidNicknameError","passwordResetTokenCreated","accountCreated","unconfirmedEmail","confirmAccount","confirmAccounts","resendConfirmation","invalidAccount","invalidNickname","passwordResetTokenGenerated","linkToResetPassword","instanceFilter","loadMore","noInstances","onlyLocalStatuses","showPrivateStatuses","direct","private","public","unlisted","openStatusInInstance","accountType","recentStatuses","noStatuses","openAccountInInstance","securitySettings","passwordChangeWarning1","passwordChangeWarning2","passwordLengthNotice","inputNewEmail","inputNewPassword","passwordUpdated","emailUpdated","submit","usersFilter","inputPlaceholder","byAccountType","byStatus","reply","showNotes","newNote","confirmMsg","deleteCompleted","deleteCanceled","noNotes","changeAllReports","changeScope","reopen","resolveAll","reopenAll","addSensitive","removeSensitive","reportOn","reportsOn","actor","actors","reportedStatus","statusDeleted","leaveNote","postNote","notFound","reportsFilter","open","closed","resolved","upload","mailer","logger","activityPub","auth","autoLinker","captcha","frontend","http","mrf","mediaProxy","gopher","jobQueue","webPush","esshd","rateLimiters","other","follow","followRelay","instanceUrl","removeFromDB","successfullyDownloaded","successfullyImported","nowNewPacksToImport","successfullyUpdated","metadatLowerCase","successfullyRemoved","seeDocs","assets","emoji","markup","corsPlug","instanceReboot","restartSuccess","removeSettingConfirmation","createInviteToken","pickDate","tokenCreated","inviteLink","uses","used","revoke","inviteUserViaEmail","sendRegistration","emailSent","inviteViaEmailAlert","reloaded","refreshed","importEmojiTooltip","importPacks","refreshLocalPacks","createLocalPack","remoteInstanceAddress","refreshRemote","sharePack","homepage","license","fallbackSrc","fallbackSrcSha","saveMetadata","downloadPack","downloadPackArchive","addNewEmoji","manageEmoji","thisWillDownload","downloadToCurrentInstance","canBeChanged","willBeUsable","downloadAsOptional","downloadSharedPack","downloadSharedPackMobile","optional","uploadFile","clickToUpload","customFilename","customFilenameDesc","localPack","leaveEmptyShortcode","leaveEmptyFilename","update","selectLocalPack","specifyShortcode","specifyFilename","copy","copyToLocalPack","elementEnLocale","zh","thirdpartyTips","elementZhLocale","es","elementEsLocale","oc","locale","_addNewEmojiFile","_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default","FormData","trim","addressOfEmojiInPack","_createPack","_deleteEmojiFile","_deletePack","_downloadFrom","timeout","_importFromFS","_listPacks","_listRemotePacks","_reloadEmoji","_savePackMetadata","_updateEmojiFile","new_shortcode","new_filename","subMenuActiveText","menuHover","subMenuBg","subMenuHover","sideBarWidth","axios__WEBPACK_IMPORTED_MODULE_0__","axios__WEBPACK_IMPORTED_MODULE_0___default","element_ui__WEBPACK_IMPORTED_MODULE_1__","service","axios","interceptors","edata","element_ui_SvgIconvue_type_script_lang_js_","iconClass","className","iconName","svgClass","_g","aria-hidden","$listeners","xlink:href"],"mappings":"iGAAAA,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,WACAC,IAAA,iBACAC,QAAA,gBACAC,QAAA,mrDAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,+CCTfF,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,cACAC,IAAA,oBACAC,QAAA,cACAC,QAAA,itCAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,+CCTfF,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,gBACAC,IAAA,sBACAC,QAAA,gBACAC,QAAA,uxCAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,+CCTf,IAAAa,EAAAf,EAAA,QAAAA,EAAAK,EAAAU,GAA0a,uCCA1af,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,uBACAC,IAAA,6BACAC,QAAA,cACAC,QAAA,8yDAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,+CCTfF,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,cACAC,IAAA,oBACAC,QAAA,cACAC,QAAA,+0BAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,+CCTfF,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,aACAC,IAAA,mBACAC,QAAA,cACAC,QAAA,0sBAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,+CCTfF,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,YACAC,IAAA,kBACAC,QAAA,cACAC,QAAA,s9EAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,+CCTfF,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,iBACAC,IAAA,uBACAC,QAAA,cACAC,QAAA,4zEAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,+CCTfF,EAAAgB,EAAAd,EAAA,sBAAAe,IAAA,IAGaA,EAAW,WAAgC,IAA/BC,EAA+BC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAhB,YACtC,OAAID,EAAaI,MAAM,eACdJ,EALS,SAACA,GAAD,OAClBA,EAAaK,WAAW,eAAiBL,EAAaK,WAAW,cAMxDC,CAAYN,GAAZ,UAAAO,OAAsCP,GAAtC,WAAAO,OAAkEP,8DCP7ElB,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,gBACAC,IAAA,sBACAC,QAAA,cACAC,QAAA,wtEAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,6CCTfF,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,WACAC,IAAA,iBACAC,QAAA,cACAC,QAAA,8jDAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,+CCTfF,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,qBACAC,IAAA,2BACAC,QAAA,cACAC,QAAA,8nCAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,6CCTfF,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,UACAC,IAAA,gBACAC,QAAA,cACAC,QAAA,inHAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,6CCTfF,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,YACAC,IAAA,kBACAC,QAAA,cACAC,QAAA,uTAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,6CCTf,IAAAwB,EAAA1B,EAAA,QAAAA,EAAAK,EAAAqB,GAAigB,qCCAjgB,IAAAC,EAAA3B,EAAA,QAAAA,EAAAK,EAAAsB,GAAogB,qCCApgB3B,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,eACAC,IAAA,qBACAC,QAAA,gBACAC,QAAA,oZAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,6CCTfF,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,gBACAC,IAAA,sBACAC,QAAA,cACAC,QAAA,wwCAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,oECTfF,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,gBACAC,IAAA,sBACAC,QAAA,cACAC,QAAA,2oBAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,6CCTfF,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,eACAC,IAAA,qBACAC,QAAA,cACAC,QAAA,uvBAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,6CCTfF,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,aACAC,IAAA,mBACAC,QAAA,cACAC,QAAA,wWAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,6CCTfF,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,eACAC,IAAA,qBACAC,QAAA,cACAC,QAAA,4gBAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,oECTfF,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,YACAC,IAAA,kBACAC,QAAA,cACAC,QAAA,ihCAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,6CCTfF,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,gBACAC,IAAA,sBACAC,QAAA,kBACAC,QAAA,m/EAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,+CCTfF,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,eACAC,IAAA,qBACAC,QAAA,cACAC,QAAA,wrBAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,+CCTfF,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,aACAC,IAAA,mBACAC,QAAA,cACAC,QAAA,+mBAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,6CCTf,IAAA0B,EAAA5B,EAAA,QAAAA,EAAAK,EAAAuB,GAAgf,qCCAhf5B,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,WACAC,IAAA,iBACAC,QAAA,aACAC,QAAA,u8BAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,yDCTf,IAAA2B,GACAC,YAAA,OACAC,YAAA,OACAC,cAAA,OACAC,kBAAA,OACAC,kBAAA,OACAC,kBAAA,OACAC,sBAAA,OACAC,aAAA,OACAC,aAAA,OACAC,cAAA,OACAC,gBAAA,OACAC,cAAA,OACAC,wBAAA,OACAC,iBAAA,OACAC,YAAA,OACAC,aAAA,OACAC,mBAAA,OACAC,gBAAA,OACAC,cAAA,OACAC,aAAA,OACAC,sBAAA,OACAC,iBAAA,OACAC,aAAA,OACAC,aAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,cAAA,OACAC,eAAA,OACAC,iBAAA,OACAC,YAAA,OACAC,eAAA,OACAC,gBAAA,OACAC,WAAA,OACAC,eAAA,OACAC,iBAAA,OACAC,iBAAA,OACAC,aAAA,OACAC,aAAA,OACAC,YAAA,OACAC,cAAA,OACAC,cAAA,OACAC,aAAA,OACAC,aAAA,OACAC,eAAA,OACAC,YAAA,QAIA,SAAAC,EAAAC,GACA,IAAAlE,EAAAmE,EAAAD,GACA,OAAA5E,EAAAU,GAEA,SAAAmE,EAAAD,GACA,IAAA5E,EAAA8E,EAAAjD,EAAA+C,GAAA,CACA,IAAAG,EAAA,IAAAC,MAAA,uBAAAJ,EAAA,KAEA,MADAG,EAAAE,KAAA,mBACAF,EAEA,OAAAlD,EAAA+C,GAEAD,EAAAO,KAAA,WACA,OAAAC,OAAAD,KAAArD,IAEA8C,EAAAS,QAAAP,EACAQ,EAAAC,QAAAX,EACAA,EAAAjE,GAAA,mEClEAV,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,iBACAC,IAAA,uBACAC,QAAA,cACAC,QAAA,4VAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,mWCT6KqF,wBCQ5LC,KAAA,oBCDAC,EAAgBN,OAAAO,EAAA,EAAAP,CACdI,ECRQ,WAAgB,IAAaI,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAiBE,OAAOtF,GAAA,SAAYoF,EAAA,wBDW7H,EACA,KACA,KACA,MAIAL,EAAAQ,QAAAC,OAAA,UACe,IAAAC,EAAAV,oGEfR,SAAeW,EAAtBC,EAAAC,GAAA,OAAAC,EAAAC,MAAAZ,KAAAzE,8CAAO,SAAAsF,EAA0BC,EAAUC,GAApC,OAAAC,EAAAnG,EAAAoG,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAG,iCACHC,OAAQ,MACRC,QAASC,EAAYX,KALlB,cAAAG,EAAAS,OAAA,SAAAT,EAAAU,MAAA,wBAAAV,EAAAW,SAAAhB,6BASA,SAAeiB,EAAtBC,EAAAC,GAAA,OAAAC,EAAArB,MAAAZ,KAAAzE,8CAAO,SAAA2G,EAA0BpB,EAAUC,GAApC,OAAAC,EAAAnG,EAAAoG,KAAA,SAAAkB,GAAA,cAAAA,EAAAhB,KAAAgB,EAAAf,MAAA,cAAAe,EAAAf,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAG,6BACHC,OAAQ,MACRC,QAASC,EAAYX,KALlB,cAAAoB,EAAAR,OAAA,SAAAQ,EAAAP,MAAA,wBAAAO,EAAAN,SAAAK,6BASP,IAAMR,EAAc,SAACX,GAAD,OAAWA,GAAUqB,cAAA,UAAAvG,OAA2BwG,oBCwDrDC,GA1EbC,OACEC,SACEC,QAAQC,IAAQC,IAAI,qBAAsBD,IAAQC,IAAI,iBACtDC,kBAAkB,GAEpBC,OAAQ,UACRC,SAAUJ,IAAQC,IAAI,aAAe,KACrCnC,YAAY,EACZuC,KAAML,IAAQC,IAAI,SAAW,SAC7BK,gBAAgB,GAElBC,WACEC,eAAgB,SAAAX,GACdA,EAAMC,QAAQC,QAAUF,EAAMC,QAAQC,OACtCF,EAAMC,QAAQI,kBAAmB,EAC7BL,EAAMC,QAAQC,OAChBC,IAAQS,IAAI,gBAAiB,GAE7BT,IAAQS,IAAI,gBAAiB,IAGjCC,cAAe,SAACb,EAAOK,GACrBF,IAAQS,IAAI,gBAAiB,GAC7BZ,EAAMC,QAAQC,QAAS,EACvBF,EAAMC,QAAQI,iBAAmBA,GAEnCS,cAAe,SAACd,EAAOM,GACrBN,EAAMM,OAASA,GAEjBS,oBAAqB,SAACf,EAAOS,GAC3BT,EAAMS,eAAiBA,GAEzBO,aAAc,SAAChB,EAAOO,GACpBP,EAAMO,SAAWA,EACjBJ,IAAQS,IAAI,WAAYL,IAE1BU,cAAe,SAACjB,EAAO/B,GACrB+B,EAAM/B,WAAaA,GAErBiD,SAAU,SAAClB,EAAOQ,GAChBR,EAAMQ,KAAOA,EACbL,IAAQS,IAAI,OAAQJ,KAGxBW,SACEC,aADO,SAAAC,EAAAC,IAELC,EAD6CF,EAAhCE,QACN,gBADsCD,EAApBjB,mBAGrBmB,WAJC,eAAAC,EAAAC,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAArD,EAAAsD,GAAA,IAAAL,EAAAM,EAAAC,EAAA,OAAArD,EAAAnG,EAAAoG,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAIY0C,EAJZK,EAIYL,OAAQM,EAJpBD,EAIoBC,QAJpBlD,EAAAE,KAAA,EAKkBZ,EAAW4D,EAAQtD,SAAUsD,EAAQrD,OALvD,OAKCsD,EALDnD,EAAAU,KAMLkC,EAAO,gBAAiBO,EAASC,KAAT,aANnB,wBAAApD,EAAAW,SAAAhB,MAAA,gBAAAJ,GAAA,OAAAuD,EAAApD,MAAAZ,KAAAzE,YAAA,GAQDgJ,mBARC,eAAAC,EAAAP,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAAhC,EAAAuC,GAAA,IAAAX,EAAAM,EAAA,OAAApD,EAAAnG,EAAAoG,KAAA,SAAAkB,GAAA,cAAAA,EAAAhB,KAAAgB,EAAAf,MAAA,cAQoB0C,EARpBW,EAQoBX,OAAQM,EAR5BK,EAQ4BL,QAR5BjC,EAAAf,KAAA,EASCU,EAAWsC,EAAQtD,SAAUsD,EAAQrD,OATtC,OAUL+C,EAAO,iBAAiB,GAVnB,wBAAA3B,EAAAN,SAAAK,MAAA,gBAAAxB,GAAA,OAAA8D,EAAA5D,MAAAZ,KAAAzE,YAAA,GAYPmJ,kBAZO,SAAAC,EAYuB3B,IAC5Bc,EAD4Ca,EAA1Bb,QACX,sBAAuBd,IAEhC4B,YAfO,SAAAC,EAeiB/B,IACtBgB,EADgCe,EAApBf,QACL,eAAgBhB,IAEzBgC,QAlBO,SAAAC,EAkBahC,IAClBe,EADwBiB,EAAhBjB,QACD,WAAYf,IAErBiC,aArBO,SAAAC,EAqBkBpC,IACvBiB,EAD+BmB,EAAlBnB,QACN,gBAAiBjB,IAE1BqC,cAxBO,SAAAC,IAyBLrB,EADwBqB,EAAVrB,QACP,qBCzDEsB,GAfb7C,OACE8C,SAEFpC,WACEqC,cAAe,SAAC/C,EAAOgD,GACrBhD,EAAM8C,KAAKG,KAAKD,KAGpB7B,SACE+B,YADO,SAAA7B,EACiB2B,IACtBzB,EAD2BF,EAAfE,QACL,gBAAiByB,gDCLvB,SAAeG,EAAtBjF,EAAAC,EAAAqB,GAAA,OAAA4D,EAAA/E,MAAAZ,KAAAzE,8CAAO,SAAAsF,EAAwBC,EAAUC,EAAO6E,GAAzC,IAAAC,EAAAC,EAAAC,EAAAxK,UAAA,OAAAyF,EAAAnG,EAAAoG,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAiDyE,EAAjDE,EAAAvK,OAAA,QAAAC,IAAAsK,EAAA,GAAAA,EAAA,GAAwD,EACvDD,EAAmB,IAAIE,gBAC3BC,IAAEC,OAAFC,OAAcP,GAAQC,SAAQI,IAAEG,cAChCC,WAHGnF,EAAAE,KAAA,EAKQC,aACXC,QAASjG,YAASyF,GAClBS,IAAG,qCAAA1F,OAAuCiK,GAC1CtE,OAAQ,MACRC,QAASC,EAAYX,KATlB,cAAAG,EAAAS,OAAA,SAAAT,EAAAU,MAAA,wBAAAV,EAAAW,SAAAhB,6BAaA,SAAeyF,EAAtBtE,EAAAuE,GAAA,OAAAC,EAAA5F,MAAAZ,KAAAzE,8CAAO,SAAA2G,EAA2BpB,EAAUC,GAArC,OAAAC,EAAAnG,EAAAoG,KAAA,SAAAkB,GAAA,cAAAA,EAAAhB,KAAAgB,EAAAf,MAAA,cAAAe,EAAAf,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAG,4CACHC,OAAQ,MACRC,QAASC,EAAYX,KALlB,cAAAoB,EAAAR,OAAA,SAAAQ,EAAAP,MAAA,wBAAAO,EAAAN,SAAAK,6BASA,SAAeuE,EAAtBC,EAAAC,GAAA,OAAAC,EAAAhG,MAAAZ,KAAAzE,8CAAO,SAAAsL,EAA+B/F,EAAUC,GAAzC,OAAAC,EAAAnG,EAAAoG,KAAA,SAAA6F,GAAA,cAAAA,EAAA3F,KAAA2F,EAAA1F,MAAA,cAAA0F,EAAA1F,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAG,gDACHC,OAAQ,MACRC,QAASC,EAAYX,KALlB,cAAA+F,EAAAnF,OAAA,SAAAmF,EAAAlF,MAAA,wBAAAkF,EAAAjF,SAAAgF,6BASP,IAAMnF,EAAc,SAACX,GAAD,OAAWA,GAAUqB,cAAA,UAAAvG,OAA2BwG,oBCarD0E,GA/CbxE,OACEyE,cACAC,cAAe,EACfC,UACAC,cACAC,YAAY,EACZC,eAAe,GAEjBpE,WACEqE,gBAAiB,SAAC/E,EAAOgF,GACvBhF,EAAM6E,WAAaG,GAErBC,mBAAoB,SAACjF,EAAOgF,GAC1BhF,EAAM8E,cAAgBE,GAExBE,mBAAoB,SAAClF,EAAOgD,GAC1BhD,EAAMyE,WAAazB,GAErBmC,yBAA0B,SAACnF,EAAOoF,GAChCpF,EAAM0E,cAAgBU,GAExBC,WAAY,SAACrF,EAAO2E,GAClB3E,EAAM2E,OAASA,GAEjBW,eAAgB,SAACtF,EAAO4E,GACtB5E,EAAM4E,WAAaA,IAGvBzD,SACQoE,mBADC,eAAAC,EAAA9D,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAArD,EAAA+C,GAAA,IAAAE,EAAAM,EAAA4D,EAAA3D,EAAA0B,EAAAxK,UAAA,OAAAyF,EAAAnG,EAAAoG,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cACoB0C,EADpBF,EACoBE,OAAQM,EAD5BR,EAC4BQ,QAAW4D,EADvCjC,EAAAvK,OAAA,QAAAC,IAAAsK,EAAA,GAAAA,EAAA,MAAA7E,EAAAE,KAAA,EAEkBsE,EAAStB,EAAQtD,SAAUsD,EAAQrD,MAAOiH,GAF5D,OAEC3D,EAFDnD,EAAAU,KAILkC,EAAO,qBAAsBO,EAASC,KAAK2D,OAC3CnE,EAAO,2BAA4BO,EAASC,KAAK4D,OACjDpE,EAAO,mBAAmB,GANrB,wBAAA5C,EAAAW,SAAAhB,MAAA,gBAAAJ,GAAA,OAAAsH,EAAAnH,MAAAZ,KAAAzE,YAAA,GAQD4M,YARC,eAAAC,EAAAnE,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAAhC,EAAA2B,GAAA,IAAAC,EAAAM,EAAAiE,EAAAC,EAAA,OAAAtH,EAAAnG,EAAAoG,KAAA,SAAAkB,GAAA,cAAAA,EAAAhB,KAAAgB,EAAAf,MAAA,cAQa0C,EARbD,EAQaC,OAAQM,EARrBP,EAQqBO,QARrBjC,EAAAf,KAAA,EASwBkF,EAAYlC,EAAQtD,SAAUsD,EAAQrD,OAT9D,cASCsH,EATDlG,EAAAP,KAAAO,EAAAf,KAAA,EAU4BqF,EAAgBrC,EAAQtD,SAAUsD,EAAQrD,OAVtE,OAUCuH,EAVDnG,EAAAP,KAYLkC,EAAO,aAAcuE,EAAe/D,MACpCR,EAAO,iBAAkBwE,EAAmBhE,MAC5CR,EAAO,sBAAsB,GAdxB,yBAAA3B,EAAAN,SAAAK,MAAA,gBAAAxB,GAAA,OAAA0H,EAAAxH,MAAAZ,KAAAzE,YAAA,KC3BJ,SAAegN,EAAtB9H,EAAAC,EAAAqB,EAAAC,GAAA,OAAAwG,EAAA5H,MAAAZ,KAAAzE,8CAAO,SAAAsF,EAAmC4H,EAASC,EAAY5H,EAAUC,GAAlE,OAAAC,EAAAnG,EAAAoG,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAG,wCACHC,OAAQ,OACRC,QAASC,EAAYX,GACrBuD,KAAMoE,GAAcA,EAAWlN,OAAS,GAAMiN,UAASC,eAAiBD,aANrE,cAAAvH,EAAAS,OAAA,SAAAT,EAAAU,MAAA,wBAAAV,EAAAW,SAAAhB,6BAUA,SAAe8H,EAAtBpC,EAAAG,EAAAC,EAAAiC,GAAA,OAAAC,EAAAjI,MAAAZ,KAAAzE,8CAAO,SAAA2G,EAA8B4G,EAAOlJ,EAAMkB,EAAUC,GAArD,IAAAuD,EAAA,OAAAtD,EAAAnG,EAAAoG,KAAA,SAAAkB,GAAA,cAAAA,EAAAhB,KAAAgB,EAAAf,MAAA,cACCkD,EAAO1E,EAAKpE,OAAS,GAAMsN,QAAOlJ,SAAWkJ,SAD9C3G,EAAAf,KAAA,EAEQC,aACXC,QAASjG,YAASyF,GAClBS,IAAK,wCACLC,OAAQ,OACRC,QAASC,EAAYX,GACrBuD,SAPG,cAAAnC,EAAAR,OAAA,SAAAQ,EAAAP,MAAA,wBAAAO,EAAAN,SAAAK,6BAWA,SAAe6G,EAAtBC,EAAAC,GAAA,OAAAC,EAAAtI,MAAAZ,KAAAzE,8CAAO,SAAAsL,EAAgC/F,EAAUC,GAA1C,OAAAC,EAAAnG,EAAAoG,KAAA,SAAA6F,GAAA,cAAAA,EAAA3F,KAAA2F,EAAA1F,MAAA,cAAA0F,EAAA1F,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAG,mCACHC,OAAQ,MACRC,QAASC,EAAYX,KALlB,cAAA+F,EAAAnF,OAAA,SAAAmF,EAAAlF,MAAA,wBAAAkF,EAAAjF,SAAAgF,6BASA,SAAesC,EAAtBC,EAAAC,EAAAC,GAAA,OAAAC,EAAA3I,MAAAZ,KAAAzE,8CAAO,SAAAiO,EAA2BC,EAAe3I,EAAUC,GAApD,OAAAC,EAAAnG,EAAAoG,KAAA,SAAAyI,GAAA,cAAAA,EAAAvI,KAAAuI,EAAAtI,MAAA,cAAAsI,EAAAtI,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAG,yCACHC,OAAQ,OACRC,QAASC,EAAYX,GACrBuD,MAAQvD,MAAO0I,KANZ,cAAAC,EAAA/H,OAAA,SAAA+H,EAAA9H,MAAA,wBAAA8H,EAAA7H,SAAA2H,6BAUP,IAAM9H,EAAc,SAACX,GAAD,OAAWA,GAAUqB,cAAA,UAAAvG,OAA2BwG,gCCmBrDsH,GA1DbpH,OACEqH,gBACAC,SAAS,EACTC,aAEF7G,WACE8G,YAAa,SAACxH,EAAOgF,GACnBhF,EAAMsH,QAAUtC,GAElByC,cAAe,SAACzH,EAAOxB,GACrBwB,EAAMuH,SAAW/I,GAEnBkJ,WAAY,SAAC1H,EAAO2H,GAClB3H,EAAMqH,aAAeM,IAGzBxG,SACQyG,kBADC,eAAAC,EAAAnG,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAArD,EAAA+C,GAAA,IAAAE,EAAAM,EAAAC,EAAA,OAAArD,EAAAnG,EAAAoG,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cACmB0C,EADnBF,EACmBE,OAAQM,EAD3BR,EAC2BQ,QAChCN,EAAO,eAAe,GAFjB5C,EAAAE,KAAA,EAGkB2H,EAAiB3E,EAAQtD,SAAUsD,EAAQrD,OAH7D,OAGCsD,EAHDnD,EAAAU,KAILkC,EAAO,aAAcO,EAASC,KAAKqF,QAAQU,WAC3CvG,EAAO,eAAe,GALjB,wBAAA5C,EAAAW,SAAAhB,MAAA,gBAAAJ,GAAA,OAAA2J,EAAAxJ,MAAAZ,KAAAzE,YAAA,GAOD+O,oBAPC,eAAAC,EAAAtG,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAAhC,EAAA2B,EAAAM,GAAA,IAAAL,EAAA0G,EAAApG,EAAAqG,EAAAC,EAAAjG,EAAAH,EAAA,OAAAtD,EAAAnG,EAAAoG,KAAA,SAAAkB,GAAA,cAAAA,EAAAhB,KAAAgB,EAAAf,MAAA,cAOqB0C,EAPrBD,EAOqBC,OAAQ0G,EAP7B3G,EAO6B2G,SAAUpG,EAPvCP,EAOuCO,QAAaqG,EAPpDtG,EAOoDsG,OAAQC,EAP5DvG,EAO4DuG,UAP5DvI,EAAAhB,KAAA,EAAAgB,EAAAf,KAAA,EASoBmH,EAAoBkC,EAAQC,EAAWtG,EAAQtD,SAAUsD,EAAQrD,OATrF,OAAA0D,EAAAtC,EAAAP,KASK0C,EATLG,EASKH,KACRR,EAAO,iBAAmB/C,MAAOuD,EAAKvD,MAAO0J,OAAQnG,EAAKmE,QAASiC,UAAWpG,EAAKoE,aAVhFvG,EAAAf,KAAA,wBAAAe,EAAAhB,KAAA,GAAAgB,EAAAwI,GAAAxI,EAAA,SAAAA,EAAAR,OAAA,kBAcL6I,EAAS,qBAdJ,yBAAArI,EAAAN,SAAAK,EAAA,kCAAAxB,EAAAqB,GAAA,OAAAwI,EAAA3J,MAAAZ,KAAAzE,YAAA,GAgBDqP,mBAhBC,eAAAC,EAAA5G,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAA2C,EAAAlC,EAAAE,GAAA,IAAAT,EAAA0E,EAAAlJ,EAAA,OAAAoB,EAAAnG,EAAAoG,KAAA,SAAA6F,GAAA,cAAAA,EAAA3F,KAAA2F,EAAA1F,MAAA,cAAAuD,EAgBoBb,OAhBpBa,EAgB4B6F,SAAUpG,EAhBtCO,EAgBsCP,QAAa0E,EAhBnDjE,EAgBmDiE,MAAOlJ,EAhB1DiF,EAgB0DjF,KAhB1DkH,EAAA3F,KAAA,EAAA2F,EAAA1F,KAAA,EAkBGuH,EAAeG,EAAOlJ,EAAMwE,EAAQtD,SAAUsD,EAAQrD,OAlBzD,OAAA+F,EAAA1F,KAAA,uBAAA0F,EAAA3F,KAAA,EAAA2F,EAAA6D,GAAA7D,EAAA,SAAAA,EAAAnF,OAAA,kBAsBLmJ,mBACEC,QAASC,IAAKC,EAAE,qBAChBC,KAAM,UACNC,SAAU,MAzBP,yBAAArE,EAAAjF,SAAAgF,EAAA,iCAAA7E,EAAAuE,GAAA,OAAAsE,EAAAjK,MAAAZ,KAAAzE,YAAA,GA4BP6P,eA5BO,SAAArG,IA6BLjB,EADyBiB,EAAVjB,QACR,qBAEHuH,YA/BC,eAAAC,EAAArH,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAAsF,EAAAvE,EA+B0ClE,GA/B1C,IAAAyJ,EAAApG,EAAA,OAAApD,EAAAnG,EAAAoG,KAAA,SAAAyI,GAAA,cAAAA,EAAAvI,KAAAuI,EAAAtI,MAAA,cAAA6D,EA+BanB,OAAQ0G,EA/BrBvF,EA+BqBuF,SAAUpG,EA/B/Ba,EA+B+Bb,QA/B/BsF,EAAAvI,KAAA,EAAAuI,EAAAtI,KAAA,EAiCG+H,EAAYpI,EAAOqD,EAAQtD,SAAUsD,EAAQrD,OAjChD,OAAA2I,EAAAtI,KAAA,sBAAAsI,EAAAvI,KAAA,EAAAuI,EAAAiB,GAAAjB,EAAA,SAAAA,EAAA/H,OAAA,iBAqCL6I,EAAS,qBArCJ,yBAAAd,EAAA7H,SAAA2H,EAAA,iCAAA9C,EAAAC,GAAA,OAAA2E,EAAA1K,MAAAZ,KAAAzE,YAAA,0BCjBJ,SAAegQ,EAAtB9K,EAAAC,GAAA,OAAA8K,GAAA5K,MAAAZ,KAAAzE,gDAAO,SAAAsF,EAA0BC,EAAUC,GAApC,OAAAC,EAAAnG,EAAAoG,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAG,yBACHC,OAAQ,MACRC,QAASC,GAAYX,KALlB,cAAAG,EAAAS,OAAA,SAAAT,EAAAU,MAAA,wBAAAV,EAAAW,SAAAhB,6BASP,IAAMa,GAAc,SAACX,GAAD,OAAWA,GAAUqB,cAAA,UAAAvG,OAA2BwG,oBCcrDoJ,IAxBblJ,OACEmJ,gBACA7B,SAAS,GAGX5G,WACE0I,UAAW,SAACpJ,EAAOkJ,GACjBlJ,EAAMmJ,aAAeD,GAEvB1B,YAAa,SAACxH,EAAOgF,GACnBhF,EAAMsH,QAAUtC,IAIpB7D,SACQkI,WADC,eAAAC,EAAA5H,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAArD,EAAA+C,GAAA,IAAAE,EAAAM,EAAAqH,EAAA,OAAAzK,EAAAnG,EAAAoG,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cACY0C,EADZF,EACYE,OAAQM,EADpBR,EACoBQ,QADpBlD,EAAAE,KAAA,EAEemK,EAAWnH,EAAQtD,SAAUsD,EAAQrD,OAFpD,OAEC0K,EAFDvK,EAAAU,KAILkC,EAAO,YAAagI,IAAIL,EAAMnH,MAAMyH,QACpCjI,EAAO,eAAe,GALjB,wBAAA5C,EAAAW,SAAAhB,MAAA,gBAAAJ,GAAA,OAAAoL,EAAAjL,MAAAZ,KAAAzE,YAAA,kBCjBqMyQ,ICiBhNpM,KAAA,YACAqM,OACAC,UACAhB,KAAAiB,QACAC,SAAA,GAEAC,aACAnB,KAAAoB,SACAF,QAAA,QCjBIG,cAAYhN,OAAAO,EAAA,EAAAP,CACdyM,GCTQ,WAAgB,IAAajM,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAiBsM,aAAaC,QAAA,UAAmBC,IAAKC,MAArH3M,KAAqHqM,eAAyBnM,EAAA,OAAY0M,YAAA,YAAAC,OAA+BC,YAAzL9M,KAAyLkM,UAAyB9L,OAAQpF,QAAA,gBAAA+R,MAAA,6BAAAC,MAAA,KAAAC,OAAA,QAA2F/M,EAAA,QAAaE,OAAOhF,EAAA,+dDYnW,EACA,KACA,WACA,OAIAmR,GAASlM,QAAAC,OAAA,YACM,IEpBkM4M,ICuBjNC,YACAC,UHJeb,YGMfc,SAAAlH,OACA5G,OAAA+N,EAAA,EAAA/N,EACA,UACA,OACA,SACA,YAGAgO,SACArI,cADA,WAEAlF,KAAAwN,OAAAhD,SAAA,kBAEAiD,OAJA,WAKAzN,KAAAwN,OAAAhD,SAAA,UAAAkD,KAAA,WACAC,SAAAC,cChCIC,cAAYtO,OAAAO,EAAA,EAAAP,CACd2N,GCTQ,WAAgB,IAAAY,EAAA9N,KAAaD,EAAA+N,EAAA7N,eAA0BC,EAAA4N,EAAA3N,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAiB0M,YAAA,WAAqB1M,EAAA,aAAkB0M,YAAA,sBAAAxM,OAAyC2N,eAAAD,EAAA5I,cAAA4H,YAAAgB,EAAAtL,QAAAC,UAAiEqL,EAAAE,GAAA,KAAA9N,EAAA,OAAwB0M,YAAA,eAAyB1M,EAAA,eAAoB0M,YAAA,gDAAAxM,OAAmE6N,QAAA,WAAmB/N,EAAA,OAAY0M,YAAA,mBAA6B1M,EAAA,OAAY0M,YAAA,cAAAxM,OAAiC8N,IAAAJ,EAAAK,OAAA,+BAA4CL,EAAAE,GAAA,KAAA9N,EAAA,oBAAuCE,OAAOgO,KAAA,YAAkBA,KAAA,aAAiBlO,EAAA,oBAAAA,EAAA,QAAoCsM,aAAa6B,QAAA,SAAkB3B,IAAKC,MAAAmB,EAAAL,UAAoBK,EAAAE,GAAAF,EAAAQ,GAAAR,EAAAS,GAAA,4CDYrsB,EACA,KACA,WACA,OAIAV,GAASxN,QAAAC,OAAA,aACM,IAAAkO,GAAAX,mCEnBR,SAASY,GAAcC,GAG5B,OAFe1O,KAAK2O,IAAI,SAAWD,GAIT1O,KAAKuO,GAAG,SAAWG,GAItCA,8BCNF,SAASE,GAAUC,EAAMC,GAC9B,GAAyB,IAArBvT,UAAUC,OACZ,OAAO,KAET,IACIuT,EADEC,EAASF,GAAW,0BAEN,WAAhBG,KAAOJ,GACTE,EAAOF,GAEc,iBAATA,GAAuB,WAAWK,KAAKL,KACjDA,EAAOM,SAASN,IAEG,iBAATA,GAAkD,KAA3BA,EAAKxI,WAAW7K,SACjDqT,GAAc,KAEhBE,EAAO,IAAIK,KAAKP,IAElB,IAAMQ,GACJC,EAAGP,EAAKQ,cACRC,EAAGT,EAAKU,WAAa,EACrBrU,EAAG2T,EAAKW,UACRC,EAAGZ,EAAKa,WACRC,EAAGd,EAAKe,aACRC,EAAGhB,EAAKiB,aACRnV,EAAGkU,EAAKkB,UAWV,OATiBjB,EAAOkB,QAAQ,sBAAuB,SAACC,EAAQC,GAC9D,IAAIC,EAAQhB,EAAUe,GAEtB,MAAY,MAARA,GAAuB,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAKC,IAC1DF,EAAO3U,OAAS,GAAK6U,EAAQ,KAC/BA,EAAQ,IAAMA,GAETA,GAAS,KAKb,SAASC,GAAWzB,EAAM0B,GAC/B1B,EAAe,KAAPA,EACR,IAAMzT,EAAI,IAAIgU,KAAKP,GAGb2B,GAFMpB,KAAKqB,MAEGrV,GAAK,IAEzB,OAAIoV,EAAO,GACF,KACEA,EAAO,KAETE,KAAKC,KAAKH,EAAO,IAAM,MACrBA,EAAO,MACTE,KAAKC,KAAKH,EAAO,MAAQ,MACvBA,EAAO,OACT,MAELD,EACK3B,GAAUC,EAAM0B,GAGrBnV,EAAEqU,WACF,EACA,IACArU,EAAEsU,UACF,IACAtU,EAAEwU,WACF,IACAxU,EAAE0U,aACF,IA8NC,SAASc,GAAWC,GACzB,MAAO,0BAA0B3B,KAAK2B,GCrSxC,ICDqNC,IDErNlR,KAAA,WACAmR,YAAA,EACA9E,OACA+E,MACA9F,KAAA+F,OACA7E,QAAA,IAEAsC,OACAxD,KAAA+F,OACA7E,QAAA,KAGA8E,OAbA,SAaAvB,EAAAwB,GAAA,IAAAC,EACAD,EAAAlF,MAAA+E,EADAI,EACAJ,KAAAtC,EADA0C,EACA1C,MACA2C,KASA,OAPAL,GACAK,EAAA7L,KAAAmK,EAAA,YAAAvP,OAAAkR,aAAAN,MAGAtC,GACA2C,EAAA7L,KAAAmK,EAAA,QAAAvB,KAAA,UAAAM,KAEA2C,IElBIE,GAAYhS,OAAAO,EAAA,EAAAP,CACduR,QAREU,OAAQC,GAWZ,EACA,KACA,KACA,MAIAF,GAASlR,QAAAC,OAAA,WACM,IAAAoR,GAAAH,WCnBsMI,ICYrN1F,OACA2F,IACA1G,KAAA+F,OACAY,UAAA,IAGAtE,SACAuE,UADA,SACAvQ,GACA,OAAAqP,GAAArP,IAEAwQ,GAAA,IACAC,KAAAzQ,EACA0Q,OAAA,SACAC,IAAA,aAIAH,GAAA,cACAH,GAAArQ,MCvBI4Q,GAAY5S,OAAAO,EAAA,EAAAP,CACdoS,GCRQ,WAAgB,IAAa5R,EAAbC,KAAaC,eAAkD,OAA/DD,KAAuCG,MAAAD,IAAAH,GAAwB,YAA/DC,KAA+DoS,MAA+B,YAA9FpS,KAA8F8R,UAA9F9R,KAA8F4R,KAAA,IAA9F5R,KAA8FqS,GAAA,oBDWxH,EACA,KACA,KACA,MAIAF,GAAS9R,QAAAC,OAAA,WACM,IEnB6MgS,IC+C5N1S,KAAA,cACAuN,YAAAuE,QAAAa,QH7BeJ,YG8BfK,SChDEnF,UACExK,OADQ,WAEN,OAAO7C,KAAKwN,OAAOjL,MAAMD,IAAIO,SAGjC4P,QANa,WASXzS,KAAK0S,eAEPnF,SACEmF,YADO,WACO,IAAAC,EAAA3S,KACN4S,EAAW5S,KAAK6S,MAAMC,QAC5B,GAAIF,EAAU,CACZ,IAAMG,EAAmBH,EAASG,iBAClCH,EAASG,iBAAmB,SAAC5T,GACP,WAAhBwT,EAAK9P,QAGTkQ,EAAiB5T,SD8B3B8M,OAEA+G,MACA9H,KAAA3L,OACAsS,UAAA,GAEAoB,QACA/H,KAAAiB,QACAC,SAAA,GAEA8G,UACAhI,KAAA+F,OACA7E,QAAA,KAGA9H,KAAA,WACA,OACA6O,aAAA,OAGA9F,UACArK,eADA,WAEA,mBAAAhD,KAAAkT,UAAAlT,KAAAwN,OAAAjL,MAAAD,IAAAU,iBAGAuK,SACA6F,mBADA,SACAC,EAAAC,GAAA,IAAAX,EAAA3S,KACAuT,EAAAF,EAAAG,OAAA,SAAAR,GACA,OAAAA,EAAAS,SAIAd,EAAAQ,aAAAH,GACA,KAKA,WAAAO,EAAA/X,QAKA,IAAA+X,EAAA/X,SACAwE,KAAAmT,aAAAhN,OAAAmN,GAAAzC,KAAA,GAAA6C,mBAAA,KACA,IAKAC,YAzBA,SAyBAC,GACA,OAAA5T,KAAA6T,eAAAD,GACAA,EAEAE,GAAAjZ,EAAA2E,QAAAQ,KAAAkT,SAAAU,IAEAC,eA/BA,SA+BAD,GACA,OAAAhD,GAAAgD,IAEAnF,mBEtGIsF,GAAYxU,OAAAO,EAAA,EAAAP,CACd+S,GCRQ,WAAgB,IAAAxE,EAAA9N,KAAaD,EAAA+N,EAAA7N,eAA0BC,EAAA4N,EAAA3N,MAAAD,IAAAH,EAAwB,OAAA+N,EAAAkF,KAAAS,QAAA3F,EAAAkF,KAAAK,UAAAvF,EAAA9K,eAAA9C,EAAA,OAA+E0M,YAAA,kBAA2BkB,EAAAsF,mBAAAtF,EAAAkF,KAAAK,SAAAvF,EAAAkF,OAAAlF,EAAAqF,aAAAE,WAAAvF,EAAAqF,aAAAO,mBAAA5F,EAAAkF,KAAAgB,WAA0e9T,EAAA,cAAqC+T,IAAA,UAAA7T,OAAqB8T,MAAApG,EAAA6F,YAAA7F,EAAAkF,KAAAnC,SAAwC3Q,EAAA,YAAiBkO,KAAA,UAAaN,EAAAkF,KAAA,KAAA9S,EAAA,QAA6BE,OAAO4Q,KAAAlD,EAAAkF,KAAAmB,KAAAnD,KAAAtC,MAAAZ,EAAAW,cAAAX,EAAAkF,KAAAmB,KAAAzF,UAA0EZ,EAAAsG,MAAA,GAAAtG,EAAAE,GAAA,KAAAF,EAAAuG,GAAAvG,EAAAkF,KAAA,kBAAAsB,GAAsE,OAAAA,EAAAb,OAAwb3F,EAAAsG,MAAxbE,EAAAjB,UAAAiB,EAAAjB,SAAA7X,OAAA,EAAA0E,EAAA,gBAAsFkQ,IAAAkE,EAAAzD,KAAAjE,YAAA,YAAAxM,OAA8CmU,WAAA,EAAAvB,KAAAsB,EAAAE,YAAA1G,EAAA6F,YAAAW,EAAAzD,SAAqE3Q,EAAA,YAAiBkQ,IAAAkE,EAAA1U,KAAAQ,OAAsBwR,GAAA9D,EAAA6F,YAAAW,EAAAzD,SAAkC3Q,EAAA,gBAAqBE,OAAO8T,MAAApG,EAAA6F,YAAAW,EAAAzD,SAAqCyD,EAAA,KAAApU,EAAA,QAA0BE,OAAO4Q,KAAAsD,EAAAH,KAAAnD,KAAAtC,MAAAZ,EAAAW,cAAA6F,EAAAH,KAAAzF,UAAoEZ,EAAAsG,MAAA,YAA8B,IAApvClU,EAAA,YAAiKE,OAAOwR,GAAA9D,EAAA6F,YAAA7F,EAAAqF,aAAAtC,SAA6C3Q,EAAA,gBAAqB2M,OAAO4H,4BAAA3G,EAAAmF,QAAuC7S,OAAQ8T,MAAApG,EAAA6F,YAAA7F,EAAAqF,aAAAtC,SAAgD/C,EAAAqF,aAAA,KAAAjT,EAAA,QAAqCE,OAAO4Q,KAAAlD,EAAAqF,aAAAgB,KAAAnD,MAAAlD,EAAAkF,KAAAmB,KAAAnD,KAAAtC,MAAAZ,EAAAW,cAAAX,EAAAqF,aAAAgB,KAAAzF,UAA8GZ,EAAAsG,MAAA,SAA0wB,GAAAtG,EAAAsG,UDWv7C,EACA,KACA,KACA,MAIAL,GAAS1T,QAAAC,OAAA,kBACM,IAAAoU,GAAAX,mCEnBuMY,ICqBtNxH,YAAAuH,gBACArH,SAAAlH,OACA5G,OAAA+N,EAAA,EAAA/N,EACA,qBACA,aAEAqV,UALA,WAMA,OAAAC,GAAAha,GAEAia,WARA,WASA,OAAA9U,KAAAwC,QAAAC,WCxBIsS,GAAYxV,OAAAO,EAAA,EAAAP,CACdoV,GCRQ,WAAgB,IAAa5U,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,gBAA0BE,OAAO4U,aAAA,uBAAkC9U,EAAA,WAAgBE,OAAO6U,iBAAzJjV,KAAyJkV,OAAArE,KAAAsE,SAAzJnV,KAAyJ8U,WAAAM,mBAAzJpV,KAAyJ4U,UAAAS,OAAAC,aAAzJtV,KAAyJ4U,UAAAW,SAAAC,oBAAzJxV,KAAyJ4U,UAAAa,eAAAC,KAAA,aAAzJ1V,KAAoWqU,GAApWrU,KAAoW,4BAAA2V,GAAiD,OAAAzV,EAAA,gBAA0BkQ,IAAAuF,EAAA9E,KAAAzQ,OAAsB4S,KAAA2C,EAAAnB,YAAAmB,EAAA9E,UAAuC,YDWtgB,EACA,KACA,KACA,MAIAkE,GAAS1U,QAAAC,OAAA,YACM,IAAAsV,GAAAb,WEnBiMc,ICUhNjW,KAAA,aACA0E,KAAA,WACA,OACAwR,KAAA,IAGAvI,SACAwI,aADA,SACA5W,GACA,IAAA6W,EAAA7W,EAAA8W,YAAA,IAAA9W,EAAA+W,OACAC,EAAAnW,KAAA6S,MAAAuD,gBAAAvD,MAAA5R,KACAkV,EAAAE,WAAAF,EAAAE,WAAAL,EAAA,GAEAM,aANA,SAMAC,GACA,IACAC,EADAxW,KAAA6S,MAAAuD,gBAAAK,IACAC,YACAP,EAAAnW,KAAA6S,MAAAuD,gBAAAvD,MAAA5R,KACA0V,EAAA3W,KAAA4W,QAAA/D,MAAAgE,IAEAC,EAAA,KACAC,EAAA,KAQA,GALAJ,EAAAnb,OAAA,IACAsb,EAAAH,EAAA,GACAI,EAAAJ,IAAAnb,OAAA,IAGAsb,IAAAP,EACAJ,EAAAE,WAAA,OACA,GAAAU,IAAAR,EACAJ,EAAAE,WAAAF,EAAAa,YAAAR,MACA,CAEA,IAAAS,EAAAN,EAAAO,UAAA,SAAAlE,GAAA,OAAAA,IAAAuD,IACAY,EAAAR,EAAAM,EAAA,GACAG,EAAAT,EAAAM,EAAA,GAEAI,EAAAD,EAAAX,IAAAa,WAAAF,EAAAX,IAAAC,YAxCA,EA2CAa,EAAAJ,EAAAV,IAAAa,WA3CA,EA6CAD,EAAAlB,EAAAE,WAAAG,EACAL,EAAAE,WAAAgB,EAAAb,EACAe,EAAApB,EAAAE,aACAF,EAAAE,WAAAkB,OC/CIC,cAAYjY,OAAAO,EAAA,EAAAP,CACdsW,GCTQ,WAAgB,IAAA/H,EAAA9N,KAAaD,EAAA+N,EAAA7N,eAAkD,OAAxB6N,EAAA3N,MAAAD,IAAAH,GAAwB,gBAA0BkU,IAAA,kBAAArH,YAAA,mBAAAxM,OAA4DqX,UAAA,GAAiBC,UAAWC,MAAA,SAAAC,GAAiD,OAAxBA,EAAAC,iBAAwB/J,EAAAiI,aAAA6B,OAAkC9J,EAAAuE,GAAA,oBDY9R,EACA,KACA,WACA,OAIAmF,GAASnX,QAAAC,OAAA,YACM,IEpBoMwX,ICiCnN3K,YAAA4K,WHbeP,YGcflT,KAAA,WACA,OACA0T,SAAA,EACAC,IAAA,EACAnC,KAAA,EACAoC,eACAC,eAGA9K,UACA+K,aADA,WAEA,OAAApY,KAAAwN,OAAAjL,MAAA8V,SAAAD,cAEAE,QAJA,WAKA,OAAAtY,KAAAwN,OAAAjL,MAAAgW,WAAAD,UAGAE,OACAtD,OADA,WAEAlV,KAAAyY,UACAzY,KAAA0Y,oBAEAV,QALA,SAKA3H,GACAA,EACAsI,SAAAC,KAAAC,iBAAA,QAAA7Y,KAAA8Y,WAEAH,SAAAC,KAAAG,oBAAA,QAAA/Y,KAAA8Y,aAIArG,QAhCA,WAiCAzS,KAAAgZ,WACAhZ,KAAAyY,WAEAlL,SACAkB,iBACAvC,SAFA,SAEAyJ,GACA,OAAAA,EAAA9E,OAAA7Q,KAAAkV,OAAArE,MAEAoI,gBALA,SAKAC,GAAA,IAAAvG,EAAA3S,KAAAkT,EAAA3X,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,OACA4d,KAiBA,OAhBAD,EAAAE,QAAA,SAAAzD,GAQA,GAPAA,EAAAxB,MAAAwB,EAAAxB,KAAAkF,OACAF,EAAA3T,MACAqL,KAAAiD,GAAAjZ,EAAA2E,QAAA0T,EAAAyC,EAAA9E,MACAjR,KAAA+V,EAAA/V,KACAuU,KAAAhO,OAAAwP,EAAAxB,QAGAwB,EAAAtC,SAAA,CACA,IAAAiG,EAAA3G,EAAAsG,gBAAAtD,EAAAtC,SAAAsC,EAAA9E,MACAyI,EAAA9d,QAAA,IACA2d,KAAAtd,OAAAiQ,IAAAqN,GAAArN,IAAAwN,QAKAH,GAEAH,SAzBA,WA0BA,IAAAb,EAAAnY,KAAAmY,UAAAnY,KAAAiZ,gBAAAjZ,KAAAsY,SADAiB,GAAA,EAAAC,GAAA,EAAAC,OAAAhe,EAAA,IAEA,QAAAie,EAAAC,EAAAxB,EAAAyB,OAAAC,cAAAN,GAAAG,EAAAC,EAAAvY,QAAA0Y,MAAAP,GAAA,OAAA1C,EAAA6C,EAAArJ,MAEAwG,EAAAjX,MACAI,KAAAwN,OAAAhD,SAAA,iBAAAqM,IALA,MAAAkD,GAAAP,GAAA,EAAAC,EAAAM,EAAA,YAAAR,GAAA,MAAAI,EAAAK,QAAAL,EAAAK,SAAA,WAAAR,EAAA,MAAAC,KASAhB,QAlCA,WAuCA,OAJAzY,KAAAkV,OAAAtV,MAEAI,KAAAwN,OAAAhD,SAAA,UAAAxK,KAAAkV,SAEA,GAEAwD,iBAzCA,WAyCA,IAAAuB,EAAAja,KACAmZ,EAAAnZ,KAAA6S,MAAAgE,IACA7W,KAAAka,UAAA,eAAAC,GAAA,EAAAC,GAAA,EAAAC,OAAA5e,EAAA,IACA,QAAA6e,EAAAC,EAAApB,EAAAS,OAAAC,cAAAM,GAAAG,EAAAC,EAAAnZ,QAAA0Y,MAAAK,GAAA,OAAAtD,EAAAyD,EAAAjK,MACA,GAAAwG,EAAAjF,GAAAf,OAAAoJ,EAAA/E,OAAArE,KAAA,CACAoJ,EAAApH,MAAA2H,WAAAlE,aAAAO,GAGAA,EAAAjF,GAAA6I,WAAAR,EAAA/E,OAAAuF,UACAR,EAAAzM,OAAAhD,SAAA,oBAAAyP,EAAA/E,QAGA,QAVA,MAAA6E,GAAAK,GAAA,EAAAC,EAAAN,EAAA,YAAAI,GAAA,MAAAI,EAAAP,QAAAO,EAAAP,SAAA,WAAAI,EAAA,MAAAC,OAeAK,mBA1DA,SA0DAC,GAAA,IAAAC,EAAA5a,KACAA,KAAAwN,OAAAhD,SAAA,gBAAAmQ,GAAAjN,KAAA,eACA+M,EAAAE,EAAAF,SACAG,EAAAV,UAAA,WACAU,EAAAC,QAAA3K,SACAW,KAAA,YAAA4J,SAKAK,iBApEA,SAoEAH,GAAA,IAAAI,EAAA/a,KACAA,KAAAwN,OAAAhD,SAAA,UAAAmQ,GAAAjN,KAAA,SAAA9J,GAAA,IAAAwU,EAAAxU,EAAAwU,aACA2C,EAAA7O,SAAAyO,IACAI,EAAAC,WAAA5C,MAIA6C,gBA3EA,WA2EA,IAAAC,EAAAlb,KACAA,KAAA6a,QAAArV,KAAAxF,KAAAkY,aACAlY,KAAAwN,OAAAhD,SAAA,iBAAAxK,KAAAkY,aAAAxK,KAAA,WACAwN,EAAAxC,sBAGAyC,aAjFA,SAiFAR,GAAA,IAAAS,EAAApb,KACAA,KAAAwN,OAAAhD,SAAA,eAAAkD,KAAA,SAAA7J,GAAA,IAAAuU,EAAAvU,EAAAuU,aACAgD,EAAAjD,UAAAkD,KAAA,SAAAxE,GAAA,OAAAA,EAAAhG,OAAA8J,EAAA9J,QAGAuK,EAAAJ,WAAA5C,MAGA4C,WAzFA,SAyFA5C,GACA,IAAAkD,EAAAlD,EAAAmD,OAAA,MACAD,EACAtb,KAAA6a,QAAArV,KAAA8V,GAGAtb,KAAA6a,QAAArV,KAAA,MAGAgW,SAlGA,SAkGA3E,EAAA1X,GACA,IACAmY,EAAAtX,KAAAyW,IAAAgF,wBAAA3F,KAEA4F,EADA1b,KAAAyW,IAAAC,YAFA,IAIAZ,EAAA3W,EAAAwc,QAAArE,EAAA,GAGAtX,KAAA8V,KADAA,EAAA4F,EACAA,EAEA5F,EAEA9V,KAAAiY,IAAA9Y,EAAAyc,QAEA5b,KAAAgY,SAAA,EACAhY,KAAAkY,YAAArB,GAEAiC,UAnHA,WAoHA9Y,KAAAgY,SAAA,KC/KI6D,wBAAYtc,OAAAO,EAAA,EAAAP,CACduY,GCVQ,WAAgB,IAAAhK,EAAA9N,KAAaD,EAAA+N,EAAA7N,eAA0BC,EAAA4N,EAAA3N,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAiB0M,YAAA,wBAAkC1M,EAAA,eAAoB+T,IAAA,aAAArH,YAAA,qBAAiDkB,EAAAuG,GAAAvG,EAAA,sBAAA+I,GAAyC,OAAA3W,EAAA,eAAyBkQ,IAAAyG,EAAAhG,KAAAoD,IAAA,MAAA6H,UAAA,EAAAlP,YAAA,iBAAAC,MAAAiB,EAAA5B,SAAA2K,GAAA,YAAAzW,OAA6GwR,IAAMf,KAAAgG,EAAAhG,KAAAkL,MAAAlF,EAAAkF,MAAAtB,SAAA5D,EAAA4D,UAA2D5D,IAAA,QAAca,UAAWsE,QAAA,SAAApE,GAA2B,iBAAAA,GAAA,IAAAA,EAAAqE,OAA8C,KAAenO,EAAAgN,iBAAAjE,IAAiCqF,YAAA,SAAAtE,GAAwD,OAAxBA,EAAAC,iBAAwB/J,EAAA0N,SAAA3E,EAAAe,OAAkC9J,EAAAE,GAAA,WAAAF,EAAAQ,GAAAR,EAAAW,cAAAoI,EAAAnI,QAAA,YAAAmI,EAAA1C,KAAAkF,MAA+OvL,EAAAsG,KAA/OlU,EAAA,QAAkG0M,YAAA,gBAAAF,IAAgCC,MAAA,SAAAiL,GAA0E,OAAjDA,EAAAC,iBAAwBD,EAAAuE,kBAAyBrO,EAAAgN,iBAAAjE,WAAgD,GAAA/I,EAAAE,GAAA,KAAA9N,EAAA,MAA0Bkc,aAAaxc,KAAA,OAAAyc,QAAA,SAAAhM,MAAAvC,EAAA,QAAAwO,WAAA,YAAsE1P,YAAA,cAAA2P,OAAoCzG,KAAAhI,EAAAgI,KAAA,KAAAmC,IAAAnK,EAAAmK,IAAA,QAAsC/X,EAAA,MAAWwM,IAAIC,MAAA,SAAAiL,GAAyB,OAAA9J,EAAA4M,mBAAA5M,EAAAoK,iBAAiDpK,EAAAE,GAAAF,EAAAQ,GAAAR,EAAAS,GAAA,wBAAAT,EAAAE,GAAA,KAAAF,EAAAoK,YAAA/D,MAAArG,EAAAoK,YAAA/D,KAAAkF,MAAsMvL,EAAAsG,KAAtMlU,EAAA,MAA0HwM,IAAIC,MAAA,SAAAiL,GAAyB,OAAA9J,EAAAgN,iBAAAhN,EAAAoK,iBAA+CpK,EAAAE,GAAAF,EAAAQ,GAAAR,EAAAS,GAAA,sBAAAT,EAAAE,GAAA,KAAA9N,EAAA,MAA2EwM,IAAIC,MAAAmB,EAAAmN,mBAA6BnN,EAAAE,GAAAF,EAAAQ,GAAAR,EAAAS,GAAA,4BAAAT,EAAAE,GAAA,KAAA9N,EAAA,MAAwEwM,IAAIC,MAAA,SAAAiL,GAAyB,OAAA9J,EAAAqN,aAAArN,EAAAoK,iBAA2CpK,EAAAE,GAAAF,EAAAQ,GAAAR,EAAAS,GAAA,oCDa3nD,EACA,KACA,WACA,OAIAsN,GAASxb,QAAAC,OAAA,eACM,IAAAkc,GAAAX,WErBmMY,ICYlN7c,KAAA,UACAyN,UACAqP,YADA,WAEA,OAAA1c,KAAAwN,OAAAjL,MAAA8V,SAAAqE,aAEAtM,IAJA,WAKA,OAAApQ,KAAAkV,OAAAuF,YCVIkC,cAAYpd,OAAAO,EAAA,EAAAP,CACdkd,GCTQ,WAAgB,IAAa1c,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,WAAqB0M,YAAA,aAAuB1M,EAAA,cAAmBE,OAAOR,KAAA,iBAAA8V,KAAA,YAAyCxV,EAAA,cAAmBE,OAAOwc,QAAxM5c,KAAwM0c,eAA2Bxc,EAAA,eAAoBkQ,IAAvPpQ,KAAuPoQ,OAAY,gBDY7R,EACA,KACA,WACA,OAIAuM,GAAStc,QAAAC,OAAA,cACM,IAAAuc,GAAAF,WElBP/D,GAASD,SAATC,KCFmMkE,ICgB3Mld,KAAA,SACAuN,YACAqB,UACAoH,WACAiH,WACAL,aAEAhK,SFfEgG,OACEtD,OADK,SACES,GACe,WAAhB3V,KAAK6C,QAAuB7C,KAAKwC,QAAQC,QAC3Csa,GAAMvS,SAAS,gBAAkB5H,kBAAkB,MAIzDoa,YARa,WASXC,OAAOpE,iBAAiB,SAAU7Y,KAAKkd,gBAEzCzK,QAXa,WAYX,IAAM0K,EAAWnd,KAAKmd,WAChBC,EAAWpd,KAAKod,YAClBD,GAAYC,KACdL,GAAMvS,SAAS,eAAgB2S,EAAW,SAAW,UACrDJ,GAAMvS,SAAS,gBAAkB5H,kBAAkB,MAGvD2K,SACE4P,SADO,WAGL,OADavE,GAAK6C,wBACNzO,MAxBJ,EAFM,KA4BhBoQ,SALO,WAML,IAAMC,EAAOzE,GAAK6C,wBAClB,OAAO4B,EAAKrQ,MA5BJ,EADM,KA6B6BqQ,EAAKrQ,MA5BxC,EAFM,KAgChBkQ,cATO,WAUL,IAAKvE,SAASlF,OAAQ,CACpB,IAAM0J,EAAWnd,KAAKmd,WAChBC,EAAWpd,KAAKod,WAElBD,GAAYC,GACdL,GAAMvS,SAAS,eAAgB2S,EAAW,SAAW,UACrDJ,GAAMvS,SAAS,gBAAkB5H,kBAAkB,KAEnDma,GAAMvS,SAAS,eAAgB,gBEpBzC6C,UACA7K,QADA,WAEA,OAAAxC,KAAAwN,OAAAjL,MAAAD,IAAAE,SAEAK,OAJA,WAKA,OAAA7C,KAAAwN,OAAAjL,MAAAD,IAAAO,QAEAya,SAPA,WAQA,OACAC,aAAAvd,KAAAwC,QAAAC,OACA+a,YAAAxd,KAAAwC,QAAAC,OACAG,iBAAA5C,KAAAwC,QAAAI,iBACA6a,OAAA,WAAAzd,KAAA6C,UAIA0K,SACAmQ,mBADA,WAEA1d,KAAAwN,OAAAhD,SAAA,gBAAA5H,kBAAA,OClCI+a,cAAYpe,OAAAO,EAAA,EAAAP,CACdud,GCTQ,WAAgB,IAAAhP,EAAA9N,KAAaD,EAAA+N,EAAA7N,eAA0BC,EAAA4N,EAAA3N,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAiB0M,YAAA,cAAAC,MAAAiB,EAAAwP,WAA6C,WAAAxP,EAAAjL,QAAAiL,EAAAtL,QAAAC,OAAAvC,EAAA,OAAwD0M,YAAA,YAAAF,IAA4BC,MAAAmB,EAAA4P,sBAAgC5P,EAAAsG,KAAAtG,EAAAE,GAAA,KAAA9N,EAAA,WAAqC0M,YAAA,sBAAgCkB,EAAAE,GAAA,KAAA9N,EAAA,OAAwB0M,YAAA,mBAA6B1M,EAAA,UAAA4N,EAAAE,GAAA,KAAA9N,EAAA,yBDYrY,EACA,KACA,WACA,OAIAyd,GAAStd,QAAAC,OAAA,aACM,IAAAsd,GAAAD,WEjBfE,UAAI9iB,IAAI+iB,MAKR,IAAMC,IAAmBC,MAAiC,EACpDC,GAAmBF,GAAiBG,SAAS,YAC7CC,IACJtN,KAAM,YACNhR,UAAW+d,GACXvK,WAEIxC,KAAM,QACNhR,UAAW,kBAAMue,QAAAC,KAAAjkB,EAAA+E,EAAA,iBAAA/E,EAAA+E,EAAA,cAAA/E,EAAA+E,EAAA,gBAAAuO,KAAAtT,EAAAkkB,KAAA,eACjB1e,KAAM,WACNuU,MAAQzF,MAAO,WAAYsC,KAAM,WAAYuN,SAAS,MAKtDC,GAAmBT,GAAiBG,SAAS,YAC7CO,IACJ5N,KAAM,YACNhR,UAAW+d,GACXvK,WAEIxC,KAAM,QACNhR,UAAW,kBAAMue,QAAAC,KAAAjkB,EAAA+E,EAAA,iBAAA/E,EAAA+E,EAAA,cAAA/E,EAAA+E,EAAA,QAAA/E,EAAA+E,EAAA,cAAA/E,EAAA+E,EAAA,gBAAAuO,KAAAtT,EAAAkkB,KAAA,eACjB1e,KAAM,WACNuU,MAAQzF,MAAO,WAAYsC,KAAM,OAAQuN,SAAS,MAKlDG,GAAkBX,GAAiBG,SAAS,WAC5CS,IACJ9N,KAAM,WACNhR,UAAW+d,GACXvK,WAEIxC,KAAM,QACNhR,UAAW,kBAAMue,QAAAC,KAAAjkB,EAAA+E,EAAA,iBAAA/E,EAAA+E,EAAA,cAAA/E,EAAA+E,EAAA,QAAA/E,EAAA+E,EAAA,gBAAAuO,KAAAtT,EAAAkkB,KAAA,eACjB1e,KAAM,UACNuU,MAAQzF,MAAO,UAAWsC,KAAM,gBAAiBuN,SAAS,MAK1DK,GAAkBb,GAAiBG,SAAS,WAC5CvU,IACJkH,KAAM,WACNhR,UAAW+d,GACXvK,WAEIxC,KAAM,QACNhR,UAAW,kBAAMue,QAAAC,KAAAjkB,EAAA+E,EAAA,iBAAA/E,EAAA+E,EAAA,gBAAAuO,KAAAtT,EAAAkkB,KAAA,eACjB1e,KAAM,UACNuU,MAAQzF,MAAO,UAAWsC,KAAM,QAASuN,SAAS,MAKlDM,GAAqBd,GAAiBG,SAAS,eAC/CY,IACJjO,KAAM,eACNhR,UAAW+d,GACXvK,WAEIxC,KAAM,QACNhR,UAAW,kBAAMue,QAAAC,KAAAjkB,EAAA+E,EAAA,iBAAA/E,EAAA+E,EAAA,gBAAAuO,KAAAtT,EAAAkkB,KAAA,eACjB1e,KAAM,cACNuU,MAAQzF,MAAO,cAAesC,KAAM,WAAYuN,SAAS,MAKzDQ,GAAwBhB,GAAiBG,SAAS,kBAClDnX,IACJ8J,KAAM,kBACNhR,UAAW+d,GACXvK,WAEIxC,KAAM,QACNhR,UAAW,kBAAMue,QAAAC,KAAAjkB,EAAA+E,EAAA,iBAAA/E,EAAA+E,EAAA,cAAA/E,EAAA+E,EAAA,gBAAAuO,KAAAtT,EAAAkkB,KAAA,eACjB1e,KAAM,iBACNuU,MAAQzF,MAAO,gBAAiBsC,KAAM,OAAQuN,SAAS,MAKhDS,KAETnO,KAAM,YACNhR,UAAW+d,GACXnK,QAAQ,EACRJ,WAEIxC,KAAM,mBACNhR,UAAW,kBAAMzF,EAAA+E,EAAA,QAAAuO,KAAAtT,EAAAkkB,KAAA,mBAKrBzN,KAAM,iBACNhR,UAAW,kBAAMue,QAAAC,KAAAjkB,EAAA+E,EAAA,QAAA/E,EAAA+E,EAAA,gBAAAuO,KAAAtT,EAAAkkB,KAAA,eACjB7K,QAAQ,IAGR5C,KAAM,SACNhR,UAAW,kBAAMue,QAAAC,KAAAjkB,EAAA+E,EAAA,QAAA/E,EAAA+E,EAAA,gBAAAuO,KAAAtT,EAAAkkB,KAAA,eACjB7K,QAAQ,IAGR5C,KAAM,iBACNhR,UAAW,kBAAMzF,EAAA+E,EAAA,QAAAuO,KAAAtT,EAAAkkB,KAAA,eACjB7K,QAAQ,IAGR5C,KAAM,OACNhR,UAAW,kBAAMzF,EAAA+E,EAAA,cAAAuO,KAAAtT,EAAAkkB,KAAA,eACjB7K,QAAQ,IAGR5C,KAAM,OACNhR,UAAW,kBAAMzF,EAAA+E,EAAA,cAAAuO,KAAAtT,EAAAkkB,KAAA,eACjB7K,QAAQ,IAGR5C,KAAM,GACNhR,UAAW+d,GACXqB,SAAU,iBAICC,GAAA,IAAIpB,MAEjBqB,eAAgB,kBAAS7P,EAAG,IAC5B4J,OAAQ8F,KAGGI,KAETvO,KAAM,SACNhR,UAAW+d,GACXvK,WAEIxC,KAAM,QACNhR,UAAW,kBAAMue,QAAAC,KAAAjkB,EAAA+E,EAAA,iBAAA/E,EAAA+E,EAAA,QAAA/E,EAAA+E,EAAA,cAAA/E,EAAA+E,EAAA,gBAAAuO,KAAAtT,EAAAkkB,KAAA,eACjB1e,KAAM,QACNuU,MAAQzF,MAAO,QAASsC,KAAM,UAAWuN,SAAS,OAT/B1iB,OAAAiQ,IAarB0S,OAAyBC,KAbJ3S,IAcrB4S,OAAwBC,KAdH7S,IAerB8S,OAAwBjV,KAfHmC,IAgBrB+S,OAA2BC,KAhBNhT,IAiBrBiT,OAA8BhY,KAjBT+E,IAkBrBmS,OAAyBE,OAE3BtN,KAAM,aACNhR,UAAW+d,GACXvK,WAEIxC,KAAM,GACNjR,KAAM,YACNC,UAAW,kBAAMue,QAAAC,KAAAjkB,EAAA+E,EAAA,iBAAA/E,EAAA+E,EAAA,cAAA/E,EAAA+E,EAAA,gBAAAuO,KAAAtT,EAAAkkB,KAAA,iBAGrB7K,QAAQ,IAGR5C,KAAM,gBACNhR,UAAW+d,GACXvK,WAEIxC,KAAM,GACNjR,KAAM,aACNC,UAAW,kBAAMue,QAAAC,KAAAjkB,EAAA+E,EAAA,iBAAA/E,EAAA+E,EAAA,cAAA/E,EAAA+E,EAAA,gBAAAuO,KAAAtT,EAAAkkB,KAAA,iBAGrB7K,QAAQ,IAER5C,KAAM,IAAKoO,SAAU,OAAQxL,QAAQ,KCtJzC,IA4Be8E,IA3BbhW,OACE+V,WACA+G,eAEFpc,WACEqc,YAAa,SAAC/c,EAAO+V,GACnB/V,EAAM8c,WAAa/G,EACnB/V,EAAM+V,QAAU0G,GAAkBnjB,OAAOyc,KAG7C5U,SACE6b,eADO,SAAA3b,EACoBU,GAAM,IAAhBR,EAAgBF,EAAhBE,OACf,OAAO,IAAIsa,QAAQ,SAAA5e,GAAW,IAExBggB,EADIC,EAAUnb,EAAVmb,MAGND,EADEC,EAAMvB,SAAS,SACCkB,GAjC5B,SAASM,EAAkBxG,EAAQuG,GACjC,IAAME,KAYN,OAVAzG,EAAOE,QAAQ,SAAAzD,GACb,IAAMiK,EAAMzZ,OAAKwP,IAjBrB,SAAuB8J,EAAO9J,GAC5B,OAAIA,EAAMxB,OAAQwB,EAAMxB,KAAKsL,OACpBA,EAAMpE,KAAK,SAAAwE,GAAI,OAAIlK,EAAMxB,KAAKsL,MAAMvB,SAAS2B,MAgBhDC,CAAcL,EAAOG,KACnBA,EAAIvM,WACNuM,EAAIvM,SAAWqM,EAAkBE,EAAIvM,SAAUoM,IAEjDE,EAAIna,KAAKoa,MAIND,EAsBmBD,CAAkBN,GAAgBK,GAEtD3b,EAAO,cAAe0b,GACtBhgB,SCtDD,SAAeugB,GAAtBtf,EAAAC,GAAA,OAAAsf,GAAApf,MAAAZ,KAAAzE,gDAAO,SAAAsF,EAA2BC,EAAUC,GAArC,OAAAC,EAAAnG,EAAAoG,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAK,2BACLC,OAAQ,MACRC,QAASC,GAAYX,KALlB,cAAAG,EAAAS,OAAA,SAAAT,EAAAU,MAAA,wBAAAV,EAAAW,SAAAhB,6BASA,SAAeof,GAAtBle,EAAAC,EAAAuE,GAAA,OAAA2Z,GAAAtf,MAAAZ,KAAAzE,gDAAO,SAAA2G,EAAwBie,EAAOrf,EAAUC,GAAzC,OAAAC,EAAAnG,EAAAoG,KAAA,SAAAkB,GAAA,cAAAA,EAAAhB,KAAAgB,EAAAf,MAAA,cAAAe,EAAAf,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAK,2BACLC,OAAQ,OACRC,QAASC,GAAYX,GACrBuD,MAAQ8b,UAAWD,KANhB,cAAAhe,EAAAR,OAAA,SAAAQ,EAAAP,MAAA,wBAAAO,EAAAN,SAAAK,6BAUA,SAAeme,GAAtB3Z,EAAAC,EAAAiC,GAAA,OAAA0X,GAAA1f,MAAAZ,KAAAzE,gDAAO,SAAAsL,EAA2BsZ,EAAOrf,EAAUC,GAA5C,OAAAC,EAAAnG,EAAAoG,KAAA,SAAA6F,GAAA,cAAAA,EAAA3F,KAAA2F,EAAA1F,MAAA,cAAA0F,EAAA1F,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAK,2BACLC,OAAQ,SACRC,QAASC,GAAYX,GACrBuD,MAAQ8b,UAAS,WAAAvkB,OAAaskB,EAAb,aANd,cAAArZ,EAAAnF,OAAA,SAAAmF,EAAAlF,MAAA,wBAAAkF,EAAAjF,SAAAgF,6BAUP,IAAMnF,GAAc,SAACX,GAAD,OAAWA,GAAUqB,cAAA,UAAAvG,OAA2BwG,oBCsBrDke,IApDbhe,OACEie,iBACA3W,SAAS,GAEX5G,WACE8G,YAAa,SAACxH,EAAOsH,GACnBtH,EAAMsH,QAAUA,GAElB4W,WAAY,SAACle,EAAOge,GAClBhe,EAAMie,cAAgBD,GAExBG,UAAW,SAACne,EAAO4d,GACjB5d,EAAMie,iBAAN3kB,OAAAiQ,IAA0BvJ,EAAMie,gBAAeL,KAEjDQ,aAAc,SAACpe,EAAO4d,GACpB5d,EAAMie,cAAgBje,EAAMie,cAAchN,OAAO,SAAAoN,GAAY,OAAIA,IAAiBT,MAGtFzc,SACQmd,YADC,eAAAC,EAAA7c,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAArD,EAAA+C,GAAA,IAAAE,EAAAM,EAAAC,EAAA,OAAArD,EAAAnG,EAAAoG,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cACa0C,EADbF,EACaE,OAAQM,EADrBR,EACqBQ,QAC1BN,EAAO,eAAe,GAFjB5C,EAAAE,KAAA,EAIkB2e,GAAY3b,EAAQtD,SAAUsD,EAAQrD,OAJxD,OAICsD,EAJDnD,EAAAU,KAMLkC,EAAO,aAAcO,EAASC,KAAKic,QACnCzc,EAAO,eAAe,GAPjB,wBAAA5C,EAAAW,SAAAhB,MAAA,gBAAAJ,GAAA,OAAAqgB,EAAAlgB,MAAAZ,KAAAzE,YAAA,GASDwlB,SATC,eAAAC,EAAA/c,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAAhC,EAAA2B,EASuCsc,GATvC,IAAArc,EAAA0G,EAAApG,EAAA,OAAApD,EAAAnG,EAAAoG,KAAA,SAAAkB,GAAA,cAAAA,EAAAhB,KAAAgB,EAAAf,MAAA,cASU0C,EATVD,EASUC,OAAQ0G,EATlB3G,EASkB2G,SAAUpG,EAT5BP,EAS4BO,QACjCN,EAAO,YAAaqc,GAVfhe,EAAAhB,KAAA,EAAAgB,EAAAf,KAAA,EAaG6e,GAASE,EAAO/b,EAAQtD,SAAUsD,EAAQrD,OAb7C,OAAAoB,EAAAf,KAAA,uBAAAe,EAAAhB,KAAA,EAAAgB,EAAAwI,GAAAxI,EAAA,SAAAA,EAAAR,OAAA,yBAAAQ,EAAAhB,KAAA,GAiBHqJ,EAAS,eAjBNrI,EAAA8e,OAAA,6BAAA9e,EAAAN,SAAAK,EAAA,uCAAAxB,EAAAqB,GAAA,OAAAif,EAAApgB,MAAAZ,KAAAzE,YAAA,GAoBD2lB,YApBC,eAAAC,EAAAld,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAA2C,EAAA1C,EAoB0Cgc,GApB1C,IAAArc,EAAA0G,EAAApG,EAAA,OAAApD,EAAAnG,EAAAoG,KAAA,SAAA6F,GAAA,cAAAA,EAAA3F,KAAA2F,EAAA1F,MAAA,cAoBa0C,EApBbK,EAoBaL,OAAQ0G,EApBrBrG,EAoBqBqG,SAAUpG,EApB/BD,EAoB+BC,QACpCN,EAAO,eAAgBqc,GArBlBrZ,EAAA3F,KAAA,EAAA2F,EAAA1F,KAAA,EAwBGif,GAAYF,EAAO/b,EAAQtD,SAAUsD,EAAQrD,OAxBhD,OAAA+F,EAAA1F,KAAA,uBAAA0F,EAAA3F,KAAA,EAAA2F,EAAA6D,GAAA7D,EAAA,SAAAA,EAAAnF,OAAA,yBAAAmF,EAAA3F,KAAA,GA4BHqJ,EAAS,eA5BN1D,EAAAma,OAAA,6BAAAna,EAAAjF,SAAAgF,EAAA,uCAAA7E,EAAAuE,GAAA,OAAA4a,EAAAvgB,MAAAZ,KAAAzE,YAAA,KCjBJ,SAAe6lB,GAAtB3gB,EAAAC,EAAAqB,GAAA,OAAAsf,GAAAzgB,MAAAZ,KAAAzE,gDAAO,SAAAsF,EAA2B8d,EAAS7d,EAAUC,GAA9C,OAAAC,EAAAnG,EAAAoG,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAG,6BACHC,OAAQ,QACRC,QAASC,GAAYX,GACrBuD,MAAQqa,aANL,cAAAzd,EAAAS,OAAA,SAAAT,EAAAU,MAAA,wBAAAV,EAAAW,SAAAhB,6BAUA,SAAeygB,GAAtBtf,EAAAuE,EAAAG,EAAAC,EAAAiC,GAAA,OAAA2Y,GAAA3gB,MAAAZ,KAAAzE,gDAAO,SAAA2G,EAA4BsR,EAAQ3N,EAAM2b,EAAU1gB,EAAUC,GAA9D,IAAAQ,EAAA,OAAAP,EAAAnG,EAAAoG,KAAA,SAAAkB,GAAA,cAAAA,EAAAhB,KAAAgB,EAAAf,MAAA,cACCG,EAAMiS,EAAOhY,OAAS,EAAhB,oCAAAK,OAC4B2X,EAD5B,UAAA3X,OAC2CgK,EAD3C,eAAAhK,OAC6D2lB,GAD7D,mCAAA3lB,OAE2BgK,EAF3B,eAAAhK,OAE6C2lB,GAHpDrf,EAAAf,KAAA,EAIQC,aACXC,QAASjG,YAASyF,GAClBS,MACAC,OAAQ,MACRC,QAASC,GAAYX,KARlB,cAAAoB,EAAAR,OAAA,SAAAQ,EAAAP,MAAA,wBAAAO,EAAAN,SAAAK,kEAYA,SAAA2E,EAA0B5L,EAASwmB,EAAU3gB,EAAUC,GAAvD,OAAAC,EAAAnG,EAAAoG,KAAA,SAAA6F,GAAA,cAAAA,EAAA3F,KAAA2F,EAAA1F,MAAA,cAAA0F,EAAA1F,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAG,8BAAA1F,OAAgC4lB,EAAhC,UACHjgB,OAAM,OACNC,QAASC,GAAYX,GACrBuD,MAAQrJ,aANL,cAAA6L,EAAAnF,OAAA,SAAAmF,EAAAlF,MAAA,wBAAAkF,EAAAjF,SAAAgF,kEAUA,SAAA2C,EAA0BkY,EAAQD,EAAU3gB,EAAUC,GAAtD,OAAAC,EAAAnG,EAAAoG,KAAA,SAAAyI,GAAA,cAAAA,EAAAvI,KAAAuI,EAAAtI,MAAA,cAAAsI,EAAAtI,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAG,8BAAA1F,OAAgC4lB,EAAhC,WAAA5lB,OAAkD6lB,GACrDlgB,OAAM,SACNC,QAASC,GAAYX,KALlB,cAAA2I,EAAA/H,OAAA,SAAA+H,EAAA9H,MAAA,wBAAA8H,EAAA7H,SAAA2H,6BASP,IAAM9H,GAAc,SAACX,GAAD,OAAWA,GAAUqB,cAAA,UAAAvG,OAA2BwG,oBCmDrDsc,IA7Fbpc,OACEof,kBACAC,kBAAmB,EACnBC,YAAa,EACbL,SAAU,GACVM,YAAa,GACbjY,SAAS,GAEX5G,WACE8e,mBAAoB,SAACxf,EAAOzH,GAC1ByH,EAAMyf,eAAiBlnB,GAEzBiP,YAAa,SAACxH,EAAOgF,GACnBhF,EAAMsH,QAAUtC,GAElB0a,SAAU,SAAC1f,EAAOsD,GAChBtD,EAAMsf,YAAchc,GAEtBqc,YAAa,SAAC3f,EAAOoc,GACnBpc,EAAMof,eAAiBhD,GAEzBwD,kBAAmB,SAAC5f,EAAO2F,GACzB3F,EAAMqf,kBAAoB1Z,GAE5Bka,mBAAoB,SAAC7f,EAAOiR,GAC1BjR,EAAMuf,YAActO,IAGxB9P,SACQ2e,kBADC,eAAAC,EAAAre,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAArD,EAAA+C,EAC6C2e,GAD7C,IAAAze,EAAAM,EAAA7B,EAAAigB,EAAA,OAAAxhB,EAAAnG,EAAAoG,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OACmB0C,EADnBF,EACmBE,OAAQM,EAD3BR,EAC2BQ,QAAS7B,EADpCqB,EACoCrB,MACzC6e,GAAYmB,EAAane,EAAQtD,SAAUsD,EAAQrD,OAE7CyhB,EAAiBjgB,EAAMof,eAAe1lB,IAAI,SAAAwmB,GAE9C,OAD0BF,EAAYtmB,IAAI,SAAA4H,GAAA,OAAAA,EAAG/I,KACpBojB,SAASuE,EAAO3nB,IAAlCqL,OAA6Csc,GAAQlgB,MAAOggB,EAAY,GAAGhgB,QAAUkgB,IAG9F3e,EAAO,cAAe0e,GATjB,wBAAAthB,EAAAW,SAAAhB,MAAA,gBAAAJ,EAAAC,GAAA,OAAA4hB,EAAA1hB,MAAAZ,KAAAzE,YAAA,GAWPmnB,oBAXO,SAAAve,IAYLL,EAD8BK,EAAVL,QACb,mBAEH6e,aAdC,eAAAC,EAAA3e,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAAhC,EAAAuC,EAcwCoB,GAdxC,IAAA/B,EAAAM,EAAA7B,EAAAoC,EAAAL,EAAA,OAAAtD,EAAAnG,EAAAoG,KAAA,SAAAkB,GAAA,cAAAA,EAAAhB,KAAAgB,EAAAf,MAAA,cAcc0C,EAddW,EAccX,OAAQM,EAdtBK,EAcsBL,QAAS7B,EAd/BkC,EAc+BlC,MACpCuB,EAAO,eAAe,GAfjB3B,EAAAf,KAAA,EAgBkBkgB,GAAa/e,EAAMuf,YAAajc,EAAMtD,EAAMif,SAAUpd,EAAQtD,SAAUsD,EAAQrD,OAhBlG,OAAA4D,EAAAxC,EAAAP,KAgBG0C,EAhBHK,EAgBGL,KAERR,EAAO,cAAeQ,EAAKqa,SAC3B7a,EAAO,oBAAqBQ,EAAK4D,OACjCpE,EAAO,WAAY+B,GACnB/B,EAAO,eAAe,GArBjB,yBAAA3B,EAAAN,SAAAK,MAAA,gBAAAH,EAAAC,GAAA,OAAA4gB,EAAAhiB,MAAAZ,KAAAzE,YAAA,GAuBPsnB,UAvBO,SAAAhe,EAuBe2O,IACpB1P,EAD4Be,EAAlBf,QACH,qBAAsB0P,IAE/BsP,iBA1BO,SAAA/d,EAAAE,GA0BwE,IAA5DnB,EAA4DiB,EAA5DjB,OAAQM,EAAoDW,EAApDX,QAAS7B,EAA2CwC,EAA3CxC,MAAOwgB,EAAoChe,EAApCge,UAAe9nB,EAAqBgK,EAArBhK,QAASwmB,EAAYxc,EAAZwc,UD/BhE,SAAPzY,EAAAC,EAAAG,EAAAC,GAAA2Z,GAAApiB,MAAAZ,KAAAzE,WCgCM0nB,CAAWhoB,EAASwmB,EAAUrd,EAAQtD,SAAUsD,EAAQrD,OAExD,IAAMmiB,GACJC,MACEhV,OAAQ4U,EAAUI,KAAKhV,OACvBiV,SAAUL,EAAUI,KAAKvjB,KACzB9E,GAAIioB,EAAUI,KAAKroB,IAErBG,QAASA,EACTooB,YAAY,IAAIjU,MAAOkU,WAWzBxf,EAAO,cARgBvB,EAAMof,eAAe1lB,IAAI,SAAAwmB,GAK9C,OAJIA,EAAO3nB,KAAO2mB,IAChBgB,EAAOc,SAAP1nB,OAAAiQ,IAAmB2W,EAAOc,QAAOL,KAG5BT,MAKXe,iBAjDO,SAAAre,EAAAse,GAiD4D,IAAhD3f,EAAgDqB,EAAhDrB,OAAQM,EAAwCe,EAAxCf,QAAS7B,EAA+B4C,EAA/B5C,MAAWmf,EAAoB+B,EAApB/B,OAAQD,EAAYgC,EAAZhC,UD5CpD,SAAPnY,EAAAoa,EAAAC,EAAAC,GAAAC,GAAAjjB,MAAAZ,KAAAzE,WC6CMuoB,CAAWpC,EAAQD,EAAUrd,EAAQtD,SAAUsD,EAAQrD,OAUvD+C,EAAO,cARgBvB,EAAMof,eAAe1lB,IAAI,SAAAwmB,GAK9C,OAJIA,EAAO3nB,KAAO2mB,IAChBgB,EAAOc,MAAQd,EAAOc,MAAM/P,OAAO,SAAAuQ,GAAI,OAAIA,EAAKjpB,KAAO4mB,KAGlDe,wDCpFR,SAAeuB,GAAtBvjB,EAAAC,GAAA,OAAAujB,GAAArjB,MAAAZ,KAAAzE,gDAAO,SAAAsF,EAAgCC,EAAUC,GAA1C,OAAAC,EAAAnG,EAAAoG,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAG,yCACHC,OAAQ,MACRC,QAASC,GAAYX,KALlB,cAAAG,EAAAS,OAAA,SAAAT,EAAAU,MAAA,wBAAAV,EAAAW,SAAAhB,6BASA,SAAeqjB,GAAtBniB,EAAAC,GAAA,OAAAmiB,GAAAvjB,MAAAZ,KAAAzE,gDAAO,SAAA2G,EAA6BpB,EAAUC,GAAvC,OAAAC,EAAAnG,EAAAoG,KAAA,SAAAkB,GAAA,cAAAA,EAAAhB,KAAAgB,EAAAf,MAAA,cAAAe,EAAAf,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAG,4BACHC,OAAQ,MACRC,QAASC,GAAYX,KALlB,cAAAoB,EAAAR,OAAA,SAAAQ,EAAAP,MAAA,wBAAAO,EAAAN,SAAAK,6BASA,SAAekiB,GAAtB7d,EAAAG,EAAAC,GAAA,OAAA0d,GAAAzjB,MAAAZ,KAAAzE,gDAAO,SAAAsL,EAA8Byd,EAASxjB,EAAUC,GAAjD,OAAAC,EAAAnG,EAAAoG,KAAA,SAAA6F,GAAA,cAAAA,EAAA3F,KAAA2F,EAAA1F,MAAA,cAAA0F,EAAA1F,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAG,4BACHC,OAAQ,OACRC,QAASC,GAAYX,GACrBuD,MAAQggB,aANL,cAAAxd,EAAAnF,OAAA,SAAAmF,EAAAlF,MAAA,wBAAAkF,EAAAjF,SAAAgF,6BAUA,SAAe0d,GAAtB3b,EAAAI,EAAAC,GAAA,OAAAub,GAAA5jB,MAAAZ,KAAAzE,gDAAO,SAAAiO,EAA8B8a,EAASxjB,EAAUC,GAAjD,OAAAC,EAAAnG,EAAAoG,KAAA,SAAAyI,GAAA,cAAAA,EAAAvI,KAAAuI,EAAAtI,MAAA,cAAAsI,EAAAtI,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAG,4BACHC,OAAQ,OACRC,QAASC,GAAYX,GACrBuD,MAAQggB,aANL,cAAA5a,EAAA/H,OAAA,SAAA+H,EAAA9H,MAAA,wBAAA8H,EAAA7H,SAAA2H,6BAUP,IAAM9H,GAAc,SAACX,GAAD,OAAWA,GAAUqB,cAAA,UAAAvG,OAA2BwG,gXCtCpE,IAkIe8b,IAjIb5b,OACEkiB,UAAW,WACXC,gBAAgB,EAChBC,MACAC,eACA/a,SAAS,EACTgb,cACA1G,YACA2G,oBAEF7hB,WACE8hB,uBAAwB,SAACxiB,GACvBA,EAAMuiB,oBAERE,4BAA6B,SAACziB,EAADqB,GAAoC,IAA1BqhB,EAA0BrhB,EAA1BqhB,MAAO7U,EAAmBxM,EAAnBwM,IAAK8U,EAActhB,EAAdshB,QACjD,GAAIjf,IAAEtD,IAAIJ,EAAMuiB,iBAAkBG,EAAO7U,EAAK8U,EAAQ,KAAM,KAAAC,EACN5iB,EAAMuiB,gBAAgBG,GAAO7U,GAAjD0U,GAD0BK,EACjDD,EAAQ,IADyCE,KAAAD,GACjDD,EAAQ,IADyCjpB,IAAAopB,MAE1D9iB,EAAMuiB,gBAAkBA,IAG5BQ,eAAgB,SAAC/iB,EAAOgjB,GACtBhjB,EAAMkiB,UAAYc,GAEpBC,gBAAiB,SAACjjB,EAAO+B,GACvB/B,EAAMqiB,YAActgB,GAEtByF,YAAa,SAACxH,EAAOgF,GACnBhF,EAAMsH,QAAUtC,GAElBke,WAAY,SAACljB,EAAOmjB,GAClBnjB,EAAMsiB,WAAaa,GAErBC,aAAc,SAACpjB,EAAO+B,GACpB,IAAMshB,EAActhB,EAAKuhB,OAAO,SAACC,EAADjiB,GAAgC,IAAxBohB,EAAwBphB,EAAxBohB,MAAO7U,EAAiBvM,EAAjBuM,IAAKC,EAAYxM,EAAZwM,MAC5C0V,EAAcC,aAAe5V,EAAKC,IAClCA,MAAO4V,aAAe7V,EAAKC,IAC7B6V,aAAY7V,EAAOD,GAEvB,OADA0V,EAAIb,GAASa,EAAIb,GAAJ9e,OAAkB2f,EAAIb,GAAtBkB,QAA+B/V,EAAM2V,IAArCI,QAAwD/V,EAAM2V,GACpED,OAGHM,EAAgB9hB,EAAKuhB,OAAO,SAACC,EAADrhB,GAA6B,IAArBwgB,EAAqBxgB,EAArBwgB,MAAO7U,EAAc3L,EAAd2L,IAAKuU,EAASlgB,EAATkgB,GAIpD,OAHIA,IACFmB,EAAIb,GAASa,EAAIb,GAAJ9e,OAAkB2f,EAAIb,GAAtBkB,QAA+B/V,EAAMuU,IAArCwB,QAA+C/V,EAAMuU,IAE7DmB,OAGTvjB,EAAM4b,SAAWyH,EACjBrjB,EAAMoiB,GAAKyB,GAEbC,YAAa,SAAC9jB,EAAOgF,GACnBhF,EAAMmiB,eAAiBnd,GAEzB+e,gBAAiB,SAAC/jB,EAADsC,GAA+C,IAArCogB,EAAqCpgB,EAArCogB,MAAO7U,EAA8BvL,EAA9BuL,IAAKmW,EAAyB1hB,EAAzB0hB,MAAOlW,EAAkBxL,EAAlBwL,MAAOnF,EAAWrG,EAAXqG,KAC7Csb,GAAkBjkB,EAAMuiB,gBAAgBG,IAAmB,0BAAR7U,GAA6C,aAAVmW,EAArEJ,QAChB/V,EADgB+V,QACPI,GAASrb,EAAMmF,KADR8V,QAEhB/V,EAFgBjK,OAEL5D,EAAMuiB,gBAAgBG,GAAO7U,GAFxB+V,QAEoCI,GAASrb,EAAMmF,MAC1E9N,EAAMuiB,gBAAgBG,GAAtB9e,OAAoC5D,EAAMuiB,gBAAgBG,GAAWuB,IAEvEC,aAAc,SAAClkB,EAAD4C,GAAyC,IAA/B8f,EAA+B9f,EAA/B8f,MAAO7U,EAAwBjL,EAAxBiL,IAAKmW,EAAmBphB,EAAnBohB,MAAOlW,EAAYlL,EAAZkL,MACnCqW,EAAuB,0BAARtW,GAA6C,aAAVmW,EAAnCJ,QACd/V,EADc+V,QACLI,EAAQlW,IADH8V,QAEd/V,EAFcjK,OAEH5D,EAAM4b,SAAS8G,GAAO7U,GAFnB+V,QAE+BI,EAAQlW,KAC5D9N,EAAM4b,SAAS8G,GAAf9e,OAA6B5D,EAAM4b,SAAS8G,GAAWyB,KAG3DhjB,SACQijB,cADC,eAAAC,EAAA3iB,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAArD,EAAAgmB,GAAA,IAAA/iB,EAAAM,EAAAC,EAAAugB,EAAAc,EAAA,OAAA1kB,EAAAnG,EAAAoG,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cACe0C,EADf+iB,EACe/iB,OAAQM,EADvByiB,EACuBziB,QAC5BN,EAAO,eAAe,GAFjB5C,EAAAC,KAAA,EAAAD,EAAAE,KAAA,EAIoB8iB,GAAc9f,EAAQtD,SAAUsD,EAAQrD,OAJ5D,cAIGsD,EAJHnD,EAAAU,KAAAV,EAAAE,KAAA,EAKuB4iB,GAAiB5f,EAAQtD,SAAUsD,EAAQrD,OALlE,OAKG6jB,EALH1jB,EAAAU,KAMHkC,EAAO,kBAAmB8gB,EAAYtgB,MAChCohB,EAAeoB,aAAiBlC,EAAYtgB,MAClDR,EAAO,aAAc4hB,GACrB5hB,EAAO,eAAgBO,EAASC,KAAKggB,SATlCpjB,EAAAE,KAAA,wBAAAF,EAAAC,KAAA,GAAAD,EAAAyJ,GAAAzJ,EAAA,SAWH4C,EAAO,eAAe,GACtBA,EAAO,iBAAkB,UACzBA,EAAO,eAAe,GAbnB5C,EAAAS,OAAA,kBAgBLmC,EAAO,eAAe,GACtBA,EAAO,eAAe,GAjBjB,yBAAA5C,EAAAW,SAAAhB,EAAA,kCAAAJ,GAAA,OAAAmmB,EAAAhmB,MAAAZ,KAAAzE,YAAA,GAmBDwrB,cAnBC,eAAAC,EAAA/iB,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAAhC,EAAA+kB,EAmBkC3C,GAnBlC,IAAAxgB,EAAAM,EAAAC,EAAA6iB,EAAAjC,EAAA7U,EAAA8U,EAAA,OAAAlkB,EAAAnG,EAAAoG,KAAA,SAAAkB,GAAA,cAAAA,EAAAhB,KAAAgB,EAAAf,MAAA,cAmBe0C,EAnBfmjB,EAmBenjB,OAAQM,EAnBvB6iB,EAmBuB7iB,QAnBvBjC,EAAAf,KAAA,EAoBCmjB,GAAeD,EAASlgB,EAAQtD,SAAUsD,EAAQrD,OApBnD,cAAAoB,EAAAf,KAAA,EAqBkB8iB,GAAc9f,EAAQtD,SAAUsD,EAAQrD,OArB1D,OAqBCsD,EArBDlC,EAAAP,KAAAslB,EAsB2B5C,EAAQ,GAAhCW,EAtBHiC,EAsBGjC,MAAO7U,EAtBV8W,EAsBU9W,IAAK8U,EAtBfgC,EAsBehC,QACpBphB,EAAO,eAAgBO,EAASC,KAAKggB,SACrCxgB,EAAO,gBAAiBO,EAASC,KAAK6iB,aACtCrjB,EAAO,+BAAiCmhB,QAAO7U,MAAK8U,QAASA,QAzBxD,yBAAA/iB,EAAAN,SAAAK,MAAA,gBAAAxB,EAAAqB,GAAA,OAAAilB,EAAApmB,MAAAZ,KAAAzE,YAAA,GA2BP6rB,aA3BO,SAAAC,EA2BkB9B,IACvBzhB,EAD4BujB,EAAfvjB,QACN,iBAAkByhB,IAErB+B,cA9BC,eAAAC,EAAAtjB,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAA2C,EAAA2gB,GAAA,IAAApjB,EAAAN,EAAAvB,EAAAklB,EAAAnD,EAAAjgB,EAAA,OAAArD,EAAAnG,EAAAoG,KAAA,SAAA6F,GAAA,cAAAA,EAAA3F,KAAA2F,EAAA1F,MAAA,cA8BegD,EA9BfojB,EA8BepjB,QAASN,EA9BxB0jB,EA8BwB1jB,OAAQvB,EA9BhCilB,EA8BgCjlB,MAC/BklB,EAAcC,aAAmBnlB,EAAM4b,SAAU5b,EAAMuiB,gBAAiBviB,EAAMqiB,aAC9EN,EAAU/kB,OAAOD,KAAKmoB,GAAa5B,OAAO,SAACC,EAAKb,GACpD,SAAAppB,OAAAiQ,IAAWga,GAAXha,IAAmB6b,aAAoB1C,EAAOwC,EAAYxC,GAAQ1iB,EAAM4b,iBAjCrErX,EAAA1F,KAAA,EAoCCgjB,GAAeE,EAASlgB,EAAQtD,SAAUsD,EAAQrD,OApCnD,cAAA+F,EAAA1F,KAAA,EAqCkB8iB,GAAc9f,EAAQtD,SAAUsD,EAAQrD,OArC1D,OAqCCsD,EArCDyC,EAAAlF,KAsCLkC,EAAO,eAAgBO,EAASC,KAAKggB,SACrCxgB,EAAO,gBAAiBO,EAASC,KAAK6iB,aACtCrjB,EAAO,0BAxCF,yBAAAgD,EAAAjF,SAAAgF,MAAA,gBAAA7E,GAAA,OAAAulB,EAAA3mB,MAAAZ,KAAAzE,YAAA,GA0CPqsB,eA1CO,SAAAC,EAAAC,GA0CwD,IAA9ChkB,EAA8C+jB,EAA9C/jB,OAAYmhB,EAAkC6C,EAAlC7C,MAAO7U,EAA2B0X,EAA3B1X,IAAKmW,EAAsBuB,EAAtBvB,MAAOlW,EAAeyX,EAAfzX,MAAOnF,EAAQ4c,EAAR5c,KAEjDpH,EAAO,kBADXsM,GACgC6U,QAAO7U,MAAKmW,QAAOlW,QAAOnF,SAC1B+Z,QAAO7U,IAAKmW,EAAOA,MAAO,SAAUlW,QAAOnF,UAEvE6c,YA/CC,eAAAC,EAAA/jB,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAAsF,EAAAye,EAAAC,GAAA,IAAApkB,EAAAM,EAAA7B,EAAA0iB,EAAA7U,EAAAmW,EAAAlW,EAAA6U,EAAAiD,EAAA,OAAAnnB,EAAAnG,EAAAoG,KAAA,SAAAyI,GAAA,cAAAA,EAAAvI,KAAAuI,EAAAtI,MAAA,UA+Ca0C,EA/CbmkB,EA+CankB,OAAQM,EA/CrB6jB,EA+CqB7jB,QAAS7B,EA/C9B0lB,EA+C8B1lB,MAAW0iB,EA/CzCiD,EA+CyCjD,MAAO7U,EA/ChD8X,EA+CgD9X,IAAKmW,EA/CrD2B,EA+CqD3B,MAAOlW,EA/C5D6X,EA+C4D7X,MACrD,0BAARD,GAA6C,aAAVmW,EAhDlC,CAAA7c,EAAAtI,KAAA,eAiDG8jB,EAAU3lB,OAAOD,KAAKiD,EAAM4b,SAAS8G,GAAO7U,IAAMoD,OAAO,SAAA4U,GAAE,MAAW,aAAPA,IAjDlE1e,EAAAtI,KAAA,EAkDGmjB,KAAkBU,QAAO7U,MAAKiY,QAAQ,EAAMnD,YAAY9gB,EAAQtD,SAAUsD,EAAQrD,OAlDrF,OAAA2I,EAAAtI,KAAA,mBAmDc,mBAARgP,GAAsC,cAAVmW,EAnDlC,CAAA7c,EAAAtI,KAAA,gBAoDG+mB,EAAuB,4BAAV9X,EAAsC,uBAAyB,0BApD/E3G,EAAAtI,KAAA,GAqDGmjB,KAAkBU,QAAO7U,IAAK+X,EAAYE,QAAQ,IAASjkB,EAAQtD,SAAUsD,EAAQrD,OArDxF,QAwDD+C,EAAO,eADXsM,GAC6B6U,QAAO7U,MAAKmW,QAAOlW,UACnB4U,QAAO7U,IAAKmW,EAAOA,MAAO,QAASlW,UAzD3D,yBAAA3G,EAAA7H,SAAA2H,MAAA,gBAAAjD,EAAAG,GAAA,OAAAshB,EAAApnB,MAAAZ,KAAAzE,YAAA,KCpEJ,SAAe+sB,GAAtB7nB,EAAAC,EAAAqB,EAAAC,EAAAuE,GAAA,OAAAgiB,GAAA3nB,MAAAZ,KAAAzE,gDAAO,SAAAsF,EAAiC/F,EAAI0tB,EAAWC,EAAY3nB,EAAUC,GAAtE,OAAAC,EAAAnG,EAAAoG,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAG,+BAAA1F,OAAiCf,GACpC0G,OAAQ,MACRC,QAASC,GAAYX,GACrBuD,MAAQkkB,YAAWC,gBANhB,cAAAvnB,EAAAS,OAAA,SAAAT,EAAAU,MAAA,wBAAAV,EAAAW,SAAAhB,6BAUA,SAAe6nB,GAAtBhiB,EAAAC,EAAAiC,GAAA,OAAA+f,GAAA/nB,MAAAZ,KAAAzE,gDAAO,SAAA2G,EAA4BpH,EAAIgG,EAAUC,GAA1C,OAAAC,EAAAnG,EAAAoG,KAAA,SAAAkB,GAAA,cAAAA,EAAAhB,KAAAgB,EAAAf,MAAA,cAAAe,EAAAf,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAG,+BAAA1F,OAAiCf,GACpC0G,OAAQ,SACRC,QAASC,GAAYX,KALlB,cAAAoB,EAAAR,OAAA,SAAAQ,EAAAP,MAAA,wBAAAO,EAAAN,SAAAK,6BASA,SAAe0mB,GAAtB5f,EAAAC,EAAAG,GAAA,OAAAyf,GAAAjoB,MAAAZ,KAAAzE,gDAAO,SAAAsL,EAA2B/L,EAAIgG,EAAUC,GAAzC,OAAAC,EAAAnG,EAAAoG,KAAA,SAAA6F,GAAA,cAAAA,EAAA3F,KAAA2F,EAAA1F,MAAA,cAAA0F,EAAA1F,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAG,+BAAA1F,OAAiCf,GACpC0G,OAAQ,MACRC,QAASC,GAAYX,KALlB,cAAA+F,EAAAnF,OAAA,SAAAmF,EAAAlF,MAAA,wBAAAkF,EAAAjF,SAAAgF,6BASA,SAAeiiB,GAAtBzf,GAAA,OAAA0f,GAAAnoB,MAAAZ,KAAAzE,gDAAO,SAAAiO,EAAA5F,GAAA,IAAAolB,EAAAC,EAAAnoB,EAAAC,EAAAygB,EAAA3b,EAAA,OAAA7E,EAAAnG,EAAAoG,KAAA,SAAAyI,GAAA,cAAAA,EAAAvI,KAAAuI,EAAAtI,MAAA,cAA+B4nB,EAA/BplB,EAA+BolB,QAASC,EAAxCrlB,EAAwCqlB,UAAWnoB,EAAnD8C,EAAmD9C,SAAUC,EAA7D6C,EAA6D7C,MAAOygB,EAApE5d,EAAoE4d,SAAU3b,EAA9EjC,EAA8EiC,KAA9E6D,EAAAtI,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAG,uCAAA1F,OAAyCmtB,EAAzC,gBAAAntB,OAA+DotB,EAA/D,UAAAptB,OAAiFgK,EAAjF,eAAAhK,OAAmG2lB,GACtGhgB,OAAQ,MACRC,QAASC,GAAYX,KALlB,cAAA2I,EAAA/H,OAAA,SAAA+H,EAAA9H,MAAA,wBAAA8H,EAAA7H,SAAA2H,6BASA,SAAe0f,GAAtB5f,EAAAoa,EAAAC,GAAA,OAAAwF,GAAAvoB,MAAAZ,KAAAzE,gDAAO,SAAA6tB,EAAkCC,EAAUvoB,EAAUC,GAAtD,OAAAC,EAAAnG,EAAAoG,KAAA,SAAAqoB,GAAA,cAAAA,EAAAnoB,KAAAmoB,EAAAloB,MAAA,cAAAkoB,EAAAloB,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAK8nB,EAAQ,qCAAAxtB,OAAwCwtB,GAAxC,2BACb7nB,OAAQ,MACRC,QAASC,GAAYX,KALlB,cAAAuoB,EAAA3nB,OAAA,SAAA2nB,EAAA1nB,MAAA,wBAAA0nB,EAAAznB,SAAAunB,6BASA,SAAeG,GAAtB3F,GAAA,OAAA4F,GAAA5oB,MAAAZ,KAAAzE,gDAAO,SAAAkuB,EAAA5lB,GAAA,IAAAwlB,EAAAvoB,EAAAC,EAAAygB,EAAA3b,EAAA,OAAA7E,EAAAnG,EAAAoG,KAAA,SAAAyoB,GAAA,cAAAA,EAAAvoB,KAAAuoB,EAAAtoB,MAAA,cAAyCioB,EAAzCxlB,EAAyCwlB,SAAUvoB,EAAnD+C,EAAmD/C,SAAUC,EAA7D8C,EAA6D9C,MAAOygB,EAApE3d,EAAoE2d,SAAU3b,EAA9EhC,EAA8EgC,KAA9E6jB,EAAAtoB,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAG,gCAAA1F,OAAkCwtB,EAAlC,mBAAAxtB,OAA4DgK,EAA5D,eAAAhK,OAA8E2lB,GACjFhgB,OAAQ,MACRC,QAASC,GAAYX,KALlB,cAAA2oB,EAAA/nB,OAAA,SAAA+nB,EAAA9nB,MAAA,wBAAA8nB,EAAA7nB,SAAA4nB,6BASP,IAAM/nB,GAAc,SAACX,GAAD,OAAWA,GAAUqB,cAAA,UAAAvG,OAA2BwG,oBCuIrDkF,IA/LbhF,OACEonB,iBACAC,mBACA/f,SAAS,EACTggB,gBACAC,oBACEC,iBAAkB,GAClBC,WAAW,EACXC,aAAa,EACbpkB,KAAM,EACN2b,SAAU,GACV0I,eAAe,EACfC,WAAW,GAEbC,qBAEFnnB,WACEonB,8BAA+B,SAAC9nB,EAAO8N,GACrC9N,EAAMunB,mBAAmBG,YAAc5Z,GAEzCia,4BAA6B,SAAC/nB,EAAO8N,GACnC9N,EAAMunB,mBAAmBE,UAAY3Z,GAEvCka,YAAa,SAAChoB,EAAOsD,GACnBtD,EAAMunB,mBAAmBjkB,KAAOA,GAElC2kB,yBAA0B,SAACjoB,EAAO8mB,GAChC9mB,EAAMunB,mBAAmBC,iBAAmBV,GAE9CoB,WAAY,SAACloB,EAAOgF,GAClBhF,EAAMonB,cAAgBpiB,GAExBmjB,yBAA0B,SAACnoB,EAAOkc,GAChClc,EAAMqnB,gBAAkBnL,GAE1BkM,cAAe,SAACpoB,EAAOkc,GACrBlc,EAAMqnB,mBAAN/tB,OAAAiQ,IAA4BvJ,EAAMqnB,iBAAlC9d,IAAsD2S,KAExDmM,eAAgB,SAACroB,EAAOgF,GACtBhF,EAAMunB,mBAAmBK,UAAY5iB,GAEvCsjB,mBAAoB,SAACtoB,EAAOgF,GAC1BhF,EAAMunB,mBAAmBI,cAAgB3iB,GAE3CwC,YAAa,SAACxH,EAAOgF,GACnBhF,EAAMsH,QAAUtC,GAElBujB,sBAAuB,SAACvoB,EAAOkmB,GAC7BlmB,EAAM6nB,iBAAmB3B,GAE3BsC,kBAAmB,SAACxoB,EAAO4gB,GACzB5gB,EAAMsnB,aAAe1G,IAGzBzf,SACQsnB,kBADC,eAAAC,EAAAhnB,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAArD,EAAA+C,EAAAC,GAAA,IAAA2G,EAAApG,EAAA8mB,EAAAC,EAAA1C,EAAA2C,EAAAC,EAAArC,EAAAO,EAAA,OAAAvoB,EAAAnG,EAAAoG,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cACmBoJ,EADnB5G,EACmB4G,SAAUpG,EAD7BR,EAC6BQ,QAAa8mB,EAD1CrnB,EAC0CqnB,SAAUC,EADpDtnB,EACoDsnB,YAAa1C,EADjE5kB,EACiE4kB,WAAY2C,EAD7EvnB,EAC6EunB,kBAAmBC,EADhGxnB,EACgGwnB,OAAQrC,EADxGnlB,EACwGmlB,QAASO,EADjH1lB,EACiH0lB,wBADjHroB,EAAAE,KAAA,EAECknB,GAAkB4C,EAAUC,EAAa1C,EAAYrkB,EAAQtD,SAAUsD,EAAQrD,OAFhF,OAGqB,IAAtBqqB,EACF5gB,EAAS,eAAgB4gB,GAChBC,EAAO7vB,OAAS,EACzBgP,EAAS,qBAAuB6gB,SAAQrC,YAC/BO,EACT/e,EAAS,2BAETA,EAAS,iCAAkC0gB,GAVxC,wBAAAhqB,EAAAW,SAAAhB,MAAA,gBAAAJ,EAAAC,GAAA,OAAAuqB,EAAArqB,MAAAZ,KAAAzE,YAAA,GAaP+vB,WAbO,SAAAnnB,GAagB,IAAVL,EAAUK,EAAVL,OACXA,EAAO,2BAA4B,IACnCA,EAAO,+BACPA,EAAO,+BAA+B,GACtCA,EAAO,iCAAiC,GACxCA,EAAO,kBAAkB,GACzBA,EAAO,cAAe,IAElBynB,aArBC,eAAAC,EAAAvnB,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAAhC,EAAAuC,EAAAE,GAAA,IAAA6F,EAAApG,EAAA8mB,EAAAE,EAAAC,EAAArC,EAAAO,EAAA,OAAAvoB,EAAAnG,EAAAoG,KAAA,SAAAkB,GAAA,cAAAA,EAAAhB,KAAAgB,EAAAf,MAAA,cAqBcoJ,EArBd/F,EAqBc+F,SAAUpG,EArBxBK,EAqBwBL,QAAa8mB,EArBrCvmB,EAqBqCumB,SAAUE,EArB/CzmB,EAqB+CymB,kBAAmBC,EArBlE1mB,EAqBkE0mB,OAAQrC,EArB1ErkB,EAqB0EqkB,QAASO,EArBnF5kB,EAqBmF4kB,wBArBnFpnB,EAAAf,KAAA,EAsBCsnB,GAAawC,EAAU9mB,EAAQtD,SAAUsD,EAAQrD,OAtBlD,OAuBqB,IAAtBqqB,EACF5gB,EAAS,eAAgB4gB,GAChBC,EAAO7vB,OAAS,EACzBgP,EAAS,qBAAuB6gB,SAAQrC,YAC/BO,GACT/e,EAAS,2BA5BN,wBAAArI,EAAAN,SAAAK,MAAA,gBAAAH,EAAAC,GAAA,OAAAwpB,EAAA5qB,MAAAZ,KAAAzE,YAAA,GA+BDkwB,YA/BC,eAAAC,EAAAznB,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAA2C,EAAAhC,EA+BiD/J,GA/BjD,IAAAgJ,EAAA0G,EAAApG,EAAA7B,EAAAgF,EAAA,OAAAvG,EAAAnG,EAAAoG,KAAA,SAAA6F,GAAA,cAAAA,EAAA3F,KAAA2F,EAAA1F,MAAA,cA+Ba0C,EA/Bbe,EA+Baf,OAAQ0G,EA/BrB3F,EA+BqB2F,SAAUpG,EA/B/BS,EA+B+BT,QAAS7B,EA/BxCsC,EA+BwCtC,MAC7CuB,EAAO,eAAe,GAhCjBgD,EAAA1F,KAAA,EAiCgBwnB,GAAY9tB,EAAIsJ,EAAQtD,SAAUsD,EAAQrD,OAjC1D,OAiCCwG,EAjCDT,EAAAlF,KAmCLkC,EAAO,aAAcyD,EAAOjD,MAC5BR,EAAO,oBAAqByD,EAAOjD,KAAKqnB,SACxC7nB,EAAO,eAAe,GACtB0G,EAAS,qBAAuB6gB,OAAQ9oB,EAAMonB,cAAcgC,QAAQ7wB,GAAIkuB,SAAS,IAtC5E,wBAAAliB,EAAAjF,SAAAgF,MAAA,gBAAAN,EAAAG,GAAA,OAAAglB,EAAA9qB,MAAAZ,KAAAzE,YAAA,GAwCPqwB,+BAxCO,SAAA7mB,EAwC8DjK,GAAI,IAAxCgJ,EAAwCiB,EAAxCjB,OAAQ0G,EAAgCzF,EAAhCyF,SAAUpG,EAAsBW,EAAtBX,QAAsBW,EAAbxC,MAC1DuB,EAAO,eAAe,GACtB8kB,GAAY9tB,EAAIsJ,EAAQtD,SAAUsD,EAAQrD,OACvC2M,KAAK,SAAAnG,GAAM,OAAIiD,EAAS,YAAajD,EAAOjD,QAC/CR,EAAO,eAAe,IAElB+nB,mBA9CC,eAAAC,EAAA7nB,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAAsF,EAAAvE,EA8CuCokB,GA9CvC,IAAAvlB,EAAAM,EAAAe,EAAAb,EAAA,OAAAtD,EAAAnG,EAAAoG,KAAA,SAAAyI,GAAA,cAAAA,EAAAvI,KAAAuI,EAAAtI,MAAA,cA8CoB0C,EA9CpBmB,EA8CoBnB,OAAQM,EA9C5Ba,EA8C4Bb,QACjCN,EAAO,eAAe,GA/CjB4F,EAAAtI,KAAA,EAgDkB8nB,GAAmBG,EAAUjlB,EAAQtD,SAAUsD,EAAQrD,OAhDzE,OAAAoE,EAAAuE,EAAA9H,KAgDG0C,EAhDHa,EAgDGb,KACRR,EAAO,wBAAyBQ,EAAKynB,mBACrCjoB,EAAO,eAAe,GAlDjB,wBAAA4F,EAAA7H,SAAA2H,MAAA,gBAAA7C,EAAAiC,GAAA,OAAAkjB,EAAAlrB,MAAAZ,KAAAzE,YAAA,GAoDDywB,wBApDC,eAAAC,EAAAhoB,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAAklB,EAAA3F,GAAA,IAAA3f,EAAA0G,EAAApG,EAAA7B,EAAAwgB,EAAAtE,EAAA,OAAAzd,EAAAnG,EAAAoG,KAAA,SAAAqoB,GAAA,cAAAA,EAAAnoB,KAAAmoB,EAAAloB,MAAA,UAoDyB0C,EApDzB2f,EAoDyB3f,OAAQ0G,EApDjCiZ,EAoDiCjZ,SAAUpG,EApD3Cqf,EAoD2Crf,QAAS7B,EApDpDkhB,EAoDoDlhB,MAAOwgB,EApD3DU,EAoD2DV,UAChEjf,EAAO,eAAe,GACtB0G,EAAS,qBAAsBjI,EAAMunB,mBAAmBC,kBACN,KAA9CxnB,EAAMunB,mBAAmBC,iBAvDxB,CAAAT,EAAAloB,KAAA,QAwDH0C,EAAO,+BAxDJwlB,EAAAloB,KAAA,mBA0DcmB,EAAMunB,mBAAmBC,mBAAqBhH,EAAUI,KAAKriB,SA1D3E,CAAAwoB,EAAAloB,KAAA,gBAAAkoB,EAAAloB,KAAA,GA2DO0nB,IAEJE,QAASzmB,EAAMunB,mBAAmBG,YAClChB,UAAW1mB,EAAMunB,mBAAmBE,UACpClpB,SAAUsD,EAAQtD,SAClBC,MAAOqD,EAAQrD,MACfygB,SAAUjf,EAAMunB,mBAAmBtI,SACnC3b,KAAMtD,EAAMunB,mBAAmBjkB,OAlElC,QAAAyjB,EAAA3e,GAAA2e,EAAA1nB,KAAA0nB,EAAAloB,KAAA,wBAAAkoB,EAAAloB,KAAA,GAoEOmoB,IAEJF,SAAU9mB,EAAMunB,mBAAmBC,iBACnCjpB,SAAUsD,EAAQtD,SAClBC,MAAOqD,EAAQrD,MACfygB,SAAUjf,EAAMunB,mBAAmBtI,SACnC3b,KAAMtD,EAAMunB,mBAAmBjkB,OA1ElC,QAAAyjB,EAAA3e,GAAA2e,EAAA1nB,KAAA,QA0DG6c,EA1DH6K,EAAA3e,GA4EH7G,EAAO,2BAA4B2a,EAASna,MACxCma,EAASna,KAAK9I,OAAS+G,EAAMunB,mBAAmBtI,UAClD1d,EAAO,kBAAkB,GA9ExB,QAiFLA,EAAO,eAAe,GAjFjB,yBAAAwlB,EAAAznB,SAAAunB,MAAA,gBAAApgB,GAAA,OAAAijB,EAAArrB,MAAAZ,KAAAzE,YAAA,GAmFD2wB,4BAnFC,eAAAC,EAAAloB,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAAulB,EAAA2C,GAAA,IAAAtoB,EAAAM,EAAA2e,EAAAxgB,EAAAkc,EAAA,OAAAzd,EAAAnG,EAAAoG,KAAA,SAAAyoB,GAAA,cAAAA,EAAAvoB,KAAAuoB,EAAAtoB,MAAA,UAmF6B0C,EAnF7BsoB,EAmF6BtoB,OAAQM,EAnFrCgoB,EAmFqChoB,QAAS2e,EAnF9CqJ,EAmF8CrJ,UAAWxgB,EAnFzD6pB,EAmFyD7pB,MAC9DuB,EAAO,sBAAsB,GACZvB,EAAMunB,mBAAmBC,mBAAqBhH,EAAUI,KAAKriB,SArFzE,CAAA4oB,EAAAtoB,KAAA,eAAAsoB,EAAAtoB,KAAA,EAsFK0nB,IAEJE,QAASzmB,EAAMunB,mBAAmBG,YAClChB,UAAW1mB,EAAMunB,mBAAmBE,UACpClpB,SAAUsD,EAAQtD,SAClBC,MAAOqD,EAAQrD,MACfygB,SAAUjf,EAAMunB,mBAAmBtI,SACnC3b,KAAMtD,EAAMunB,mBAAmBjkB,OA7FhC,OAAA6jB,EAAA/e,GAAA+e,EAAA9nB,KAAA8nB,EAAAtoB,KAAA,uBAAAsoB,EAAAtoB,KAAA,GA+FKmoB,IAEJF,SAAU9mB,EAAMunB,mBAAmBC,iBACnCjpB,SAAUsD,EAAQtD,SAClBC,MAAOqD,EAAQrD,MACfygB,SAAUjf,EAAMunB,mBAAmBtI,SACnC3b,KAAMtD,EAAMunB,mBAAmBjkB,OArGhC,QAAA6jB,EAAA/e,GAAA+e,EAAA9nB,KAAA,QAqFC6c,EArFDiL,EAAA/e,GAuGL7G,EAAO,gBAAiB2a,EAASna,MACjCR,EAAO,sBAAsB,GACzB2a,EAASna,KAAK9I,OAAS+G,EAAMunB,mBAAmBtI,UAClD1d,EAAO,kBAAkB,GA1GtB,yBAAA4lB,EAAA7nB,SAAA4nB,MAAA,gBAAAxgB,GAAA,OAAAkjB,EAAAvrB,MAAAZ,KAAAzE,YAAA,GA6GP8wB,4BA7GO,SAAAxF,EA6G2CxW,GAAO,IAA3BvM,EAA2B+iB,EAA3B/iB,OAAQ0G,EAAmBqc,EAAnBrc,SACpCA,EAAS,mBAAoB,GAC7B1G,EAAO,kBAAkB,GAEzBA,EAAO,gCAAiCuM,GACxC7F,EAAS,4BAEX8hB,0BApHO,SAAArF,EAoHyC5W,GAAO,IAA3BvM,EAA2BmjB,EAA3BnjB,OAAQ0G,EAAmByc,EAAnBzc,SAClCA,EAAS,mBAAoB,GAC7B1G,EAAO,kBAAkB,GAEzBA,EAAO,8BAA+BuM,GACtC7F,EAAS,4BAEX+hB,mBA3HO,SAAAlF,EA2HwBgC,GAAU,IAApBvlB,EAAoBujB,EAApBvjB,OACnBA,EAAO,2BAA4BulB,GACnCvlB,EAAO,kBAAkB,IAE3B0oB,iBA/HO,SAAAhF,EA+HsB3hB,IAC3B/B,EADiC0jB,EAAhB1jB,QACV,cAAe+B,IAExB4mB,UAlIO,SAAA5E,EAkIetgB,GAAQ,IAAlBzD,EAAkB+jB,EAAlB/jB,OACVA,EAAO,aAAcyD,GACrBzD,EAAO,oBAAqByD,EAAOokB,oCC7B1BtT,IA/Jb9V,OACE6V,gBACAsE,gBAEFzZ,WACEypB,iBAAkB,SAACnqB,EAAOoY,GACpBpY,EAAM6V,aAAaiD,KAAK,SAAAsR,GAAC,OAAIA,EAAE9b,OAAS8J,EAAK9J,QACjDtO,EAAM6V,aAAa5S,KACjBjG,OAAOqtB,UAAWjS,GAChBjM,MAAOiM,EAAKxG,KAAKzF,OAAS,cAIhCme,gBAAiB,SAACtqB,EAAOoY,GACnBpY,EAAMma,YAAYwB,SAASvD,EAAK/a,OAC/B+a,EAAKxG,KAAKoK,SACbhc,EAAMma,YAAYlX,KAAKmV,EAAK/a,OAIhCktB,iBAAkB,SAACvqB,EAAOoY,GAAS,IAAApB,GAAA,EAAAC,GAAA,EAAAC,OAAAhe,EAAA,IACjC,QAAAie,EAAAC,EAAqBpX,EAAM6V,aAAa2U,UAAxCnT,OAAAC,cAAAN,GAAAG,EAAAC,EAAAvY,QAAA0Y,MAAAP,GAAA,EAAmD,KAAAyT,EAAAC,KAAAvT,EAAArJ,MAAA,GAAvCR,EAAuCmd,EAAA,GACjD,GADiDA,EAAA,GAC3Cnc,OAAS8J,EAAK9J,KAAM,CACxBtO,EAAM6V,aAAa8U,OAAOrd,EAAG,GAC7B,QAJ6B,MAAAkK,GAAAP,GAAA,EAAAC,EAAAM,EAAA,YAAAR,GAAA,MAAAI,EAAAK,QAAAL,EAAAK,SAAA,WAAAR,EAAA,MAAAC,KAQnC0T,gBAAiB,SAAC5qB,EAAOoY,GAAS,IAAAR,GAAA,EAAAC,GAAA,EAAAC,OAAA5e,EAAA,IAChC,QAAA6e,EAAAC,EAAgBhY,EAAMma,YAAtB9C,OAAAC,cAAAM,GAAAG,EAAAC,EAAAnZ,QAAA0Y,MAAAK,GAAA,EAAmC,KAAxBtK,EAAwByK,EAAAjK,MACjC,GAAIR,IAAM8K,EAAK/a,KAAM,CACnB,IAAMsU,EAAQ3R,EAAMma,YAAY0Q,QAAQvd,GACxCtN,EAAMma,YAAYwQ,OAAOhZ,EAAO,GAChC,QAL4B,MAAA6F,GAAAK,GAAA,EAAAC,EAAAN,EAAA,YAAAI,GAAA,MAAAI,EAAAP,QAAAO,EAAAP,SAAA,WAAAI,EAAA,MAAAC,KAUlCgT,yBAA0B,SAAC9qB,EAAOoY,GAChCpY,EAAM6V,aAAe7V,EAAM6V,aAAa5E,OAAO,SAAAmZ,GAC7C,OAAOA,EAAExY,KAAKkF,OAASsT,EAAE9b,OAAS8J,EAAK9J,QAG3Cyc,wBAAyB,SAAC/qB,EAAOoY,GAAS,IAAA4S,GAAA,EAAAC,GAAA,EAAAC,OAAAhyB,EAAA,IACxC,QAAAiyB,EAAAC,EAAgBprB,EAAMma,YAAtB9C,OAAAC,cAAA0T,GAAAG,EAAAC,EAAAvsB,QAAA0Y,MAAAyT,GAAA,EAAmC,KAAxB1d,EAAwB6d,EAAArd,MACjC,GAAIR,IAAM8K,EAAK/a,KAAM,CACnB,IAAMsU,EAAQ3R,EAAMma,YAAY0Q,QAAQvd,GACxCtN,EAAMma,YAAcna,EAAMma,YAAYnB,MAAMrH,EAAOA,EAAQ,GAC3D,QALoC,MAAA6F,GAAAyT,GAAA,EAAAC,EAAA1T,EAAA,YAAAwT,GAAA,MAAAI,EAAA3T,QAAA2T,EAAA3T,SAAA,WAAAwT,EAAA,MAAAC,KAU1CG,sBAAuB,SAAArrB,GAErB,IAAM4V,EAAY5V,EAAM6V,aAAa5E,OAAO,SAAAqD,GAAG,OAAIA,EAAI1C,KAAKkF,QAC5D9W,EAAM6V,aAAeD,GAEvB0V,qBAAsB,SAAAtrB,GACpBA,EAAMma,gBAGRoR,oBAAqB,SAACvrB,EAAOoY,GAAS,IAAAoT,GAAA,EAAAC,GAAA,EAAAC,OAAAxyB,EAAA,IACpC,QAAAyyB,EAAAC,EAAc5rB,EAAM6V,aAApBwB,OAAAC,cAAAkU,GAAAG,EAAAC,EAAA/sB,QAAA0Y,MAAAiU,GAAA,EAAkC,KAAzBpB,EAAyBuB,EAAA7d,MAChC,GAAIsc,EAAE9b,OAAS8J,EAAK9J,KAAM,CACxB8b,EAAIptB,OAAOqtB,OAAOD,EAAGhS,GACrB,QAJgC,MAAAZ,GAAAiU,GAAA,EAAAC,EAAAlU,EAAA,YAAAgU,GAAA,MAAAI,EAAAnU,QAAAmU,EAAAnU,SAAA,WAAAgU,EAAA,MAAAC,MAUxCvqB,SACE0qB,QADO,SAAAxqB,EACe+W,GAAM,IAAlBnQ,EAAkB5G,EAAlB4G,SACRA,EAAS,iBAAkBmQ,GAC3BnQ,EAAS,gBAAiBmQ,IAE5B0T,eALO,SAAAxqB,EAKoB8W,IACzB7W,EAD+BD,EAAhBC,QACR,mBAAoB6W,IAE7B2T,cARO,SAAAnqB,EAQmBwW,IACxB7W,EAD8BK,EAAhBL,QACP,kBAAmB6W,IAG5B4T,QAZO,SAAA9pB,EAYsBkW,GAAM,IAAzBnQ,EAAyB/F,EAAzB+F,SAAUjI,EAAekC,EAAflC,MAClB,OAAO,IAAI6b,QAAQ,SAAA5e,GACjBgL,EAAS,iBAAkBmQ,GAC3BnQ,EAAS,gBAAiBmQ,GAC1Bnb,GACE4Y,aAActM,IAAIvJ,EAAM6V,cACxBsE,YAAa5Q,IAAIvJ,EAAMma,kBAI7B8R,eAtBO,SAAA7pB,EAsB2BgW,GAAM,IAAvB7W,EAAuBa,EAAvBb,OAAQvB,EAAeoC,EAAfpC,MACvB,OAAO,IAAI6b,QAAQ,SAAA5e,GACjBsE,EAAO,mBAAoB6W,GAC3Bnb,EAAQsM,IAAIvJ,EAAM6V,kBAGtBqW,cA5BO,SAAA5pB,EA4B0B8V,GAAM,IAAvB7W,EAAuBe,EAAvBf,OAAQvB,EAAesC,EAAftC,MACtB,OAAO,IAAI6b,QAAQ,SAAA5e,GACjBsE,EAAO,kBAAmB6W,GAC1Bnb,EAAQsM,IAAIvJ,EAAMma,iBAItBgS,eAnCO,SAAA3pB,EAmC6B4V,GAAM,IAAzBnQ,EAAyBzF,EAAzByF,SAAUjI,EAAewC,EAAfxC,MACzB,OAAO,IAAI6b,QAAQ,SAAA5e,GACjBgL,EAAS,wBAAyBmQ,GAClCnQ,EAAS,uBAAwBmQ,GACjCnb,GACE4Y,aAActM,IAAIvJ,EAAM6V,cACxBsE,YAAa5Q,IAAIvJ,EAAMma,kBAI7BiS,sBA7CO,SAAA1pB,EA6CkC0V,GAAM,IAAvB7W,EAAuBmB,EAAvBnB,OAAQvB,EAAe0C,EAAf1C,MAC9B,OAAO,IAAI6b,QAAQ,SAAA5e,GACjBsE,EAAO,2BAA4B6W,GACnCnb,EAAQsM,IAAIvJ,EAAM6V,kBAGtBwW,qBAnDO,SAAAzpB,EAmDiCwV,GAAM,IAAvB7W,EAAuBqB,EAAvBrB,OAAQvB,EAAe4C,EAAf5C,MAC7B,OAAO,IAAI6b,QAAQ,SAAA5e,GACjBsE,EAAO,0BAA2B6W,GAClCnb,EAAQsM,IAAIvJ,EAAMma,iBAItBmS,YA1DO,SAAApL,EA0D0B9I,GAAM,IAAzBnQ,EAAyBiZ,EAAzBjZ,SAAUjI,EAAekhB,EAAflhB,MACtB,OAAO,IAAI6b,QAAQ,SAAA5e,GACjBgL,EAAS,qBAAsBmQ,GAC/BnQ,EAAS,oBAAqBmQ,GAC9Bnb,GACE4Y,aAActM,IAAIvJ,EAAM6V,cACxBsE,YAAa5Q,IAAIvJ,EAAMma,kBAI7BoS,mBApEO,SAAA1C,GAoE+B,IAAjBtoB,EAAiBsoB,EAAjBtoB,OAAQvB,EAAS6pB,EAAT7pB,MAC3B,OAAO,IAAI6b,QAAQ,SAAA5e,GACjBsE,EAAO,yBACPtE,EAAQsM,IAAIvJ,EAAM6V,kBAGtB2W,kBA1EO,SAAAlI,GA0E8B,IAAjB/iB,EAAiB+iB,EAAjB/iB,OAAQvB,EAASskB,EAATtkB,MAC1B,OAAO,IAAI6b,QAAQ,SAAA5e,GACjBsE,EAAO,wBACPtE,EAAQsM,IAAIvJ,EAAMma,iBAItBsS,kBAjFO,SAAA/H,EAiFuBtM,IAC5B7W,EADkCmjB,EAAhBnjB,QACX,sBAAuB6W,MCxJ7B,SAAesU,GAAtBxuB,EAAAC,EAAAqB,GAAA,OAAAmtB,GAAAtuB,MAAAZ,KAAAzE,gDAAO,SAAAsF,EAA+BsuB,EAAUC,EAAUtuB,GAAnD,IAAAuuB,EAAA/sB,EAAA,OAAAtB,EAAAnG,EAAAoG,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACqBC,aACxBC,QAASjG,YAASyF,GAClBS,IAAK,eACLC,OAAQ,OACR8C,MACEgrB,YAAW,WAAAzzB,OAAa6U,KAAK6e,UAC7BC,cAAa,GAAA3zB,OAAKohB,OAAOtP,SAAS8hB,OAArB,mBACbC,OAAQ,kCARP,cACCL,EADDnuB,EAAAU,KAYCU,EAAM+sB,EAAY/qB,KAZnBpD,EAAAS,OAAA,SAcEN,aACLC,QAASjG,YAASyF,GAClBS,IAAK,eACLC,OAAQ,OACR8C,MACEqrB,UAAWrtB,EAAIqtB,UACfC,cAAettB,EAAIstB,cACnBC,WAAY,WACZV,SAAUA,EACVC,SAAUA,MAvBT,wBAAAluB,EAAAW,SAAAhB,6BA4BA,SAASivB,GAAY/uB,EAAOD,GACjC,OAAOO,aACLC,QAASjG,YAASyF,GAClBS,IAAK,sCACLC,OAAQ,MACRC,QAASV,GAAUqB,cAAA,UAAAvG,OAA2BkF,SCjC3C,SAAegvB,GAAtBtvB,GAAA,OAAAuvB,GAAApvB,MAAAZ,KAAAzE,gDAAO,SAAAsF,EAA2BC,GAA3B,OAAAE,EAAAnG,EAAAoG,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAG,qBACHC,OAAQ,QAJL,cAAAN,EAAAS,OAAA,SAAAT,EAAAU,MAAA,wBAAAV,EAAAW,SAAAhB,6BCCP,IAiIesiB,IAhIb5gB,OACE4gB,KAAM,GACNroB,GAAI,GACJyM,OAAQ,GACRlI,KAAM,GACN0B,MAAOsB,cACPvB,SAAUmvB,cACVrwB,KAAM,GACNuO,OAAQ,GACR+hB,aAAc,GACdzQ,SACA0Q,SACEC,oBAEFC,aAGFptB,WACEqtB,SAAU,SAAC/tB,EAAOlD,GAChBkD,EAAMlD,KAAOA,GAEfkxB,UAAW,SAAChuB,EAAOxB,GACjBwB,EAAMxB,MAAQA,GAEhByvB,iBAAkB,SAACjuB,EAAO2tB,GACxB3tB,EAAM2tB,aAAeA,GAEvBO,YAAa,SAACluB,EAAO4tB,GACnB5tB,EAAM4tB,QAAUA,GAElB1F,WAAY,SAACloB,EAAOgF,GAClBhF,EAAMgF,OAASA,GAEjBmpB,SAAU,SAACnuB,EAAO3C,GAChB2C,EAAM3C,KAAOA,GAEf+wB,WAAY,SAACpuB,EAAO4L,GAClB5L,EAAM4L,OAASA,GAEjByiB,UAAW,SAACruB,EAAOkd,GACjBld,EAAMkd,MAAQA,GAEhBoR,OAAQ,SAACtuB,EAAOzH,GACdyH,EAAMzH,GAAKA,GAEbg2B,cAAe,SAACvuB,EAAOzB,GACrByB,EAAMzB,SAAWA,GAEnBiwB,cAAe,SAACxuB,EAAO8tB,GACrB9tB,EAAM8tB,SAAWA,IAIrB3sB,SACEstB,gBADO,SAAAptB,EAAAC,GACiE,IAAtDC,EAAsDF,EAAtDE,OAAQ0G,EAA8C5G,EAA9C4G,SAAc2kB,EAAgCtrB,EAAhCsrB,SAAUruB,EAAsB+C,EAAtB/C,SAAUsuB,EAAYvrB,EAAZurB,SAC1D,OAAO,IAAIhR,QAAQ,SAAC5e,EAASyxB,GAC3BhC,GAAgBE,EAAUC,EAAUtuB,GAAU4M,KAAK,SAAArJ,GACjD,IAAMC,EAAOD,EAASC,KACtBR,EAAO,YAAaQ,EAAK4sB,cACzBptB,EAAO,gBAAiBhD,GACxBqwB,YAAS7sB,EAAK4sB,cACdE,YAAYtwB,GACZtB,MACC6xB,MAAM,SAAAC,GACP9mB,EAAS,eAAiBO,QAASumB,EAAMvmB,UACzCkmB,EAAOK,QAIPC,YAhBC,eAAAC,EAAAvtB,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAArD,EAAAsD,GAAA,IAAAL,EAAA0G,EAAAjI,EAAA8tB,EAAA,OAAArvB,EAAAnG,EAAAoG,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAgBa0C,EAhBbK,EAgBaL,OAAQ0G,EAhBrBrG,EAgBqBqG,SAAUjI,EAhB/B4B,EAgB+B5B,MAhB/BrB,EAAAE,KAAA,EAiBkB2uB,GAAYxtB,EAAMzB,UAjBpC,OAiBCuvB,EAjBDnvB,EAAAU,KAmBLkC,EAAO,gBAAiBusB,EAAS/rB,MACjCkG,EAAS,oBAAqB6lB,EAAS/rB,KAAKmtB,SAASzuB,gBApBhD,wBAAA9B,EAAAW,SAAAhB,MAAA,gBAAAJ,GAAA,OAAA+wB,EAAA5wB,MAAAZ,KAAAzE,YAAA,GAsBPm2B,YAtBO,SAAAjtB,GAsBwB,IAAjBX,EAAiBW,EAAjBX,OAAQvB,EAASkC,EAATlC,MACpB,OAAO,IAAI6b,QAAQ,SAAC5e,EAASyxB,GAC3BnB,GAAYvtB,EAAMxB,MAAOwB,EAAMzB,UAAU4M,KAAK,SAAArJ,GAC5C,IAAMC,EAAOD,EAASC,KAKjBA,GACH2sB,EAAO,4CAGL3sB,EAAKqtB,SAAWrtB,EAAKqtB,QAAQC,SAC/B9tB,EAAO,aAAc,UAErBmtB,EAXc,uSAchBntB,EAAO,WAAYQ,EAAK6qB,UACxBrrB,EAAO,SAAUQ,EAAKxJ,IACtBgJ,EAAO,aAAcQ,EAAK6J,QAC1BrK,EAAO,mBAAoB,IAC3BtE,EAAQ6E,KACPgtB,MAAM,SAAAC,GACPL,EAAOK,QAIbO,OAlDO,SAAAltB,GAkDY,IAAVb,EAAUa,EAAVb,OACPA,EAAO,YAAa,IACpBA,EAAO,gBACPguB,cACAC,eAEFC,UAxDO,SAAAntB,GAwDe,IAAVf,EAAUe,EAAVf,OACV,OAAO,IAAIsa,QAAQ,SAAA5e,GACjBsE,EAAO,YAAa,IACpBguB,cACAC,cACAvyB,OAGEyyB,iBAhEC,eAAAC,EAAAjuB,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAAhC,EAAA6C,EAAAE,GAAA,IAAAnB,EAAA0G,EAAAzJ,EAAA,OAAAC,EAAAnG,EAAAoG,KAAA,SAAAkB,GAAA,cAAAA,EAAAhB,KAAAgB,EAAAf,MAAA,OAgEkB0C,EAhElBiB,EAgEkBjB,OAAQ0G,EAhE1BzF,EAgE0ByF,SAAczJ,EAhExCkE,EAgEwClE,MAC7C+C,EAAO,YAAa/C,GACpBowB,YAASpwB,GACT+C,EAAO,gBAAiBmZ,OAAOtP,SAASwkB,MACxCf,YAAYnU,OAAOtP,SAASwkB,MAE5B3nB,EAAS,eAtEJ,wBAAArI,EAAAN,SAAAK,MAAA,gBAAAxB,EAAAqB,GAAA,OAAAmwB,EAAAtxB,MAAAZ,KAAAzE,YAAA,KCtDJ,SAAe62B,GAAtB3xB,EAAAC,EAAAqB,GAAA,OAAAswB,GAAAzxB,MAAAZ,KAAAzE,gDAAO,SAAAsF,EAA6ByxB,EAAWxxB,EAAUC,GAAlD,OAAAC,EAAAnG,EAAAoG,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAG,oCACHC,OAAQ,QACRC,QAASC,GAAYX,GACrBuD,MAAQguB,eANL,cAAApxB,EAAAS,OAAA,SAAAT,EAAAU,MAAA,wBAAAV,EAAAW,SAAAhB,6BAUA,SAAe0xB,GAAtBvwB,EAAAuE,EAAAG,EAAAC,GAAA,OAAA6rB,GAAA5xB,MAAAZ,KAAAzE,gDAAO,SAAA2G,EAAwBowB,EAAWG,EAAO3xB,EAAUC,GAApD,OAAAC,EAAAnG,EAAAoG,KAAA,SAAAkB,GAAA,cAAAA,EAAAhB,KAAAgB,EAAAf,MAAA,cAAAe,EAAAf,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAG,6CAAA1F,OAA+C42B,GAClDjxB,OAAQ,OACRC,QAASC,GAAYX,GACrBuD,MAAQguB,eANL,cAAAnwB,EAAAR,OAAA,SAAAQ,EAAAP,MAAA,wBAAAO,EAAAN,SAAAK,6BAUA,SAAewwB,GAAtB9pB,EAAAI,EAAAC,EAAAG,EAAAC,GAAA,OAAAspB,GAAA/xB,MAAAZ,KAAAzE,gDAAO,SAAAsL,EAAgCuc,EAAUta,EAAOsmB,EAAUtuB,EAAUC,GAArE,OAAAC,EAAAnG,EAAAoG,KAAA,SAAA6F,GAAA,cAAAA,EAAA3F,KAAA2F,EAAA1F,MAAA,cAAA0F,EAAA1F,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAK,2BACLC,OAAQ,OACRC,QAASC,GAAYX,GACrBuD,MAAQsuB,QAAUxP,WAAUta,QAAOsmB,gBANhC,cAAAtoB,EAAAnF,OAAA,SAAAmF,EAAAlF,MAAA,wBAAAkF,EAAAjF,SAAAgF,6BAUA,SAAegsB,GAAtBvpB,EAAAoa,EAAAC,GAAA,OAAAmP,GAAAlyB,MAAAZ,KAAAzE,gDAAO,SAAAiO,EAA+B8oB,EAAWxxB,EAAUC,GAApD,OAAAC,EAAAnG,EAAAoG,KAAA,SAAAyI,GAAA,cAAAA,EAAAvI,KAAAuI,EAAAtI,MAAA,cAAAsI,EAAAtI,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAG,sCACHC,OAAQ,QACRC,QAASC,GAAYX,GACrBuD,MAAQguB,eANL,cAAA5oB,EAAA/H,OAAA,SAAA+H,EAAA9H,MAAA,wBAAA8H,EAAA7H,SAAA2H,6BAUA,SAAeupB,GAAtBnP,EAAAoP,EAAAC,EAAAC,GAAA,OAAAC,GAAAvyB,MAAAZ,KAAAzE,gDAAO,SAAA6tB,EAA2BkJ,EAAWG,EAAO3xB,EAAUC,GAAvD,OAAAC,EAAAnG,EAAAoG,KAAA,SAAAqoB,GAAA,cAAAA,EAAAnoB,KAAAmoB,EAAAloB,MAAA,cAAAkoB,EAAAloB,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAG,6CAAA1F,OAA+C42B,GAClDjxB,OAAQ,SACRC,QAASC,GAAYX,GACrBuD,MAAQguB,eANL,cAAAhJ,EAAA3nB,OAAA,SAAA2nB,EAAA1nB,MAAA,wBAAA0nB,EAAAznB,SAAAunB,6BAUA,SAAegK,GAAtBC,EAAAC,EAAAC,GAAA,OAAAC,GAAA5yB,MAAAZ,KAAAzE,gDAAO,SAAAkuB,EAA2B6I,EAAWxxB,EAAUC,GAAhD,OAAAC,EAAAnG,EAAAoG,KAAA,SAAAyoB,GAAA,cAAAA,EAAAvoB,KAAAuoB,EAAAtoB,MAAA,cAAAsoB,EAAAtoB,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAG,2BACHC,OAAQ,SACRC,QAASC,GAAYX,GACrBuD,MAAQguB,eANL,cAAA5I,EAAA/nB,OAAA,SAAA+nB,EAAA9nB,MAAA,wBAAA8nB,EAAA7nB,SAAA4nB,6BAUA,SAAegK,GAAtBC,EAAAC,EAAAC,GAAA,OAAAC,GAAAjzB,MAAAZ,KAAAzE,gDAAO,SAAAu4B,EAAyBh5B,EAAIgG,EAAUC,GAAvC,OAAAC,EAAAnG,EAAAoG,KAAA,SAAA8yB,GAAA,cAAAA,EAAA5yB,KAAA4yB,EAAA3yB,MAAA,cAAA2yB,EAAA3yB,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAG,4BAAA1F,OAA8Bf,GACjC0G,OAAQ,MACRC,QAASC,GAAYX,KALlB,cAAAgzB,EAAApyB,OAAA,SAAAoyB,EAAAnyB,MAAA,wBAAAmyB,EAAAlyB,SAAAiyB,6BASA,SAAeE,GAAtBC,EAAAC,EAAAC,GAAA,OAAAC,GAAAxzB,MAAAZ,KAAAzE,gDAAO,SAAA84B,EAAoCjR,EAAUtiB,EAAUC,GAAxD,OAAAC,EAAAnG,EAAAoG,KAAA,SAAAqzB,GAAA,cAAAA,EAAAnzB,KAAAmzB,EAAAlzB,MAAA,cAAAkzB,EAAAlzB,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAG,4BAAA1F,OAA8BunB,EAA9B,gBACH5hB,OAAQ,MACRC,QAASC,GAAYX,KALlB,cAAAuzB,EAAA3yB,OAAA,SAAA2yB,EAAA1yB,MAAA,wBAAA0yB,EAAAzyB,SAAAwyB,6BASA,SAAeE,GAAtBC,EAAAC,EAAAC,EAAAC,GAAA,OAAAC,GAAAh0B,MAAAZ,KAAAzE,gDAAO,SAAAs5B,EAAqCzR,EAAU0R,EAAah0B,EAAUC,GAAtE,OAAAC,EAAAnG,EAAAoG,KAAA,SAAA8zB,GAAA,cAAAA,EAAA5zB,KAAA4zB,EAAA3zB,MAAA,cAAA2zB,EAAA3zB,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAG,4BAAA1F,OAA8BunB,EAA9B,gBACH5hB,OAAQ,QACRC,QAASC,GAAYX,GACrBuD,KAAMwwB,IANH,cAAAC,EAAApzB,OAAA,SAAAozB,EAAAnzB,MAAA,wBAAAmzB,EAAAlzB,SAAAgzB,6BAUA,SAAeG,GAAtBC,EAAAC,EAAAC,GAAA,OAAAC,GAAAx0B,MAAAZ,KAAAzE,gDAAO,SAAA85B,EAA0BC,EAASx0B,EAAUC,GAA7C,IAAA8E,EAAA0vB,EAAAh6B,UAAA,OAAAyF,EAAAnG,EAAAoG,KAAA,SAAAu0B,GAAA,cAAAA,EAAAr0B,KAAAq0B,EAAAp0B,MAAA,cAAoDyE,EAApD0vB,EAAA/5B,OAAA,QAAAC,IAAA85B,EAAA,GAAAA,EAAA,GAA2D,EAA3DC,EAAAp0B,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAG,iCAAA1F,OAAmCgK,EAAnC,aAAAhK,OAAmDy5B,GACtD9zB,OAAQ,MACRC,QAASC,GAAYX,KALlB,cAAAy0B,EAAA7zB,OAAA,SAAA6zB,EAAA5zB,MAAA,wBAAA4zB,EAAA3zB,SAAAwzB,6BASA,SAAeI,GAAtBC,EAAAC,EAAAC,GAAA,OAAAC,GAAAj1B,MAAAZ,KAAAzE,gDAAO,SAAAu6B,EAAqC1S,EAAUtiB,EAAUC,GAAzD,OAAAC,EAAAnG,EAAAoG,KAAA,SAAA80B,GAAA,cAAAA,EAAA50B,KAAA40B,EAAA30B,MAAA,cAAA20B,EAAA30B,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAG,4BAAA1F,OAA8BunB,EAA9B,mBACH5hB,OAAQ,MACRC,QAASC,GAAYX,KALlB,cAAAg1B,EAAAp0B,OAAA,SAAAo0B,EAAAn0B,MAAA,wBAAAm0B,EAAAl0B,SAAAi0B,6BASA,SAAeE,GAAtBC,EAAAC,EAAAC,GAAA,OAAAC,GAAAx1B,MAAAZ,KAAAzE,gDAAO,SAAA86B,EAAkC/D,EAAWxxB,EAAUC,GAAvD,OAAAC,EAAAnG,EAAAoG,KAAA,SAAAq1B,GAAA,cAAAA,EAAAn1B,KAAAm1B,EAAAl1B,MAAA,cAAAk1B,EAAAl1B,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAG,gDACHC,OAAQ,QACRC,QAASC,GAAYX,GACrBuD,MAAQguB,eANL,cAAAgE,EAAA30B,OAAA,SAAA20B,EAAA10B,MAAA,wBAAA00B,EAAAz0B,SAAAw0B,6BAUA,SAAeE,GAAtBC,EAAAC,EAAAC,EAAAC,GAAA,OAAAC,GAAAh2B,MAAAZ,KAAAzE,gDAAO,SAAAs7B,EAA2B9a,EAAOuZ,EAASx0B,EAAUC,GAArD,IAAA8E,EAAAixB,EAAAv7B,UAAA,OAAAyF,EAAAnG,EAAAoG,KAAA,SAAA81B,GAAA,cAAAA,EAAA51B,KAAA41B,EAAA31B,MAAA,cAA4DyE,EAA5DixB,EAAAt7B,OAAA,QAAAC,IAAAq7B,EAAA,GAAAA,EAAA,GAAmE,EAAnEC,EAAA31B,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAG,kCAAA1F,OAAoCkgB,EAApC,UAAAlgB,OAAkDgK,EAAlD,aAAAhK,OAAkEy5B,GACrE9zB,OAAQ,MACRC,QAASC,GAAYX,KALlB,cAAAg2B,EAAAp1B,OAAA,SAAAo1B,EAAAn1B,MAAA,wBAAAm1B,EAAAl1B,SAAAg1B,6BASA,SAAeG,GAAtBC,EAAAC,EAAAC,EAAAC,GAAA,OAAAC,GAAAz2B,MAAAZ,KAAAzE,gDAAO,SAAA+7B,EAAuBhF,EAAWnZ,EAAMrY,EAAUC,GAAlD,OAAAC,EAAAnG,EAAAoG,KAAA,SAAAs2B,GAAA,cAAAA,EAAAp2B,KAAAo2B,EAAAn2B,MAAA,cAAAm2B,EAAAn2B,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAK,+BACLC,OAAQ,MACRC,QAASC,GAAYX,GACrBuD,MAAQguB,YAAWnZ,UANhB,cAAAoe,EAAA51B,OAAA,SAAA41B,EAAA31B,MAAA,wBAAA21B,EAAA11B,SAAAy1B,6BAUA,SAAeE,GAAtBC,EAAAC,EAAAC,EAAAC,GAAA,OAAAC,GAAAj3B,MAAAZ,KAAAzE,gDAAO,SAAAu8B,EAAyBxF,EAAWnZ,EAAMrY,EAAUC,GAApD,OAAAC,EAAAnG,EAAAoG,KAAA,SAAA82B,GAAA,cAAAA,EAAA52B,KAAA42B,EAAA32B,MAAA,cAAA22B,EAAA32B,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAK,+BACLC,OAAQ,SACRC,QAASC,GAAYX,GACrBuD,MAAQguB,YAAWnZ,UANhB,cAAA4e,EAAAp2B,OAAA,SAAAo2B,EAAAn2B,MAAA,wBAAAm2B,EAAAl2B,SAAAi2B,kEAUA,SAAAE,EAAiCl9B,EAAIgG,EAAUkoB,EAASjoB,GAAxD,OAAAC,EAAAnG,EAAAoG,KAAA,SAAAg3B,GAAA,cAAAA,EAAA92B,KAAA82B,EAAA72B,MAAA,cAAA62B,EAAA72B,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAG,4BAAA1F,OAA8Bf,EAA9B,sBAAAe,OAAqDmtB,GACxDxnB,OAAQ,MACRC,QAASC,GAAYX,KALlB,cAAAk3B,EAAAt2B,OAAA,SAAAs2B,EAAAr2B,MAAA,wBAAAq2B,EAAAp2B,SAAAm2B,6BASA,SAAeE,GAAtBC,EAAAC,EAAAC,GAAA,OAAAC,GAAA13B,MAAAZ,KAAAzE,gDAAO,SAAAg9B,EAAgCjG,EAAWxxB,EAAUC,GAArD,OAAAC,EAAAnG,EAAAoG,KAAA,SAAAu3B,GAAA,cAAAA,EAAAr3B,KAAAq3B,EAAAp3B,MAAA,cAAAo3B,EAAAp3B,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAK,yCACLC,OAAQ,QACRC,QAASC,GAAYX,GACrBuD,MAAQguB,eANL,cAAAkG,EAAA72B,OAAA,SAAA62B,EAAA52B,MAAA,wBAAA42B,EAAA32B,SAAA02B,6BAUA,SAAeE,GAAtBC,EAAAC,EAAAC,GAAA,OAAAC,GAAAj4B,MAAAZ,KAAAzE,gDAAO,SAAAu9B,EAAuCxG,EAAWxxB,EAAUC,GAA5D,OAAAC,EAAAnG,EAAAoG,KAAA,SAAA83B,GAAA,cAAAA,EAAA53B,KAAA43B,EAAA33B,MAAA,cAAA23B,EAAA33B,KAAA,EACQC,aACXC,QAASjG,YAASyF,GAClBS,IAAK,qDACLC,OAAQ,QACRC,QAASC,GAAYX,GACrBuD,MAAQguB,eANL,cAAAyG,EAAAp3B,OAAA,SAAAo3B,EAAAn3B,MAAA,wBAAAm3B,EAAAl3B,SAAAi3B,6BAUP,IAAMp3B,GAAc,SAACX,GAAD,OAAWA,GAAUqB,cAAA,UAAAvG,OAA2BwG,oBCvHrD22B,IAxDbz2B,OACEkc,YACAwa,iBAAiB,EACjB9V,QACA+V,mBACAC,oBAAoB,GAEtBl2B,WACEm2B,aAAc,SAAC72B,EAAOkc,GACpBlc,EAAMkc,SAAWA,GAEnB4a,qBAAsB,SAAC92B,EAAOgF,GAC5BhF,EAAM02B,gBAAkB1xB,GAE1B+xB,SAAU,SAAC/2B,EAAO4gB,GAChB5gB,EAAM4gB,KAAOA,GAEfoW,yBAA0B,SAACh3B,EAAOgF,GAChChF,EAAM42B,mBAAqB5xB,GAE7BiyB,qBAAsB,SAACj3B,EAAO22B,GAC5B32B,EAAM22B,gBAAkBA,IAG5Bx1B,SACQ+1B,iBADC,eAAAC,EAAAz1B,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAArD,EAAA+C,EAAAC,GAAA,IAAAC,EAAA0G,EAAApG,EAAAinB,EAAArC,EAAA2Q,EAAA,OAAA34B,EAAAnG,EAAAoG,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cACkB0C,EADlBF,EACkBE,OAAQ0G,EAD1B5G,EAC0B4G,SAAUpG,EADpCR,EACoCQ,QAAainB,EADjDxnB,EACiDwnB,OAAQrC,EADzDnlB,EACyDmlB,QAC9DllB,EAAO,4BAA4B,GAF9B5C,EAAAE,KAAA,EAIsBqyB,GAAUpI,EAAQjnB,EAAQtD,SAAUsD,EAAQrD,OAJlE,OAIC44B,EAJDz4B,EAAAU,KAKLkC,EAAO,WAAY61B,EAAar1B,MAChCR,EAAO,4BAA4B,GAEnC0G,EAAS,qBAAuB6gB,SAAQrC,YARnC,wBAAA9nB,EAAAW,SAAAhB,MAAA,gBAAAJ,EAAAC,GAAA,OAAAg5B,EAAA94B,MAAAZ,KAAAzE,YAAA,GAUPq+B,kBAVO,SAAAz1B,EAAAM,GAU+D,IAAlDX,EAAkDK,EAAlDL,OAAQ0G,EAA0CrG,EAA1CqG,SAAUpG,EAAgCD,EAAhCC,QAAainB,EAAmB5mB,EAAnB4mB,OAAQrC,EAAWvkB,EAAXukB,QACzDllB,EAAO,wBAAwB,GD+G9B,SAAP+1B,EAAAC,EAAAC,EAAAC,GAAA,OAAAC,GAAAr5B,MAAAZ,KAAAzE,WC7GM2+B,CAAkB7O,EAAQjnB,EAAQtD,SAAUkoB,EAAS5kB,EAAQrD,OAC1D2M,KAAK,SAAA+Q,GAAQ,OAAIjU,EAAS,cAAeiU,EAASna,QAErDR,EAAO,wBAAwB,IAE3Bq2B,qBAlBC,eAAAC,EAAAn2B,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAAhC,EAAAyC,EAAAE,GAAA,IAAAf,EAAAM,EAAAgf,EAAAuW,EAAA,OAAA34B,EAAAnG,EAAAoG,KAAA,SAAAkB,GAAA,cAAAA,EAAAhB,KAAAgB,EAAAf,MAAA,cAkBsB0C,EAlBtBa,EAkBsBb,OAAQM,EAlB9BO,EAkB8BP,QAAagf,EAlB3Cve,EAkB2Cue,SAlB3CjhB,EAAAf,KAAA,EAmBsB4yB,GAAqB5Q,EAAUhf,EAAQtD,SAAUsD,EAAQrD,OAnB/E,OAmBC44B,EAnBDx3B,EAAAP,KAoBLkC,EAAO,uBAAwB61B,EAAar1B,MApBvC,wBAAAnC,EAAAN,SAAAK,MAAA,gBAAAH,EAAAC,GAAA,OAAAo4B,EAAAx5B,MAAAZ,KAAAzE,YAAA,GAsBP8+B,YAtBO,SAAAt1B,EAsBiB0Z,IACtB3a,EADgCiB,EAApBjB,QACL,eAAgB2a,IAEnB6b,sBAzBC,eAAAC,EAAAt2B,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAA2C,EAAA5B,EAAAE,GAAA,IAAAqF,EAAApG,EAAAgf,EAAA0R,EAAA,OAAA9zB,EAAAnG,EAAAoG,KAAA,SAAA6F,GAAA,cAAAA,EAAA3F,KAAA2F,EAAA1F,MAAA,cAyBuBoJ,EAzBvBvF,EAyBuBuF,SAAUpG,EAzBjCa,EAyBiCb,QAAagf,EAzB9Cje,EAyB8Cie,SAAU0R,EAzBxD3vB,EAyBwD2vB,YAzBxDhuB,EAAA1F,KAAA,EA0BCmzB,GAAsBnR,EAAU0R,EAAa1wB,EAAQtD,SAAUsD,EAAQrD,OA1BxE,OA2BLyJ,EAAS,wBAA0B4Y,aA3B9B,wBAAAtc,EAAAjF,SAAAgF,MAAA,gBAAAN,EAAAG,GAAA,OAAA6zB,EAAA35B,MAAAZ,KAAAzE,YAAA,KCRLq3B,IACJrwB,OACEi4B,gBACA3wB,SAAS,EACT4wB,YAAa,GACbC,gBAAiB,EACjB7Y,YAAa,EACbL,SAAU,GACV8T,SACEqF,OAAO,EACPC,UAAU,EACVC,QAAQ,EACRC,aAAa,GAEfC,oBACEh6B,MAAO,GACPi6B,KAAM,KAGV/3B,WACEg4B,UAAW,SAAC14B,EAAOqwB,GACjBrwB,EAAMi4B,aAAe5H,GAEvB7oB,YAAa,SAACxH,EAAOgF,GACnBhF,EAAMsH,QAAUtC,GAElB2zB,WAAY,SAAC34B,EAAOqwB,GAClB,IAAMuI,EAAsBvI,EAAM/M,OAAO,SAACC,EAAK3C,GAC7C,OAAO2C,EAAItS,OAAO,SAAA4nB,GAAC,OAAIA,EAAEtgC,KAAOqoB,EAAKroB,MACpCyH,EAAMi4B,cAET,GAAkC,IAA9Bj4B,EAAMi4B,aAAah/B,OAAvB,CAIA,IAAM6/B,KAAYx/B,OAAAiQ,IAAOqvB,GAAPrvB,IAA+B8mB,IACjDrwB,EAAMi4B,aAAea,EAClB7nB,OAAO,SAAA2P,GAAI,OAAIA,EAAKC,UAAYD,EAAKroB,KACrCiR,KAAK,SAAClR,EAAGygC,GAAJ,OAAUzgC,EAAEuoB,SAASmY,cAAcD,EAAElY,YAC1CvnB,OAAOw/B,EAAa7nB,OAAO,SAAA2P,GAAI,OAAKA,EAAKC,WAAaD,EAAKroB,QAEhE0gC,UAAW,SAACj5B,EAAOoF,GACjBpF,EAAMm4B,gBAAkB/yB,GAE1Bsa,SAAU,SAAC1f,EAAOsD,GAChBtD,EAAMsf,YAAchc,GAEtB41B,cAAe,SAACl5B,EAAOif,GACrBjf,EAAMif,SAAWA,GAEnBka,yBAA0B,SAACn5B,EAADqB,GAA4B,IAAlB7C,EAAkB6C,EAAlB7C,MAAOi6B,EAAWp3B,EAAXo3B,KACzCz4B,EAAMw4B,mBAAmBh6B,MAAQA,EACjCwB,EAAMw4B,mBAAmBC,KAAOA,GAElCW,iBAAkB,SAACp5B,EAAOwZ,GACxBxZ,EAAMk4B,YAAc1e,GAEtB6f,kBAAmB,SAACr5B,EAAO+yB,GACzB/yB,EAAM+yB,QAAUA,IAGpB5xB,SACQm4B,cADC,eAAAC,EAAA73B,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAAhC,EAAA2B,EAAAM,GAAA,IAAAqG,EAAApG,EAAAwuB,EAAAmJ,EAAAV,EAAA/I,EAAA,OAAAtxB,EAAAnG,EAAAoG,KAAA,SAAAkB,GAAA,cAAAA,EAAAhB,KAAAgB,EAAAf,MAAA,OACeoJ,EADf3G,EACe2G,SAAUpG,EADzBP,EACyBO,QAAawuB,EADtCzuB,EACsCyuB,MAAOmJ,EAD7C53B,EAC6C43B,QAC5CV,EAAezI,EAAM32B,IAAI,SAAAknB,GAC7B,OAAAhd,OAAYgd,GAAM2X,aAAa,MAE3BxI,EAAYM,EAAM32B,IAAI,SAAAknB,GAAI,OAAIA,EAAKC,WAGzC5Y,EAAS,gBAAkB6wB,eAAcW,UARpC,eAAAv3B,EAAAR,IAAAjD,EAAAnG,EAAAqJ,KAMa,SAAArD,IAAA,OAAAG,EAAAnG,EAAAoG,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EAAiBgxB,GAAcE,EAAWluB,EAAQtD,SAAUsD,EAAQrD,OAApE,cAAAG,EAAAS,OAAA,SAAAT,EAAAU,MAAA,wBAAAV,EAAAW,SAAAhB,MANb,yBAAA4D,EAAA7D,MAAAZ,KAAAzE,YAAA,GAQ+C8vB,OAAQ0Q,IARvD,wBAAA55B,EAAAN,SAAAK,MAAA,gBAAAzB,EAAAC,GAAA,OAAAo7B,EAAAl7B,MAAAZ,KAAAzE,YAAA,GAUD0gC,aAVC,eAAAC,EAAAj4B,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAA2C,EAAAlC,EAAAE,GAAA,IAAAf,EAAA0G,EAAAjI,EAAA84B,EAAAW,EAAA3Q,EAAAH,EAAA,OAAAlqB,EAAAnG,EAAAoG,KAAA,SAAA6F,GAAA,cAAAA,EAAA3F,KAAA2F,EAAA1F,MAAA,cAUc0C,EAVda,EAUcb,OAAQ0G,EAVtB7F,EAUsB6F,SAAUjI,EAVhCoC,EAUgCpC,MAAW84B,EAV3Cx2B,EAU2Cw2B,aAAcW,EAVzDn3B,EAUyDm3B,UAAW3Q,EAVpExmB,EAUoEwmB,OAAQH,EAV5ErmB,EAU4EqmB,SACjFpnB,EAAO,aAAcu3B,GAXhBv0B,EAAA3F,KAAA,EAAA2F,EAAA1F,KAAA,EAcG46B,IAdH,OAAAl1B,EAAA1F,KAAA,uBAAA0F,EAAA3F,KAAA,EAAA2F,EAAA6D,GAAA7D,EAAA,SAAAA,EAAAnF,OAAA,yBAAAmF,EAAA3F,KAAA,GAkBHqJ,EAAS,eAAiBuR,MAAOxZ,EAAMk4B,YAAa50B,KAAMtD,EAAMsf,cAlB7D/a,EAAAma,OAAA,YAoBDiK,EACF1gB,EAAS,iCAAkC0gB,GAClCG,GACT7gB,EAAS,oBAAsB6gB,SAAQrC,SAAS,IAElDxe,EAAS,kBAzBJ,yBAAA1D,EAAAjF,SAAAgF,EAAA,uCAAA9E,EAAAC,GAAA,OAAAk6B,EAAAt7B,MAAAZ,KAAAzE,YAAA,GA2BD4gC,SA3BC,eAAAC,EAAAn4B,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAAklB,EAAArkB,EAAAE,GAAA,IAAAuF,EAAApG,EAAAwuB,EAAAH,EAAAsJ,EAAAM,EAAAhB,EAAA/I,EAAA,OAAAtxB,EAAAnG,EAAAoG,KAAA,SAAAqoB,GAAA,cAAAA,EAAAnoB,KAAAmoB,EAAAloB,MAAA,OA2BUoJ,EA3BVzF,EA2BUyF,SAAUpG,EA3BpBW,EA2BoBX,QAAawuB,EA3BjC3tB,EA2BiC2tB,MAAOH,EA3BxCxtB,EA2BwCwtB,MAAOsJ,EA3B/C92B,EA2B+C82B,QAASM,EA3BxDp3B,EA2BwDo3B,UACvDhB,EAAezI,EAAM32B,IAAI,SAAAknB,GAC7B,OAAOA,EAAKwX,MAALx0B,OAAkBgd,GAAM1D,MAAOtZ,OAAKgd,EAAK1D,MAAZ0G,QAAoBsM,GAAQ,MAAUtP,IAEtEmP,EAAYM,EAAM32B,IAAI,SAAAknB,GAAI,OAAIA,EAAKC,WAGzC5Y,EAAS,gBAAkB6wB,eAAcW,UAlCpC,eAAA72B,EAAAlB,IAAAjD,EAAAnG,EAAAqJ,KAgCa,SAAAsF,IAAA,OAAAxI,EAAAnG,EAAAoG,KAAA,SAAAyI,GAAA,cAAAA,EAAAvI,KAAAuI,EAAAtI,MAAA,cAAAsI,EAAAtI,KAAA,EAAiBmxB,GAASD,EAAWG,EAAOruB,EAAQtD,SAAUsD,EAAQrD,OAAtE,cAAA2I,EAAA/H,OAAA,SAAA+H,EAAA9H,MAAA,wBAAA8H,EAAA7H,SAAA2H,MAhCb,yBAAArE,EAAAvE,MAAAZ,KAAAzE,YAAA,GAkC+C8vB,OAAQ0Q,EAAS7Q,SAAUmR,IAlC1E,wBAAA/S,EAAAznB,SAAAunB,MAAA,gBAAA7iB,EAAAG,GAAA,OAAA01B,EAAAx7B,MAAAZ,KAAAzE,YAAA,GAoCD+gC,OApCC,eAAAC,EAAAt4B,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAA4vB,EAAArQ,EAAA2I,GAAA,IAAA5hB,EAAApG,EAAAwuB,EAAA/b,EAAAklB,EAAAM,EAAAhB,EAAA/I,EAAA,OAAAtxB,EAAAnG,EAAAoG,KAAA,SAAA8yB,GAAA,cAAAA,EAAA5yB,KAAA4yB,EAAA3yB,MAAA,OAoCQoJ,EApCRiZ,EAoCQjZ,SAAUpG,EApClBqf,EAoCkBrf,QAAawuB,EApC/BxG,EAoC+BwG,MAAO/b,EApCtCuV,EAoCsCvV,IAAKklB,EApC3C3P,EAoC2C2P,QAASM,EApCpDjQ,EAoCoDiQ,UACnDhB,EAAezI,EAAM32B,IAAI,SAAAknB,GAC7B,OAAAhd,OAAYgd,GAAMhK,QAAItd,OAAAiQ,IAAMqX,EAAKhK,OAAMtC,QAEnCyb,EAAYM,EAAM32B,IAAI,SAAAknB,GAAI,OAAIA,EAAKC,WAGzC5Y,EAAS,gBAAkB6wB,eAAcW,UA3CpC,eAAAnV,EAAA5iB,IAAAjD,EAAAnG,EAAAqJ,KAyCa,SAAAulB,IAAA,OAAAzoB,EAAAnG,EAAAoG,KAAA,SAAAyoB,GAAA,cAAAA,EAAAvoB,KAAAuoB,EAAAtoB,MAAA,cAAAsoB,EAAAtoB,KAAA,EAAiB41B,GAAQ1E,GAAYzb,GAAMzS,EAAQtD,SAAUsD,EAAQrD,OAArE,cAAA2oB,EAAA/nB,OAAA,SAAA+nB,EAAA9nB,MAAA,wBAAA8nB,EAAA7nB,SAAA4nB,MAzCb,yBAAA5C,EAAAjmB,MAAAZ,KAAAzE,YAAA,GA2C+C8vB,OAAQ0Q,EAAS7Q,SAAUmR,IA3C1E,wBAAAtI,EAAAlyB,SAAAiyB,MAAA,gBAAAntB,EAAAiC,GAAA,OAAA2zB,EAAA37B,MAAAZ,KAAAzE,YAAA,GA6CPihC,gBA7CO,SAAAvV,GA6CqB,IAAVnjB,EAAUmjB,EAAVnjB,OAChBA,EAAO,mBAAoB,IAC3BA,EAAO,qBAAuB62B,OAAO,EAAOC,UAAU,EAAOC,QAAQ,EAAOC,aAAa,KAErF2B,aAjDC,eAAAC,EAAAz4B,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAAmwB,EAAAhN,GAAA,IAAAvjB,EAAA0G,EAAAjI,EAAA,OAAAvB,EAAAnG,EAAAoG,KAAA,SAAAqzB,GAAA,cAAAA,EAAAnzB,KAAAmzB,EAAAlzB,MAAA,OAiDc0C,EAjDdujB,EAiDcvjB,OAAQ0G,EAjDtB6c,EAiDsB7c,SAAUjI,EAjDhC8kB,EAiDgC9kB,MACrCuB,EAAO,uBACP0G,EAAS,eAAiBuR,MAAOxZ,EAAMk4B,YAAa50B,KAAM,IAnDrD,wBAAAyuB,EAAAzyB,SAAAwyB,MAAA,gBAAArrB,GAAA,OAAA0zB,EAAA97B,MAAAZ,KAAAzE,YAAA,GAqDDohC,iBArDC,eAAAC,EAAA34B,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAA2wB,EAAArN,EAAAK,GAAA,IAAArd,EAAApG,EAAA7B,EAAA6gB,EAAAta,EAAAsmB,EAAA,OAAApuB,EAAAnG,EAAAoG,KAAA,SAAA8zB,GAAA,cAAAA,EAAA5zB,KAAA4zB,EAAA3zB,MAAA,cAqDkBoJ,EArDlBgd,EAqDkBhd,SAAUpG,EArD5BojB,EAqD4BpjB,QAAS7B,EArDrCilB,EAqDqCjlB,MAAW6gB,EArDhDyE,EAqDgDzE,SAAUta,EArD1D+e,EAqD0D/e,MAAOsmB,EArDjEvH,EAqDiEuH,SArDjE2F,EAAA5zB,KAAA,EAAA4zB,EAAA3zB,KAAA,EAuDGsxB,GAAiBtP,EAAUta,EAAOsmB,EAAUhrB,EAAQtD,SAAUsD,EAAQrD,OAvDzE,OAAAg0B,EAAA3zB,KAAA,uBAAA2zB,EAAA5zB,KAAA,EAAA4zB,EAAApqB,GAAAoqB,EAAA,SAAAA,EAAApzB,OAAA,yBAAAozB,EAAA5zB,KAAA,GA2DHqJ,EAAS,eAAiBuR,MAAOxZ,EAAMk4B,YAAa50B,KAAMtD,EAAMsf,cA3D7DkT,EAAA9T,OAAA,YA6DLzW,EAAS,kBA7DJ,yBAAAuqB,EAAAlzB,SAAAgzB,EAAA,uCAAA5rB,EAAAG,GAAA,OAAAwzB,EAAAh8B,MAAAZ,KAAAzE,YAAA,GA+DDshC,gBA/DC,eAAAC,EAAA74B,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAA4xB,EAAAhO,EAAAG,GAAA,IAAAzd,EAAApG,EAAAwuB,EAAAmJ,EAAAV,EAAA/I,EAAA,OAAAtxB,EAAAnG,EAAAoG,KAAA,SAAA80B,GAAA,cAAAA,EAAA50B,KAAA40B,EAAA30B,MAAA,OA+DiBoJ,EA/DjBsd,EA+DiBtd,SAAUpG,EA/D3B0jB,EA+D2B1jB,QAAawuB,EA/DxC3K,EA+DwC2K,MAAOmJ,EA/D/C9T,EA+D+C8T,QAC9CV,EAAezI,EAAM32B,IAAI,SAAAknB,GAC7B,OAAAhd,OAAYgd,GAAM2X,aAAa,MAE3BxI,EAAYM,EAAM32B,IAAI,SAAAknB,GAAI,OAAIA,EAAKC,WAGzC5Y,EAAS,gBAAkB6wB,eAAcW,UAtEpC,eAAA9T,EAAAjkB,IAAAjD,EAAAnG,EAAAqJ,KAoEa,SAAAmxB,IAAA,OAAAr0B,EAAAnG,EAAAoG,KAAA,SAAAu0B,GAAA,cAAAA,EAAAr0B,KAAAq0B,EAAAp0B,MAAA,cAAAo0B,EAAAp0B,KAAA,EAAiByxB,GAAgBP,EAAWluB,EAAQtD,SAAUsD,EAAQrD,OAAtE,cAAAy0B,EAAA7zB,OAAA,SAAA6zB,EAAA5zB,MAAA,wBAAA4zB,EAAA3zB,SAAAwzB,MApEb,yBAAAnN,EAAAtnB,MAAAZ,KAAAzE,YAAA,GAsE+C8vB,OAAQ0Q,IAtEvD,wBAAAhG,EAAAl0B,SAAAi0B,MAAA,gBAAAzsB,EAAAC,GAAA,OAAAwzB,EAAAl8B,MAAAZ,KAAAzE,YAAA,GAwEDwhC,kBAxEC,eAAAC,EAAA/4B,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAA2yB,EAAAoG,EAAAC,GAAA,IAAA1yB,EAAApG,EAAAwuB,EAAAmJ,EAAAM,EAAAhB,EAAA/I,EAAA,OAAAtxB,EAAAnG,EAAAoG,KAAA,SAAA81B,GAAA,cAAAA,EAAA51B,KAAA41B,EAAA31B,MAAA,OAwEmBoJ,EAxEnByyB,EAwEmBzyB,SAAUpG,EAxE7B64B,EAwE6B74B,QAAawuB,EAxE1CsK,EAwE0CtK,MAAOmJ,EAxEjDmB,EAwEiDnB,QAASM,EAxE1Da,EAwE0Db,UACzDhB,EAAezI,EAAM32B,IAAI,SAAAknB,GAC7B,OAAAhd,OAAYgd,GAAMga,sBAAsB,MAEpC7K,EAAYM,EAAM32B,IAAI,SAAAknB,GAAI,OAAIA,EAAKC,WAGzC5Y,EAAS,gBAAkB6wB,eAAcW,UA/EpC,eAAAoB,EAAAn5B,IAAAjD,EAAAnG,EAAAqJ,KA6Ea,SAAAmyB,IAAA,OAAAr1B,EAAAnG,EAAAoG,KAAA,SAAAq1B,GAAA,cAAAA,EAAAn1B,KAAAm1B,EAAAl1B,MAAA,cAAAk1B,EAAAl1B,KAAA,EAAiB82B,GAAiB5F,EAAWluB,EAAQtD,SAAUsD,EAAQrD,OAAvE,cAAAu1B,EAAA30B,OAAA,SAAA20B,EAAA10B,MAAA,wBAAA00B,EAAAz0B,SAAAw0B,MA7Eb,yBAAA+G,EAAAx8B,MAAAZ,KAAAzE,YAAA,GA+E+C8vB,OAAQ0Q,EAAS7Q,SAAUmR,IA/E1E,wBAAAtF,EAAAl1B,SAAAg1B,MAAA,gBAAAnT,EAAAC,GAAA,OAAAqZ,EAAAp8B,MAAAZ,KAAAzE,YAAA,GAiFD8hC,wBAjFC,eAAAC,EAAAr5B,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAAozB,EAAAiG,EAiF8C3K,GAjF9C,IAAApoB,EAAApG,EAAAo5B,EAAA,OAAAx8B,EAAAnG,EAAAoG,KAAA,SAAAs2B,GAAA,cAAAA,EAAAp2B,KAAAo2B,EAAAn2B,MAAA,cAiFyBoJ,EAjFzB+yB,EAiFyB/yB,SAAUpG,EAjFnCm5B,EAiFmCn5B,QAClCo5B,EAAiB5K,EAAM32B,IAAI,SAAAknB,GAAI,OAAIA,EAAKC,WAlFzCmU,EAAAp2B,KAAA,EAAAo2B,EAAAn2B,KAAA,EAoFGq3B,GAAwB+E,EAAgBp5B,EAAQtD,SAAUsD,EAAQrD,OApFrE,OAAAw2B,EAAAn2B,KAAA,uBAAAm2B,EAAAp2B,KAAA,EAAAo2B,EAAA5sB,GAAA4sB,EAAA,SAAAA,EAAA51B,OAAA,kBAwFL6I,EAAS,kBAxFJ,yBAAA+sB,EAAA11B,SAAAy1B,EAAA,iCAAA1T,EAAAoP,GAAA,OAAAsK,EAAA18B,MAAAZ,KAAAzE,YAAA,GA0FDkiC,YA1FC,eAAAC,EAAAz5B,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAA8zB,EAAA2F,EAAAC,GAAA,IAAApzB,EAAApG,EAAAwuB,EAAAH,EAAAsJ,EAAAM,EAAAhB,EAAA/I,EAAA,OAAAtxB,EAAAnG,EAAAoG,KAAA,SAAAg3B,GAAA,cAAAA,EAAA92B,KAAA82B,EAAA72B,MAAA,OA0FaoJ,EA1FbmzB,EA0FanzB,SAAUpG,EA1FvBu5B,EA0FuBv5B,QAAawuB,EA1FpCgL,EA0FoChL,MAAOH,EA1F3CmL,EA0F2CnL,MAAOsJ,EA1FlD6B,EA0FkD7B,QAASM,EA1F3DuB,EA0F2DvB,UAC1DhB,EAAezI,EAAM32B,IAAI,SAAAknB,GAC7B,OAAOA,EAAKwX,MAALx0B,OAAkBgd,GAAM1D,MAAOtZ,OAAKgd,EAAK1D,MAAZ0G,QAAoBsM,GAAQ,MAAWtP,IAEvEmP,EAAYM,EAAM32B,IAAI,SAAAknB,GAAI,OAAIA,EAAKC,WAGzC5Y,EAAS,gBAAkB6wB,eAAcW,UAjGpC,eAAA6B,EAAA55B,IAAAjD,EAAAnG,EAAAqJ,KA+Fa,SAAA4zB,IAAA,OAAA92B,EAAAnG,EAAAoG,KAAA,SAAA82B,GAAA,cAAAA,EAAA52B,KAAA42B,EAAA32B,MAAA,cAAA22B,EAAA32B,KAAA,EAAiB2xB,GAAYT,EAAWG,EAAOruB,EAAQtD,SAAUsD,EAAQrD,OAAzE,cAAAg3B,EAAAp2B,OAAA,SAAAo2B,EAAAn2B,MAAA,wBAAAm2B,EAAAl2B,SAAAi2B,MA/Fb,yBAAA+F,EAAAj9B,MAAAZ,KAAAzE,YAAA,GAiG+C8vB,OAAQ0Q,EAAS7Q,SAAUmR,IAjG1E,wBAAApE,EAAAp2B,SAAAm2B,MAAA,gBAAA/E,EAAAC,GAAA,OAAAwK,EAAA98B,MAAAZ,KAAAzE,YAAA,GAmGDuiC,YAnGC,eAAAC,EAAA95B,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAAq0B,EAAAyF,EAAAC,GAAA,IAAAn6B,EAAA0G,EAAApG,EAAA7B,EAAAqwB,EAAAmJ,EAAAyB,EAAAU,EAAA7C,EAAA,OAAAr6B,EAAAnG,EAAAoG,KAAA,SAAAu3B,GAAA,cAAAA,EAAAr3B,KAAAq3B,EAAAp3B,MAAA,cAmGa0C,EAnGbk6B,EAmGal6B,OAAQ0G,EAnGrBwzB,EAmGqBxzB,SAAUpG,EAnG/B45B,EAmG+B55B,QAAS7B,EAnGxCy7B,EAmGwCz7B,MAAWqwB,EAnGnDqL,EAmGmDrL,MAAOmJ,EAnG1DkC,EAmG0DlC,QACzDyB,EAAiB5K,EAAM32B,IAAI,SAAAknB,GAAI,OAAIA,EAAKC,WApGzCoV,EAAAr3B,KAAA,EAAAq3B,EAAAp3B,KAAA,EAsGGgyB,GAAYoK,EAAgBp5B,EAAQtD,SAAUsD,EAAQrD,OAtGzD,OAAAy3B,EAAAp3B,KAAA,uBAAAo3B,EAAAr3B,KAAA,EAAAq3B,EAAA7tB,GAAA6tB,EAAA,SAAAA,EAAA72B,OAAA,kBA0GCu8B,EAAkBtL,EAAM32B,IAAI,SAAAkiC,GAAW,OAAIA,EAAYrjC,KACvDugC,EAAe94B,EAAMi4B,aAAahnB,OAAO,SAAA2P,GAAI,OAAK+a,EAAgBhgB,SAASiF,EAAKroB,MACtFgJ,EAAO,YAAau3B,GAEpB7wB,EAAS,oBAAsB6gB,OAAQ0Q,EAAS/S,SAAS,IACzDxe,EAAS,kBA/GJ,yBAAAguB,EAAA32B,SAAA02B,EAAA,iCAAAlF,EAAAC,GAAA,OAAAyK,EAAAn9B,MAAAZ,KAAAzE,YAAA,GAiHD6iC,WAjHC,eAAAC,EAAAp6B,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAA40B,EAAAwF,EAAAC,GAAA,IAAAz6B,EAAA0G,EAAApG,EAAA7B,EAAAsD,EAAAyvB,EAAAjxB,EAAA,OAAArD,EAAAnG,EAAAoG,KAAA,SAAA83B,GAAA,cAAAA,EAAA53B,KAAA43B,EAAA33B,MAAA,cAiHY0C,EAjHZw6B,EAiHYx6B,OAAQ0G,EAjHpB8zB,EAiHoB9zB,SAAUpG,EAjH9Bk6B,EAiH8Bl6B,QAAS7B,EAjHvC+7B,EAiHuC/7B,MAAWsD,EAjHlD04B,EAiHkD14B,KACvD/B,EAAO,eAAe,GAChBwxB,EAAU/1B,OAAOD,KAAKiD,EAAM+yB,SAAS9hB,OAAO,SAAAA,GAAM,OAAIjR,EAAM+yB,QAAQ9hB,KAASgrB,OAnH9EzF,EAAA33B,KAAA,EAoHkB4zB,GAAWM,EAASlxB,EAAQtD,SAAUsD,EAAQrD,MAAO8E,GApHvE,cAoHCxB,EApHD00B,EAAAn3B,KAAAm3B,EAAA33B,KAAA,EAqHCoJ,EAAS,eArHV,OAsHLi0B,GAAU36B,EAAQ+B,EAAMxB,EAASC,MAtH5B,yBAAAy0B,EAAAl3B,SAAAi3B,MAAA,gBAAAvF,EAAAG,GAAA,OAAA2K,EAAAz9B,MAAAZ,KAAAzE,YAAA,GAwHDmjC,sBAxHC,eAAAC,EAAA16B,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAA06B,EAAAC,EAwH0Czb,GAxH1C,IAAAtf,EAAAM,EAAA06B,EAAAx6B,EAAA,OAAAtD,EAAAnG,EAAAoG,KAAA,SAAA89B,GAAA,cAAAA,EAAA59B,KAAA49B,EAAA39B,MAAA,cAwHuB0C,EAxHvB+6B,EAwHuB/6B,OAAQM,EAxH/By6B,EAwH+Bz6B,QAxH/B26B,EAAA39B,KAAA,EAyHkBq0B,GAAsBrS,EAAUhf,EAAQtD,SAAUsD,EAAQrD,OAzH5E,OAAA+9B,EAAAC,EAAAn9B,KAyHG0C,EAzHHw6B,EAyHGx6B,KACRR,EAAO,2BAA4BQ,GA1H9B,wBAAAy6B,EAAAl9B,SAAA+8B,MAAA,gBAAAjL,EAAAC,GAAA,OAAA+K,EAAA/9B,MAAAZ,KAAAzE,YAAA,GA4HPyjC,oBA5HO,SAAAC,IA6HLn7B,EAD8Bm7B,EAAVn7B,QACb,4BAA8Bk3B,KAAM,GAAIj6B,MAAO,MAElDm+B,UA/HC,eAAAC,EAAAl7B,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAAk7B,EAAAC,EAAAC,GAAA,IAAA90B,EAAApG,EAAAwuB,EAAA/b,EAAAklB,EAAAM,EAAAhB,EAAA/I,EAAA,OAAAtxB,EAAAnG,EAAAoG,KAAA,SAAAs+B,GAAA,cAAAA,EAAAp+B,KAAAo+B,EAAAn+B,MAAA,OA+HWoJ,EA/HX60B,EA+HW70B,SAAUpG,EA/HrBi7B,EA+HqBj7B,QAAawuB,EA/HlC0M,EA+HkC1M,MAAO/b,EA/HzCyoB,EA+HyCzoB,IAAKklB,EA/H9CuD,EA+H8CvD,QAASM,EA/HvDiD,EA+HuDjD,UACtDhB,EAAezI,EAAM32B,IAAI,SAAAknB,GAC7B,OAAAhd,OAAYgd,GAAMhK,KAAMgK,EAAKhK,KAAK3F,OAAO,SAAAgsB,GAAO,OAAIA,IAAY3oB,QAE5Dyb,EAAYM,EAAM32B,IAAI,SAAAknB,GAAI,OAAIA,EAAKC,WAGzC5Y,EAAS,gBAAkB6wB,eAAcW,UAtIpC,eAAAyD,EAAAx7B,IAAAjD,EAAAnG,EAAAqJ,KAoIa,SAAAw7B,IAAA,OAAA1+B,EAAAnG,EAAAoG,KAAA,SAAA0+B,GAAA,cAAAA,EAAAx+B,KAAAw+B,EAAAv+B,MAAA,cAAAu+B,EAAAv+B,KAAA,EAAiBo2B,GAAUlF,GAAYzb,GAAMzS,EAAQtD,SAAUsD,EAAQrD,OAAvE,cAAA4+B,EAAAh+B,OAAA,SAAAg+B,EAAA/9B,MAAA,wBAAA+9B,EAAA99B,SAAA69B,MApIb,yBAAAD,EAAA7+B,MAAAZ,KAAAzE,YAAA,GAsI+C8vB,OAAQ0Q,EAAS7Q,SAAUmR,IAtI1E,wBAAAkD,EAAA19B,SAAAu9B,MAAA,gBAAAnL,EAAAC,GAAA,OAAAiL,EAAAv+B,MAAAZ,KAAAzE,YAAA,GAwIDqkC,qBAxIC,eAAAC,EAAA57B,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAA47B,EAAAC,EAwI2CnN,GAxI3C,IAAApoB,EAAApG,EAAAkuB,EAAA,OAAAtxB,EAAAnG,EAAAoG,KAAA,SAAA++B,GAAA,cAAAA,EAAA7+B,KAAA6+B,EAAA5+B,MAAA,cAwIsBoJ,EAxItBu1B,EAwIsBv1B,SAAUpG,EAxIhC27B,EAwIgC37B,QAC/BkuB,EAAYM,EAAM32B,IAAI,SAAAknB,GAAI,OAAIA,EAAKC,WAzIpC4c,EAAA7+B,KAAA,EAAA6+B,EAAA5+B,KAAA,EA2IG40B,GAAmB1D,EAAWluB,EAAQtD,SAAUsD,EAAQrD,OA3I3D,OAAAi/B,EAAA5+B,KAAA,uBAAA4+B,EAAA7+B,KAAA,EAAA6+B,EAAAr1B,GAAAq1B,EAAA,SAAAA,EAAAr+B,OAAA,kBA+IL6I,EAAS,kBA/IJ,yBAAAw1B,EAAAn+B,SAAAi+B,EAAA,iCAAA3L,EAAAK,GAAA,OAAAqL,EAAAj/B,MAAAZ,KAAAzE,YAAA,GAiJD0kC,YAjJC,eAAAC,EAAAj8B,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAAi8B,EAAAC,EAAAC,GAAA,IAAAv8B,EAAA0G,EAAAjI,EAAA6B,EAAA2X,EAAAlW,EAAAyvB,EAAAjxB,EAAA,OAAArD,EAAAnG,EAAAoG,KAAA,SAAAq/B,GAAA,cAAAA,EAAAn/B,KAAAm/B,EAAAl/B,MAAA,UAiJa0C,EAjJbs8B,EAiJat8B,OAAQ0G,EAjJrB41B,EAiJqB51B,SAAUjI,EAjJ/B69B,EAiJ+B79B,MAAO6B,EAjJtCg8B,EAiJsCh8B,QAAa2X,EAjJnDskB,EAiJmDtkB,MAAOlW,EAjJ1Dw6B,EAiJ0Dx6B,KAC1C,IAAjBkW,EAAMvgB,OAlJL,CAAA8kC,EAAAl/B,KAAA,QAmJH0C,EAAO,mBAAoBiY,GAC3BvR,EAAS,cAAgB3E,SApJtBy6B,EAAAl/B,KAAA,uBAsJH0C,EAAO,eAAe,GACtBA,EAAO,mBAAoBiY,GAErBuZ,EAAU/1B,OAAOD,KAAKiD,EAAM+yB,SAAS9hB,OAAO,SAAAA,GAAM,OAAIjR,EAAM+yB,QAAQ9hB,KAASgrB,OAzJhF8B,EAAAl/B,KAAA,GA0JoBm1B,GAAYxa,EAAOuZ,EAASlxB,EAAQtD,SAAUsD,EAAQrD,MAAO8E,GA1JjF,QA0JGxB,EA1JHi8B,EAAA1+B,KA4JH68B,GAAU36B,EAAQ+B,EAAMxB,EAASC,MA5J9B,yBAAAg8B,EAAAz+B,SAAAs+B,MAAA,gBAAA1L,EAAAC,GAAA,OAAAwL,EAAAt/B,MAAAZ,KAAAzE,YAAA,GA+JPglC,eA/JO,WAgKLz1B,UAAQ01B,SACNz1B,QAASC,IAAKC,EAAE,mBAChBE,SAAU,OAGRs1B,kBArKC,eAAAC,EAAAz8B,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAAy8B,EAAAC,EAqK8CtL,GArK9C,IAAAxxB,EAAA0G,EAAAjI,EAAAs+B,EAAAC,EAAA,OAAA9/B,EAAAnG,EAAAoG,KAAA,SAAA8/B,GAAA,cAAAA,EAAA5/B,KAAA4/B,EAAA3/B,MAAA,OAqKmB0C,EArKnB88B,EAqKmB98B,OAAQ0G,EArK3Bo2B,EAqK2Bp2B,SAAUjI,EArKrCq+B,EAqKqCr+B,MACpCs+B,GACJlG,OAAO,EACPC,UAAU,EACVC,QAAQ,EACRC,aAAa,GAETgG,EA5KD36B,OA4KuB06B,EAAmBvL,GAC/CxxB,EAAO,oBAAqBg9B,GAC5Bt2B,EAAS,eAAiBuR,MAAOxZ,EAAMk4B,YAAa50B,KAAM,IA9KrD,wBAAAk7B,EAAAl/B,SAAA8+B,MAAA,gBAAAhM,EAAAM,GAAA,OAAAyL,EAAA9/B,MAAAZ,KAAAzE,YAAA,KAmLLkjC,GAAY,SAAC36B,EAAQ+B,EAATm7B,GAA+C,IAA9BpO,EAA8BoO,EAA9BpO,MAAOjrB,EAAuBq5B,EAAvBr5B,MAAOs5B,EAAgBD,EAAhBC,UAC/Cn9B,EAAO,YAAa8uB,GACpB9uB,EAAO,YAAa6D,GACpB7D,EAAO,WAAY+B,GACnB/B,EAAO,gBAAiBm9B,GACxBn9B,EAAO,eAAe,IAGT8uB,MCtPAxuB,IApBb5B,QAAS,SAAAD,GAAK,OAAIA,EAAMD,IAAIE,SAC5BM,SAAU,SAAAP,GAAK,OAAIA,EAAMD,IAAIQ,UAC7BC,KAAM,SAAAR,GAAK,OAAIA,EAAMD,IAAIS,MACzBF,OAAQ,SAAAN,GAAK,OAAIA,EAAMD,IAAIO,QAC3BuV,aAAc,SAAA7V,GAAK,OAAIA,EAAM8V,SAASD,cACtCsE,YAAa,SAAAna,GAAK,OAAIA,EAAM8V,SAASqE,aACrC3b,MAAO,SAAAwB,GAAK,OAAIA,EAAM4gB,KAAKpiB,OAC3BoN,OAAQ,SAAA5L,GAAK,OAAIA,EAAM4gB,KAAKhV,QAC5BvO,KAAM,SAAA2C,GAAK,OAAIA,EAAM4gB,KAAKvjB,MAC1BswB,aAAc,SAAA3tB,GAAK,OAAIA,EAAM4gB,KAAK+M,cAClC3oB,OAAQ,SAAAhF,GAAK,OAAIA,EAAM4gB,KAAK5b,QAC5BkY,MAAO,SAAAld,GAAK,OAAIA,EAAM4gB,KAAK1D,OAC3B0Q,QAAS,SAAA5tB,GAAK,OAAIA,EAAM4gB,KAAKgN,SAC7B+Q,mBAAoB,SAAA3+B,GAAK,OAAIA,EAAMgW,WAAWD,SAC9C+G,WAAY,SAAA9c,GAAK,OAAIA,EAAMgW,WAAW8G,YACtC8hB,UAAW,SAAA5+B,GAAK,OAAIA,EAAM6C,SAASC,MACnCutB,MAAO,SAAArwB,GAAK,OAAIA,EAAMqwB,MAAM4H,cAC5B15B,SAAU,SAAAyB,GAAK,OAAIA,EAAM4gB,KAAKriB,UAC9Bqd,SAAU,SAAA5b,GAAK,OAAIA,EAAM4b,wBC4JZijB,IA5Jb7+B,OACE8+B,uBACAC,cACAC,eAAgB,GAChBC,gBAEFv+B,WACEw+B,0BAA2B,SAACl/B,EAAO0F,GACjC1F,EAAM8+B,oBAAsBp5B,GAE9By5B,gBAAiB,SAACn/B,EAAO6+B,GACvB7+B,EAAM++B,WAAaF,GAErBO,oBAAqB,SAACp/B,EAAO3C,GAC3B2C,EAAMg/B,eAAiB3hC,GAEzBgiC,iBAAkB,SAACr/B,EAAO6+B,GACxB7+B,EAAMi/B,YAAcJ,GAEtBS,sBAAuB,SAACt/B,EAADqB,GAAiC,IAAvBhE,EAAuBgE,EAAvBhE,KAAMwQ,EAAiBxM,EAAjBwM,IAAKC,EAAYzM,EAAZyM,MAC1CwN,UAAI1a,IAAIZ,EAAM++B,WAAW1hC,GAAjB,KAAgCwQ,EAAKC,IAE/CyxB,uBAAwB,SAACv/B,EAADsB,GAA2B,IAAjBjE,EAAiBiE,EAAjBjE,KAAMmiC,EAAWl+B,EAAXk+B,KACtCx/B,EAAM++B,WAAW1hC,GAAjB,KAAiCmiC,GAEnCC,wBAAyB,SAACz/B,EAAD4B,GAA4B,IAAlBvE,EAAkBuE,EAAlBvE,KAAMqiC,EAAY99B,EAAZ89B,MAEvCpkB,UAAI1a,IACFZ,EAAM++B,WAAW1hC,GACjB,QACAqiC,KAINv+B,SACQw+B,gBADC,eAAAC,EAAAl+B,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAArD,EAAA4D,EAAAE,GAAA,IAAAb,EAAAM,EAAAg+B,EAAAC,EAAAC,EAAAC,EAAApyB,EAAA,OAAAnP,EAAAnG,EAAAoG,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cACiB0C,EADjBW,EACiBX,OAAQM,EADzBK,EACyBL,QAAag+B,EADtCz9B,EACsCy9B,SAAUC,EADhD19B,EACgD09B,KAAMC,EADtD39B,EACsD29B,UAAWC,EADjE59B,EACiE49B,SADjErhC,EAAAC,KAAA,EAAAD,EAAAE,KAAA,EAIYohC,aAAgBJ,EAAUC,EAAMC,EAAWC,EAAUn+B,EAAQtD,SAAUsD,EAAQrD,OAJ3F,OAIHoP,EAJGjP,EAAAU,KAAAV,EAAAE,KAAA,uBAAAF,EAAAC,KAAA,EAAAD,EAAAyJ,GAAAzJ,EAAA,SAAAA,EAAAS,OAAA,kBAQLmJ,mBACEC,QAAO,GAAAlP,OAAKmP,IAAKC,EAAE,gCAAZ,KAAApP,OAA+CumC,EAA/C,KAAAvmC,OAA2DmP,IAAKC,EAAE,8BACzEC,KAAM,UACNC,SAAU,MAGZrH,EAAO,2BAA6BlE,KAAMwiC,EAAUH,MAAO9xB,EAAO7L,OAd7D,yBAAApD,EAAAW,SAAAhB,EAAA,iCAAAJ,EAAAC,GAAA,OAAAyhC,EAAAvhC,MAAAZ,KAAAzE,YAAA,GAgBDknC,gBAhBC,eAAAC,EAAAz+B,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAAhC,EAAA2C,EAAAE,GAAA,IAAAjB,EAAAM,EAAAg+B,EAAAE,EAAAnyB,EAAA,OAAAnP,EAAAnG,EAAAoG,KAAA,SAAAkB,GAAA,cAAAA,EAAAhB,KAAAgB,EAAAf,MAAA,cAgBiB0C,EAhBjBe,EAgBiBf,OAAQM,EAhBzBS,EAgByBT,QAAag+B,EAhBtCr9B,EAgBsCq9B,SAAUE,EAhBhDv9B,EAgBgDu9B,UAhBhDngC,EAAAhB,KAAA,EAAAgB,EAAAf,KAAA,EAmBYuhC,aAAgBP,EAAUE,EAAWl+B,EAAQtD,SAAUsD,EAAQrD,OAnB3E,OAmBHoP,EAnBGhO,EAAAP,KAAAO,EAAAf,KAAA,uBAAAe,EAAAhB,KAAA,EAAAgB,EAAAwI,GAAAxI,EAAA,SAAAA,EAAAR,OAAA,kBAuBLmJ,mBACEC,QAAO,GAAAlP,OAAKmP,IAAKC,EAAE,gCAAZ,KAAApP,OAA+CumC,EAA/C,KAAAvmC,OAA2DmP,IAAKC,EAAE,8BACzEC,KAAM,UACNC,SAAU,MAGZrH,EAAO,2BAA6BlE,KAAMwiC,EAAUH,MAAO9xB,EAAO7L,OA7B7D,yBAAAnC,EAAAN,SAAAK,EAAA,iCAAAH,EAAAC,GAAA,OAAA0gC,EAAA9hC,MAAAZ,KAAAzE,YAAA,GA+BDqnC,WA/BC,eAAAC,EAAA5+B,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAA2C,EAAA5B,EAAAE,GAAA,IAAAf,EAAAxE,EAAA,OAAAoB,EAAAnG,EAAAoG,KAAA,SAAA6F,GAAA,cAAAA,EAAA3F,KAAA2F,EAAA1F,MAAA,cA+BYgD,EA/BZa,EA+BYb,QAAaxE,EA/BzBuF,EA+ByBvF,KA/BzBkH,EAAA1F,KAAA,EAgCC0hC,aAAW1+B,EAAQtD,SAAUsD,EAAQrD,MAAOnB,GAhC7C,wBAAAkH,EAAAjF,SAAAgF,MAAA,gBAAAN,EAAAG,GAAA,OAAAm8B,EAAAjiC,MAAAZ,KAAAzE,YAAA,GAkCDwnC,WAlCC,eAAAC,EAAA/+B,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAAsF,EAAAia,EAAA2I,GAAA,IAAAhoB,EAAAxE,EAAA,OAAAoB,EAAAnG,EAAAoG,KAAA,SAAAyI,GAAA,cAAAA,EAAAvI,KAAAuI,EAAAtI,MAAA,cAkCYgD,EAlCZqf,EAkCYrf,QAAaxE,EAlCzBwsB,EAkCyBxsB,KAlCzB8J,EAAAtI,KAAA,EAmCC6hC,aAAW7+B,EAAQtD,SAAUsD,EAAQrD,MAAOnB,GAnC7C,wBAAA8J,EAAA7H,SAAA2H,MAAA,gBAAA7C,EAAAiC,GAAA,OAAAo6B,EAAApiC,MAAAZ,KAAAzE,YAAA,GAqCD2nC,aArCC,eAAAC,EAAAl/B,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAAklB,EAAAvC,EAAAI,GAAA,IAAA7iB,EAAAg/B,EAAAhB,EAAAiB,EAAA,OAAAriC,EAAAnG,EAAAoG,KAAA,SAAAqoB,GAAA,cAAAA,EAAAnoB,KAAAmoB,EAAAloB,MAAA,cAqCcgD,EArCdyiB,EAqCcziB,QAAag/B,EArC3Bnc,EAqC2Bmc,gBAAiBhB,EArC5Cnb,EAqC4Cmb,SAAUiB,EArCtDpc,EAqCsDoc,GArCtD/Z,EAAAloB,KAAA,EAsCgBkiC,aAAal/B,EAAQtD,SAAUsiC,EAAiBhB,EAAUiB,EAAIj/B,EAAQrD,OAtCtF,OAwCe,OAxCfuoB,EAAA1nB,KAwCM0C,MACTwG,mBACEC,QAAO,GAAAlP,OAAKmP,IAAKC,EAAE,mCAAZ,KAAApP,OAAkDumC,GACzDl3B,KAAM,UACNC,SAAU,MA5CT,wBAAAme,EAAAznB,SAAAunB,MAAA,gBAAApgB,EAAAC,GAAA,OAAAk6B,EAAAviC,MAAAZ,KAAAzE,YAAA,GAgDDgoC,aAhDC,eAAAC,EAAAv/B,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAAulB,EAAApC,GAAA,IAAAjjB,EAAA+L,EAAApF,EAAA,OAAA/J,EAAAnG,EAAAoG,KAAA,SAAAyoB,GAAA,cAAAA,EAAAvoB,KAAAuoB,EAAAtoB,MAAA,cAgDcgD,EAhDdijB,EAgDcjjB,QAhDdslB,EAAAtoB,KAAA,EAiDgBqiC,aAAar/B,EAAQtD,SAAUsD,EAAQrD,OAjDvD,OAmDiB,OAFhBoP,EAjDDuZ,EAAA9nB,MAmDM2F,SACHwD,EAAUoF,EAAO7L,KAAK9I,OAAS,EAArB,GAAAK,OACTmP,IAAKC,EAAE,iCADE,KAAApP,OACkCsU,EAAO7L,MACrD0G,IAAKC,EAAE,gCAEXH,mBACEC,UACAG,KAAM,UACNC,SAAU,OA3DT,wBAAAue,EAAA7nB,SAAA4nB,MAAA,gBAAArgB,GAAA,OAAAo6B,EAAA5iC,MAAAZ,KAAAzE,YAAA,GA+DDmoC,YA/DC,eAAAC,EAAA1/B,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAA4vB,EAAAtM,GAAA,IAAApjB,EAAA,OAAApD,EAAAnG,EAAAoG,KAAA,SAAA8yB,GAAA,cAAAA,EAAA5yB,KAAA4yB,EAAA3yB,MAAA,cA+DagD,EA/DbojB,EA+DapjB,QA/Db2vB,EAAA3yB,KAAA,EAgECwiC,aAAYx/B,EAAQtD,SAAUsD,EAAQrD,OAhEvC,wBAAAgzB,EAAAlyB,SAAAiyB,MAAA,gBAAAzqB,GAAA,OAAAs6B,EAAA/iC,MAAAZ,KAAAzE,YAAA,GAkEDsoC,iBAlEC,eAAAC,EAAA7/B,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAAmwB,EAAAxM,EAAAC,GAAA,IAAAhkB,EAAAM,EAAA7B,EAAA6/B,EAAAjyB,EAAA,OAAAnP,EAAAnG,EAAAoG,KAAA,SAAAqzB,GAAA,cAAAA,EAAAnzB,KAAAmzB,EAAAlzB,MAAA,cAkEkB0C,EAlElB+jB,EAkEkB/jB,OAAQM,EAlE1ByjB,EAkE0BzjB,QAAS7B,EAlEnCslB,EAkEmCtlB,MAAW6/B,EAlE9Cta,EAkE8Csa,SAlE9C9N,EAAAlzB,KAAA,EAoEG2iC,aACJ3/B,EAAQtD,SACRsD,EAAQrD,MACRqhC,EACA7/B,EAAM++B,WAAWc,GAAjB,MAxEC,OA2EiB,OARhBjyB,EAnEDmkB,EAAA1yB,MA2EM2F,SACTuD,mBACEC,QAAO,GAAAlP,OAAKmP,IAAKC,EAAE,gCAAZ,KAAApP,OAA+CumC,EAA/C,KAAAvmC,OAA2DmP,IAAKC,EAAE,8BACzEC,KAAM,UACNC,SAAU,MAGZrH,EAAO,0BAA4BlE,KAAMwiC,EAAUL,KAAM5xB,EAAO7L,QAlF7D,wBAAAgwB,EAAAzyB,SAAAwyB,MAAA,gBAAA/qB,EAAAoa,GAAA,OAAAogB,EAAAljC,MAAAZ,KAAAzE,YAAA,GAqFPyoC,uBArFO,SAAA/b,EAqFmCgc,GAAa,IAA9BngC,EAA8BmkB,EAA9BnkB,OAA8BmkB,EAAtB1lB,MAC/BuB,EAAO,4BAA6BmgC,IAEhCC,mBAxFC,eAAAC,EAAAlgC,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAA2wB,EAAA3M,GAAA,IAAApkB,EAAAM,EAAA64B,EAAA34B,EAAA,OAAAtD,EAAAnG,EAAAoG,KAAA,SAAA8zB,GAAA,cAAAA,EAAA5zB,KAAA4zB,EAAA3zB,MAAA,cAwFoB0C,EAxFpBokB,EAwFoBpkB,OAAQM,EAxF5B8jB,EAwF4B9jB,QAxF5B2wB,EAAA3zB,KAAA,EAyFkBgjC,aAAUhgC,EAAQtD,UAzFpC,OAAAm8B,EAAAlI,EAAAnzB,KAyFG0C,EAzFH24B,EAyFG34B,KACRR,EAAO,kBAAmBQ,GA1FrB,wBAAAywB,EAAAlzB,SAAAgzB,MAAA,gBAAAlR,GAAA,OAAAwgB,EAAAvjC,MAAAZ,KAAAzE,YAAA,GA4FD8oC,oBA5FC,eAAAC,EAAArgC,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAAmxB,EAAA6H,EAAAE,GAAA,IAAAt5B,EAAAM,EAAAm9B,EAAAhE,EAAAj5B,EAAA,OAAAtD,EAAAnG,EAAAoG,KAAA,SAAAu0B,GAAA,cAAAA,EAAAr0B,KAAAq0B,EAAAp0B,MAAA,cA4FqB0C,EA5FrBo5B,EA4FqBp5B,OAAQM,EA5F7B84B,EA4F6B94B,QAAam9B,EA5F1CnE,EA4F0CmE,eA5F1C/L,EAAAp0B,KAAA,EA6FkBmjC,aAAgBngC,EAAQtD,SAAUsD,EAAQrD,MAAOwgC,GA7FnE,OAAAhE,EAAA/H,EAAA5zB,KA6FG0C,EA7FHi5B,EA6FGj5B,KAERR,EAAO,sBAAuBy9B,GAC9Bz9B,EAAO,mBAAoBQ,GAhGtB,wBAAAkxB,EAAA3zB,SAAAwzB,MAAA,gBAAAzR,EAAAoP,GAAA,OAAAsR,EAAA1jC,MAAAZ,KAAAzE,YAAA,GAkGPipC,kBAlGO,SAAA7G,EAkGuBtU,IAC5BvlB,EADsC65B,EAApB75B,QACX,sBAAuBulB,IAE1Bob,gBArGC,eAAAC,EAAAzgC,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAA4xB,EAAA8H,EAAAC,GAAA,IAAA/5B,EAAAM,EAAAg+B,EAAAE,EAAAqC,EAAAC,EAAAC,EAAA10B,EAAA,OAAAnP,EAAAnG,EAAAoG,KAAA,SAAA80B,GAAA,cAAAA,EAAA50B,KAAA40B,EAAA30B,MAAA,cAqGiB0C,EArGjB85B,EAqGiB95B,OAAQM,EArGzBw5B,EAqGyBx5B,QAAag+B,EArGtCvE,EAqGsCuE,SAAUE,EArGhDzE,EAqGgDyE,UAAWqC,EArG3D9G,EAqG2D8G,aAAcC,EArGzE/G,EAqGyE+G,YAAaC,EArGtFhH,EAqGsFgH,MArGtF9O,EAAA50B,KAAA,EAAA40B,EAAA30B,KAAA,EAwGY0jC,aAAgB1C,EAAUE,EAAWqC,EAAcC,EAAaC,EAAOzgC,EAAQtD,SAAUsD,EAAQrD,OAxG7G,OAwGHoP,EAxGG4lB,EAAAn0B,KAAAm0B,EAAA30B,KAAA,uBAAA20B,EAAA50B,KAAA,EAAA40B,EAAAprB,GAAAorB,EAAA,SAAAA,EAAAp0B,OAAA,kBA4GLmJ,mBACEC,QAAO,GAAAlP,OAAKmP,IAAKC,EAAE,gCAAZ,KAAApP,OAA+CumC,EAA/C,KAAAvmC,OAA2DmP,IAAKC,EAAE,8BACzEC,KAAM,UACNC,SAAU,MAGZrH,EAAO,2BAA6BlE,KAAMwiC,EAAUH,MAAO9xB,EAAO7L,OAlH7D,yBAAAyxB,EAAAl0B,SAAAi0B,EAAA,iCAAA7C,EAAAC,GAAA,OAAAwR,EAAA9jC,MAAAZ,KAAAzE,YAAA,GAoHDwpC,mBApHC,eAAAC,EAAA/gC,IAAAjD,EAAAnG,EAAAqJ,KAAA,SAAAmyB,EAAA2H,EAoH8BiH,GApH9B,OAAAjkC,EAAAnG,EAAAoG,KAAA,SAAAq1B,GAAA,cAAAA,EAAAn1B,KAAAm1B,EAAAl1B,MAAA,QAoHoB0C,EApHpBk6B,EAoHoBl6B,QAClB,wBAAyBmhC,GArH3B,wBAAA3O,EAAAz0B,SAAAw0B,MAAA,gBAAAhD,EAAAC,GAAA,OAAA0R,EAAApkC,MAAAZ,KAAAzE,YAAA,KClCXsiB,UAAI9iB,IAAImqC,KAER,IAqBenoB,GArBD,IAAImoB,IAAKC,OACrBC,SACE9iC,MACA8C,WACA2B,gBACA4C,UACA8B,SACA8M,cACAgI,UACA5B,WACAR,YACA5W,UACA8Q,YACA8K,QACA6V,eACApG,SACA9T,eAEF1a,0BCnCFyZ,UAAIhe,UAAU,WAAYwlC,OAGP,SAAAC,GAAkBA,EAAehmC,OAAOrD,IAAIqpC,GAC/DC,CAFYC,WCDV3nB,UAAI4nB,OAAOC,aAAe,SAAS3rB,EAAK4rB,EAAIC,EAAM/qC,GAGhDgjB,UAAIgoB,SAAS,WACX9oB,GAAMvS,SAAS,eACbuP,MACA4rB,KACAC,OACArkC,IAAK0b,OAAOtP,SAASqE,OAEvB8zB,QAAQxU,MAAMvX,EAAK6rB,4CCRzBG,KAAUC,WAAYC,aAAa,IASnC,IAAMC,IAAa,SAAU,iBAAkB,kBCb/C,SAASC,GAAUt3B,EAAMu3B,GACvB,OAAa,IAATv3B,EACKA,EAAOu3B,EAETv3B,EAAOu3B,EAAQ,IAGjB,SAASC,GAAQx3B,GACtB,IAAMy3B,EAAUl3B,KAAKqB,MAAQ,IAAO81B,OAAO13B,GAC3C,OAAIy3B,EAAU,KACLH,MAAaG,EAAU,IAAK,WAC1BA,EAAU,MACZH,MAAaG,EAAU,MAAO,SAE9BH,MAAaG,EAAU,OAAQ,QAKnC,SAASE,GAAgBC,EAAKC,GASnC,IARA,IAAMC,IACFt2B,MAAO,KAAMzV,OAAQ,MACrByV,MAAO,KAAMzV,OAAQ,MACrByV,MAAO,KAAMzV,OAAQ,MACrByV,MAAO,IAAKzV,OAAQ,MACpByV,MAAO,IAAKzV,OAAQ,MACpByV,MAAO,IAAKzV,OAAQ,MAEfiV,EAAI,EAAGA,EAAI82B,EAAGnrC,OAAQqU,IAC7B,GAAI42B,GAAOE,EAAG92B,GAAGQ,MACf,OAAQo2B,EAAME,EAAG92B,GAAGQ,MAAQ,IAAKu2B,QAAQF,GAAQx2B,QAAQ,2BAA4B,MAAQy2B,EAAG92B,GAAGjV,OAGvG,OAAO6rC,EAAIpgC,WAGN,SAASwgC,GAAiBJ,GAC/B,QAASA,GAAO,GAAGpgC,WAAW6J,QAAQ,UAAW,SAAAV,GAAC,OAAIA,EAAEU,QAAQ,uBAAwB,ODsB1FgP,GAAO4nB,WA5CwB,SAACl1B,EAAIm1B,EAAM3lC,GACxC2kC,KAAUiB,QACN3kC,cAEc,WAAZuP,EAAGf,MACLzP,GAAOyP,KAAM,MACbk1B,KAAUjsB,QAEyB,IAA/BiD,GAAM3Y,QAAQqb,MAAMjkB,OACtBuhB,GAAMvS,SAAS,eAAekD,KAAK,SAAAiS,GACjC,IAAMF,EAAQE,EAAIrb,KAAKqtB,QAAQC,UAAY,YAC3C7U,GAAMvS,SAAS,kBAAoBiV,UAAS/R,KAAK,WAC/CwR,GAAO+nB,UAAUlqB,GAAM3Y,QAAQib,YAC/Bje,EAAK+E,OAAKyL,GAAI1B,SAAS,SAExBmhB,MAAM,SAACtX,GACRgD,GAAMvS,SAAS,aAAakD,KAAK,WAC/B5C,mBACEo8B,0BAA0B,EAC1Bn8B,QAASgP,EACT7O,KAAM,QACNC,SAAU,MAEZ/J,GAAOyP,KAAM,UA/BzB,SAAuB4O,EAAO0nB,GAC5B,OAAI1nB,EAAM2N,QAAQ,UAAY,IACzB+Z,GACE1nB,EAAMpE,KAAK,SAAAwE,GAAI,OAAIsnB,EAAgB/Z,QAAQvN,IAAS,IAgCjDC,CAAc/C,GAAM3Y,QAAQqb,MAAO7N,EAAGuC,KAAKsL,OAC7Cre,IAEAA,GAAOyP,KAAM,OAAQX,SAAS,EAAM6L,OAASqrB,UAAU,MAMzB,IAAhClB,GAAU9Y,QAAQxb,EAAGf,MACvBzP,KAEAA,EAAI,mBAAAvF,OAAoB+V,EAAGf,OAC3Bk1B,KAAUjsB,UAMhBoF,GAAOmoB,UAAU,WACftB,KAAUjsB,SE3CZ+D,UAAI9iB,IAAIusC,KACNvkC,KAAML,IAAQC,IAAI,SAAW,SAC7BqI,KAAM,SAACoF,EAAKC,GAAN,OAAgBrF,IAAKC,EAAEmF,EAAKC,MAIpC9Q,OAAOD,KAAKg2B,GAASlc,QAAQ,SAAAhJ,GAC3ByN,UAAIrK,OAAOpD,EAAKklB,EAAQllB,MAG1ByN,UAAI4nB,OAAO8B,eAAgB,EAE3B,IAAI1pB,WACFuK,GAAI,OACJlJ,UACAnC,SACA/R,SACAkG,OAAQ,SAAAvB,GAAC,OAAIA,EAAEpP,yCCvCjBnG,EAAAgB,EAAAd,EAAA,sBAAA+H,IAAAjI,EAAAgB,EAAAd,EAAA,sBAAA62B,IAAA/2B,EAAAgB,EAAAd,EAAA,sBAAAw3B,IAAA13B,EAAAgB,EAAAd,EAAA,sBAAA21B,IAAA71B,EAAAgB,EAAAd,EAAA,sBAAA82B,IAAAh3B,EAAAgB,EAAAd,EAAA,sBAAAy3B,IAAA,IAAAyV,EAAAptC,EAAA,QAAAqtC,EAAArtC,EAAAK,EAAA+sC,GAEME,EAAW,cACXC,EAAc,YAEb,SAAStlC,IACd,OAAOK,IAAQC,IAAI+kC,GAGd,SAASvW,EAASpwB,GACvB,OAAO2B,IAAQS,IAAIukC,EAAU3mC,GAGxB,SAAS+wB,IACd,OAAOpvB,IAAQklC,OAAOF,GAGjB,SAASzX,IACd,OAAOvtB,IAAQC,IAAIglC,GAGd,SAASvW,EAAYrwB,GAC1B,OAAO2B,IAAQS,IAAIwkC,EAAa5mC,GAG3B,SAASgxB,IACd,OAAOrvB,IAAQklC,OAAOD,8DC1BxB,IAAAE,EAAAztC,EAAA,QAAAA,EAAAK,EAAAotC,GAA4e,uCCA5e,IAAAC,EAAA1tC,EAAA,QAAAA,EAAAK,EAAAqtC,GAA4a,qCCA5a1tC,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,aACAC,IAAA,mBACAC,QAAA,cACAC,QAAA,qeAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,6CCTfF,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,aACAC,IAAA,mBACAC,QAAA,cACAC,QAAA,yVAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,6CCTfF,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,YACAC,IAAA,kBACAC,QAAA,cACAC,QAAA,2kBAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,6CCTf,IAAAytC,EAAA3tC,EAAA,QAAAA,EAAAK,EAAAstC,GAAkgB,qCCAlgB3tC,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,cACAC,IAAA,oBACAC,QAAA,cACAC,QAAA,grCAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,ocCPF0tC,EAAkB,SAAA33B,GAC7B,MAAc,SAAVA,GAEiB,UAAVA,GAGJA,GAGIqX,EAAqB,SAACvJ,EAAU2G,EAAiBF,GAC5D,OAAOrlB,OAAOD,KAAKwlB,GAAiBe,OAAO,SAACC,EAAKb,GAiB/C,OAhBAa,EAAIb,GAAS1lB,OAAOD,KAAKwlB,EAAgBG,IAAQY,OAAO,SAACC,EAAK1V,GAC5D,IAAK63B,EAAchjB,EAAO7U,GAAM,CAC9B,IAAM83B,EAAU3oC,OAAOD,KAAK6e,EAAS8G,GAAO7U,IAAMyV,OAAO,SAACC,EAAKqiB,GAC7D,IAAMhY,EAAUvL,EACbwjB,KAAK,SAAAC,GAAO,OAAIA,EAAQpjB,QAAUA,GAASojB,EAAQj4B,MAAQA,IAAKiD,SAChE+0B,KAAK,SAAA9zB,GAAK,OAAIA,EAAMlE,MAAQ+3B,IACzBj9B,EAAOilB,EAAUA,EAAQjlB,KAAO,GAEtC,OADA4a,EAAIqiB,IAAgBj9B,EAAMiT,EAAS8G,GAAO7U,GAAK+3B,IACxCriB,OAGT,OADAA,EAAI1V,GAAO83B,EACJpiB,EAGT,OADAA,EAAI1V,GAAO0U,EAAgBG,GAAO7U,GAC3B0V,OAEFA,QAILwiB,EAAkB,SAACp9B,EAAMmF,EAAOQ,GACpC,GAAa,UAAT3F,EACF,OAAOjF,IAAEtD,IAAI0N,EAAOQ,GACf,IAAA03B,EAAAC,IACmC33B,GAAjC43B,EADFF,EAAA,GACuBG,EADvBH,EAAAhtB,MAAA,GAECotB,EAAet4B,EAAMo4B,GAC3B,GAAwB,IAApBC,EAASltC,QAAiBmtC,EAEvB,CAKL,OAJsB,SAAhBC,EAAiBv4B,EAAO/Q,GAAS,IAAAupC,EAAAL,IACVlpC,GAApB+oC,EAD8BQ,EAAA,GAClBC,EADkBD,EAAAttB,MAAA,GAErC,OAAuB,IAAhBjc,EAAK9D,OAAe6U,EAAQu4B,EAAcv4B,EAAM,GAAGg4B,GAAUS,GAE/DF,CAAcD,EAAcD,GANnC,OAAOC,IAAgB,GA2BhB1iB,EAAiB,SAAC7V,EAAKC,GAClC,GAAY,cAARD,EAAqB,CACvB,IAAM8D,EAAQ7D,EAAM6G,UAAU,SAAAkR,GAAE,MAAkB,WAAd2gB,IAAO3gB,IAAmBA,EAAG4gB,MAAM9qB,SAAS,mBAEhF,OADgB7N,EAAMpU,IAAI,SAACmsB,EAAIvY,GAAL,OAAWA,IAAMqE,EAAQ,gBAAkBkU,IAGvE,GAAY,UAARhY,EAAiB,CACnB,GAAqB,iBAAVC,EACT,OAAQA,GAEV,IAAM6D,EAAQ7D,EAAM6G,UAAU,SAAAkR,GAAE,MAAkB,WAAd2gB,IAAO3gB,IAAmBA,EAAG4gB,MAAM9qB,SAAS,aAEhF,OADgB7N,EAAMpU,IAAI,SAACmsB,EAAIvY,GAAL,OAAWA,IAAMqE,EAAQ,UAAYkU,IAGjE,OAAO/X,GAGI6V,EAAc,SAAdA,EAAe+iB,EAAQ74B,GAClC,OAAO64B,EAAOpjB,OAAO,SAACqjB,EAAOl2B,GA8C3B,MA7CY,gBAAR5C,EACF84B,EAAMl2B,EAAKg2B,MAAM,IAAMG,MAAMC,QAAQp2B,EAAKg2B,MAAM,IAC5Ch2B,EAAKg2B,MAAM,GAAG/sC,IAAI,SAAAmsB,GAAE,OAAIA,EAAG4gB,QAC3Bh2B,EAAKg2B,MAAM,GAAGA,MACS,aAAlBh2B,EAAKg2B,MAAM,GACpBE,EAAMl2B,EAAKg2B,MAAM,IAAMh2B,EAAKg2B,MAAM,GAAGnjB,OAAO,SAACC,EAAKujB,GAChD,SAAAxtC,OAAAytC,IAAWxjB,IAAXyjB,OAAmBF,EAAOL,MAAM,GAAhCQ,OAA0CH,EAAOL,MAAM,IAAIluC,GAAE,IAAAe,WAA0B,IAAhB6U,KAAK6e,WAAiBlpB,SAAS,gBAE/F8iC,MAAMC,QAAQp2B,EAAKg2B,MAAM,KACf,YAAlBh2B,EAAKg2B,MAAM,IAAsC,aAAlBh2B,EAAKg2B,MAAM,IAAuC,aAAlBh2B,EAAKg2B,MAAM,GAIhD,aAAlBh2B,EAAKg2B,MAAM,GACpBE,EAAMl2B,EAAKg2B,MAAM,IAAMh2B,EAAKg2B,MAAM,GAAGnjB,OAAO,SAACC,EAAKb,GAChD,OAAAukB,OAAY1jB,EAAZyjB,OAAkBtkB,EAAM+jB,MAAM,GAAK/jB,EAAM+jB,MAAM,UAEtB,iBAAlBh2B,EAAKg2B,MAAM,GACpBE,EAAMl2B,EAAKg2B,MAAM,IAAMzpC,OAAOD,KAAK0T,EAAKg2B,MAAM,IAAInjB,OAAO,SAACC,EAAK2jB,GAC7D,SAAA5tC,OAAAytC,IAAWxjB,IAAXyjB,OAAmBE,GAAUp5B,MAAO2C,EAAKg2B,MAAM,GAAGS,GAAQ3uC,GAAE,IAAAe,WAA0B,IAAhB6U,KAAK6e,WAAiBlpB,SAAS,cAE5E,WAAlB2M,EAAKg2B,MAAM,GACpBE,EAAMl2B,EAAKg2B,MAAM,IAAMh2B,EAAKg2B,MAAM,GAAG/sC,IAAI,SAAA+U,GACvC,OAAOzR,OAAOD,KAAK0R,GAAM/U,IAAI,SAAA2D,GAC3B,OAASwQ,IAAKxQ,EAAMyQ,MAAOW,EAAKpR,GAAO9E,GAAE,IAAAe,WAA0B,IAAhB6U,KAAK6e,WAAiBlpB,SAAS,aAG3D,WAAlB2M,EAAKg2B,MAAM,GACpBE,EAAMl2B,EAAKg2B,MAAM,IAAwB,cAAlBh2B,EAAKg2B,MAAM,IAAsBh2B,EAAKg2B,MAAM,IAAMh2B,EAAKg2B,MAAM,GAAGA,MAC5D,eAAlBh2B,EAAKg2B,MAAM,GACpBE,EAAMl2B,EAAKg2B,MAAM,IAAMU,EAAc12B,EAAKg2B,MAAM,IACrB,UAAlBh2B,EAAKg2B,MAAM,GACpBE,EAAMl2B,EAAKg2B,MAAM,IAAM/iB,EAAejT,EAAKg2B,MAAM,GAAIh2B,EAAKg2B,MAAM,IACvDG,MAAMC,QAAQp2B,EAAKg2B,MAAM,KACL,WAA5BD,IAAO/1B,EAAKg2B,MAAM,GAAG,MAAoBG,MAAMC,QAAQp2B,EAAKg2B,MAAM,GAAG,KAAQh2B,EAAKg2B,MAAM,GAAG,GAAd,MAC9EE,EAAMl2B,EAAKg2B,MAAM,IAAM9iB,EAAYlT,EAAKg2B,MAAM,GAAIh2B,EAAKg2B,MAAM,IACpDG,MAAMC,QAAQp2B,EAAKg2B,MAAM,IAClCE,EAAMl2B,EAAKg2B,MAAM,IAAMh2B,EAAKg2B,MAAM,GACP,QAAlBh2B,EAAKg2B,MAAM,GACpBE,EAAMl2B,EAAKg2B,MAAM,IAAMh2B,EAAKg2B,MAAM,GAAGA,MAAMxK,KAAK,KACvCxrB,EAAKg2B,MAAM,IAA+B,WAAzBD,IAAO/1B,EAAKg2B,MAAM,IAC5CE,EAAMl2B,EAAKg2B,MAAM,IAAMW,EAAY32B,EAAKg2B,MAAM,IAE9CE,EAAMl2B,EAAKg2B,MAAM,IAAMh2B,EAAKg2B,MAAM,GAjClCE,EAAMl2B,EAAKg2B,MAAM,IAAMh2B,EAAKg2B,MAAM,GAAGnjB,OAAO,SAACC,EAAKb,GAChD,SAAAppB,OAAAytC,IAAWxjB,IAAXyjB,OAAmBtkB,EAAM+jB,MAAM,IAAO34B,MAAO4U,EAAM+jB,MAAM,GAAIluC,GAAE,IAAAe,WAA0B,IAAhB6U,KAAK6e,WAAiBlpB,SAAS,cAkCrG6iC,QAILS,EAAc,SAAAC,GAClB,OAAOrqC,OAAOD,KAAKsqC,GAAQ/jB,OAAO,SAACC,EAAK9S,GAEtC,OADA8S,EAAI9S,GAAQ42B,EAAO52B,GACZ8S,QAIL4jB,EAAgB,SAAAr5B,GACpB,GAAIA,IAAU84B,MAAMC,QAAQ/4B,IACT,WAAjB04B,IAAO14B,IACgB,IAAvBA,EAAM24B,MAAMxtC,QACO,YAAnB6U,EAAM24B,MAAM,GAAkB,KAAAa,EAAAC,IACPz5B,EAAM24B,MADC,GAE9B,OAASe,QAAQ,EAAM5X,KAFO0X,EAAA,GAEDG,KAFCH,EAAA,IAGzB,GAAqB,iBAAVx5B,EAAoB,KAAA45B,EACf55B,EAAM65B,MAAM,KADGC,EAAAL,IAAAG,EAAA,GAEpC,OAASF,QAAQ,EAAO5X,KAFYgY,EAAA,GAENH,KAFMG,EAAA,IAItC,OAASJ,QAAQ,EAAO5X,KAAM,KAAM6X,KAAM,OAGtC/B,EAAgB,SAAChjB,EAAO7U,GAC5B,QAAmB,iBAAV6U,GAAoC,UAAR7U,IAG1Bg6B,EAAgB,SAAhBA,EAAiBC,EAAeC,EAAyBrlB,EAAOslB,EAAWC,EAASrsB,EAAU2G,GAAoB,IAAA2lB,EAAAjC,IACpFgC,GADoFE,EAAAD,EAAA,GACpHr6B,EADoHs6B,EACpHt6B,IAAKlF,EAD+Gw/B,EAC/Gx/B,KAAWy/B,EADoGF,EAAAlvB,MAAA,GAEvH1K,GAAQoU,EAAOslB,GAAX1uC,OAAAytC,IAAyBkB,EAAQngC,UAAUpO,IAAI,SAAAqX,GAAM,OAAIA,EAAOlD,MAAKmL,MAAM,GAAI,KAErFqvB,EAAuBC,EAAY,QAAS1sB,EAAUtN,GAA/B24B,OAClBlB,EAAgB,QAASnqB,EAAS8G,GAAOslB,GAAYC,EAAQvuC,IAAI,SAAAmsB,GAAE,OAAIA,EAAGhY,MAAKmL,MAAM,GAAI,IADvEguB,OAEjBn5B,EAAMi6B,IAFWd,OAGpBn5B,EAAMi6B,GACTS,EAAiCD,EAAY,kBAAmB/lB,EAAiBjU,GAAhD24B,OAC5BlB,EAAgB,kBAAmBxjB,EAAgBG,GAAOslB,GAAYC,EAAQvuC,IAAI,SAAAmsB,GAAE,OAAIA,EAAGhY,MAAKmL,MAAM,GAAI,IAAI,GADlFguB,OAE3Bn5B,GAAOlF,EAAMo/B,KAFcf,OAG9Bn5B,GAAOlF,EAAMo/B,IAepB,MAbc,UAAVrlB,GAAwC,WAAnBulB,EAAQ,GAAGp6B,MAClCw6B,EAAuBzsB,EAAS8G,GAAOulB,EAAQ,GAAGp6B,KAA3Bo5B,OACdrrB,EAAS8G,GAAOulB,EAAQ,GAAGp6B,KAAKC,MAAUu6B,GAC/CA,EACJE,EAAiC3sB,EAAS8G,GAAOulB,EAAQ,GAAGp6B,KAA3Bo5B,OACxBjqC,OAAOD,KAAK6e,EAAS8G,GAAOulB,EAAQ,GAAGp6B,KAAKC,OAChDwV,OAAO,SAACC,EAAKsC,GACZ,OAAAohB,OAAY1jB,EAAZyjB,OAAkBnhB,GAAMld,EAAMiT,EAAS8G,GAAOulB,EAAQ,GAAGp6B,KAAKC,MAAM+X,WAErE0iB,GACDA,GAGyB,IAAxBH,EAAanvC,QACd6uC,cAAeO,EAAsBN,wBAAyBQ,EAAgC3a,QAASwa,EAAa,IACtHP,EAAcQ,EAAsBE,EAAgC7lB,EAAOslB,EAAWI,EAAcxsB,EAAU2G,IAG9G+lB,EAAc,SAAC3/B,EAAMmF,EAAOQ,GAChC,GAAa,UAAT3F,EACF,OAAOjF,IAAEtD,IAAI0N,EAAOQ,GACf,IAAAk6B,EAAAvC,IAC+C33B,GAA7CoU,EADF8lB,EAAA,GACS36B,EADT26B,EAAA,GACctC,EADdsC,EAAA,GACmCrC,EADnCqC,EAAAxvB,MAAA,GAECotB,EAAe1iC,IAAEtD,IAAI0N,GAAQ4U,EAAO7U,EAAKq4B,IAC/C,GAAwB,IAApBC,EAASltC,QAAiBmtC,EAEvB,CAQL,OAPsB,SAAhBC,EAAiBv4B,EAAO/Q,GAC5B,GAAoB,IAAhBA,EAAK9D,OACP,OAAO,EAF4B,IAAAwvC,EAAAxC,IAIVlpC,GAApB+oC,EAJ8B2C,EAAA,GAIlBlC,EAJkBkC,EAAAzvB,MAAA,GAKrC,QAAOlL,EAAM,GAAGg4B,IAAWO,EAAcv4B,EAAM,GAAGg4B,GAAUS,GAEvDF,CAAcD,EAAcD,GATnC,OAAOC,IAAgB,GAchB3iB,EAAiB,SAAC5V,EAAKC,GAClC,IAAM46B,EAA2B9B,MAAMC,QAAQ/4B,IAAUA,EAAM7U,OAAS,GAAK6U,EAAM66B,MAAM,SAAA9iB,GAAE,MAAkB,WAAd2gB,IAAO3gB,KACtG,MAAe,UAARhY,GACG,WAARA,GACQ,cAARA,GACQ,+BAARA,GACQ,8BAARA,GACiB,iBAAVC,GACU,iBAAVA,GACU,kBAAVA,GACG,OAAVA,GACA46B,GAGStjB,EAAsB,SAAC1C,EAAO9G,EAAUgtB,GACnD,OAAO5rC,OAAOD,KAAK6e,GAAUliB,IAAI,SAACmU,GAChC,OAAO+N,EAAS/N,GAAKg7B,QACfnmB,QAAO7U,MAAKC,MAlLK,SAACD,EAADxM,GAAwB,IAAAC,EAAAimC,IAAAlmC,EAAA,GAAjBsH,EAAiBrH,EAAA,GAAXwM,EAAWxM,EAAA,GACjD,GAAa,SAATqH,GAAmBmF,EAAM7U,OAAS,EACpC,UAAAK,OAAWwU,GACN,GAAY,cAARD,EAAqB,CAC9B,IAAM8D,EAAQ7D,EAAM6G,UAAU,SAAAkR,GAAE,MAAW,kBAAPA,IAC9BijB,EAAeh7B,EAAMkL,QAI3B,OAHe,IAAXrH,IACFm3B,EAAan3B,IAAW80B,OAAU,cAAe,mBAE5CqC,EACF,MAAY,WAARj7B,EACF7Q,OAAOD,KAAK+Q,GAAOwV,OAAO,SAACC,EAAK1V,GAAU,OAAAo5B,OAAY1jB,EAAZyjB,OAAkBn5B,EAAMC,EAAMD,GAAK,UAE/EC,EAqKoBi7B,CAAmBl7B,EAAK+N,EAAS/N,GAAKg7B,UACzDnmB,QAAO7U,MAAKC,MAAOk7B,EAAWptB,EAAS/N,GAAM+6B,EAAalmB,GAAO7U,QAIrEm7B,EAAa,SAAbA,EAAcptB,EAAUgtB,GAC5B,OAAO5rC,OAAOD,KAAK6e,GAAUliB,IAAI,SAAAk0B,GAAW,IAAAqb,EAAA1B,IACpB3rB,EAASgS,GADW,GACnCjlB,EADmCsgC,EAAA,GAC7Bn7B,EAD6Bm7B,EAAA,GAE1C,GACW,YAATtgC,GACAA,EAAKgT,SAAS,YACdhT,EAAKgT,SAAS,UAAYhT,EAAKgT,SAAS,SAC5B,aAAZiS,EAEA,OAAS6Y,OAAU7Y,EAASob,EAAWl7B,EAAO86B,KACzC,GAAa,SAATjgC,GAAmBmF,EAAM7U,OAAS,EAC3C,OAASwtC,OAAU7Y,EAAD,IAAAt0B,OAAcwU,KAC3B,GAAInF,EAAKgT,SAAS,WAAahT,EAAKgT,SAAS,WAAahT,EAAKgT,SAAS,SAC7E,MAAwB,iBAAV7N,GACR24B,OAAU7Y,EAAS9f,KACnB24B,OAAU7Y,GAAW6Y,MAAS34B,KAC/B,GAAa,mBAATnF,EACT,OAAS89B,OAAU34B,EAAO8f,IACrB,GAAa,QAATjlB,EAAgB,CACzB,IAAMugC,EAAWlsC,OAAOD,KAAK+Q,GAAOwV,OAAO,SAACC,EAAK1V,GAE/C,OADA0V,EAAI1V,GAAmB,iBAAZ+f,EAA6B9f,EAAMD,GAAOC,EAAMD,GAAK,GACzD0V,OAEH4lB,EAA8B,iBAAZvb,EACpBgb,EAAahb,GAAStK,OAAO,SAACC,EAAKuiB,GACnC,OAAAmB,OAAY1jB,EAAZyjB,OAAuBhqC,OAAOD,KAAK+oC,GAAS,GAAK9oC,OAAOosC,OAAOtD,GAAS,GAAGh4B,aAE3E86B,EAAahb,GACjB,OAAS6Y,OAAU7Y,EAADqZ,OAAekC,EAAoBD,KAChD,GAAgB,QAAZtb,EAAmB,CAC5B,IAAMyb,EAAKv7B,EAAM65B,MAAM,KAAKjuC,IAAI,SAAA8T,GAAC,OAAIZ,SAASY,EAAG,MACjD,OAASi5B,OAAU7Y,GAAW6Y,MAAS4C,KAClC,GAAgB,UAAZzb,EAAqB,CAC9B,IAAMjc,EAAQ7D,EAAM6G,UAAU,SAAAkR,GAAE,MAAW,YAAPA,IAC9BijB,EAAeh7B,EAAMkL,QAI3B,OAHe,IAAXrH,IACFm3B,EAAan3B,IAAW80B,OAAU,UAAW,QAEtCA,OAAU7Y,EAASkb,IAE5B,OAASrC,OAAU7Y,EAAS9f,OAKrByW,EAAmB,SAAAlC,GAW9B,OAAOA,EAAYiB,OAAO,SAACC,EAAKqK,GAC9B,IAAM0b,EAAc5lC,IAAE6lC,SAAS3b,EAAQ/f,IAAK+f,EAAQiW,MAAOjW,EAAQvL,cAAc3oB,IAAI,SAAAmsB,GAAE,OAAIA,EAAG2jB,gBACxFC,GAAiB5F,MAAOjW,EAAQiW,MAAOh2B,IAAK+f,EAAQ/f,KAAO+f,EAAQlL,MAAOgnB,SAAU9b,EAAQ/f,KAAO+f,EAAQlL,MAAOinB,WAAY/b,EAAQiW,MAAO+F,OAAQN,GAC3J,GAAI1b,EAAQ9c,SAAU,CACpB,IAAM+4B,EAAcjc,EAAQ/f,KAAyB,aAAlB+f,EAAQlL,SAAxBppB,OAAAytC,IAAyDxjB,IAAKkmB,IAAflmB,EAClE,SAAAjqB,OAAAytC,IAAW8C,GAAX9C,IAfwB,SAAtB+C,EAAuBznB,EAAawhB,EAAOh2B,GAArB,OAA6BwU,EAAYiB,OAAO,SAACC,EAAKqK,GAChF,IAAM0b,EAAc5lC,IAAE6lC,SAAS3b,EAAQ/f,IAAK+f,EAAQiW,MAAOjW,EAAQvL,cAAc3oB,IAAI,SAAAmsB,GAAE,OAAIA,EAAG2jB,gBACxFC,GAAiB5F,MAAOjW,EAAQiW,MAAOh2B,IAAK+f,EAAQ/f,KAAO+f,EAAQlL,MAAOgnB,SAAU77B,EAAK87B,WAAY9F,EAAO+F,OAAQN,GAC1H,GAAI1b,EAAQ9c,SAAU,CACpB,IAAM+4B,KAAUvwC,OAAAytC,IAAOxjB,IAAKkmB,IAC5B,SAAAnwC,OAAAytC,IAAW8C,GAAX9C,IAA0B+C,EAAoBlc,EAAQ9c,SAAU+yB,EAAOh2B,KAEzE,SAAAvU,OAAAytC,IAAWxjB,IAAKkmB,SAQYK,CAAoBlc,EAAQ9c,SAAU8c,EAAQiW,MAAOjW,EAAQ/f,KAAO+f,EAAQlL,SAExG,OAAQkL,EAAQ/f,KAAyB,aAAlB+f,EAAQlL,SAAxBppB,OAAAytC,IAAyDxjB,IAAKkmB,IAAflmB,2CCzS1D1rB,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,YACAC,IAAA,kBACAC,QAAA,cACAC,QAAA,2OAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,6CCTfF,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,WACAC,IAAA,iBACAC,QAAA,cACAC,QAAA,28CAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,6CCTfF,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,WACAC,IAAA,iBACAC,QAAA,cACAC,QAAA,sqBAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,oECTfF,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,cACAC,IAAA,oBACAC,QAAA,cACAC,QAAA,knBAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,6CCTfF,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,YACAC,IAAA,kBACAC,QAAA,cACAC,QAAA,8yDAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,6CCTfF,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,qBACAC,IAAA,2BACAC,QAAA,cACAC,QAAA,mcAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,sECTfF,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,YACAC,IAAA,kBACAC,QAAA,cACAC,QAAA,4XAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,6CCTf,IAAAgyC,EAAAlyC,EAAA,QAAAA,EAAAK,EAAA6xC,GAA0a,qCCA1alyC,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,kBACAC,IAAA,wBACAC,QAAA,cACAC,QAAA,mcAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,kLCEfujB,UAAI9iB,IAAIwxC,KAER,IAAMC,GACJC,GAAItmC,QCbJwP,OACE+2B,UAAW,YACXxc,aAAc,eACdyc,cAAe,gBACfC,MAAO,QACPr0B,WAAY,aACZs0B,eAAgB,kBAChBC,oBAAqB,uBACrBC,MAAO,QACP5/B,WAAY,aACZ6/B,eAAgB,eAChBC,SAAU,WACVC,WAAY,cACZC,QAAS,WACTC,UAAW,YACXC,aAAc,gBACdC,SAAU,WACVC,OAAQ,SACRC,QAAS,UACTC,eAAgB,QAChBC,UAAW,YACXC,WAAY,cACZC,WAAY,cACZC,WAAY,cACZC,OAAQ,SACRC,cAAe,iBACfC,UAAW,aACXC,SAAU,YACVC,QAAS,UACTC,OAAQ,gBACRC,MAAO,SACPC,UAAW,WACXC,UAAW,WACXC,YAAa,aACbC,YAAa,aACbC,UAAW,WACXC,MAAO,SACPC,MAAO,QACPC,aAAc,gBACdC,UAAW,aACXC,gBAAiB,cACjBC,aAAc,gBACdC,UAAW,aACXC,gBAAiB,mBACjB1pB,IAAK,MACL2pB,KAAM,OACNC,cAAe,iBACfC,YAAa,eACbC,YAAa,eACbC,WAAY,cACZC,QAAS,MACTC,QAAS,MACTpqC,SAAU,YACVqqC,MAAO,QACPC,YAAa,eACbC,YAAa,kBACbC,YAAa,eACbC,IAAK,MACLC,IAAK,MACLC,UAAW,aACXC,MAAO,QACPC,cAAe,YACfjlC,KAAM,OACNklC,aAAc,gBACdtd,MAAO,QACPjU,QAAS,UACTR,SAAU,WACVpX,cAAe,iBACfopC,cAAe,eAEjBC,QACEC,OAAQ,UACR3D,UAAW,YACX4D,OAAQ,SACRN,MAAO,QACPjtC,KAAM,eAERwtC,OACE7hC,MAAO,aACP8hC,MAAO,SACPC,kBAAmB,uBACnBthB,SAAU,gBACVC,SAAU,WACVshB,aAAc,qDACdC,aAAc,oEACdC,IAAK,MACLC,WAAY,kBACZC,qBAAsB,qEACtBC,sBAAuB,2BAEzBpE,eACEA,cAAe,gBACf2D,OAAQ,qBAEV/3B,YACEkH,MAAO,aACPuxB,YAAa,eACbC,KAAM,8MAERrE,OACEhoB,YAAa,gKACb3I,OAAQ,cAEV9O,YACEw/B,cAAe,gBACfuE,aAAc,+NACdC,WAAY,8EACZC,eAAgB,gHAChBC,eAAgB,uLAChBC,gBAAiB,6LAEnBC,OACEC,aAAc,uCACdC,aAAc,0CACdC,UAAW,oBACXC,UAAW,2BACXjjC,MAAO,QACPkjC,WAAY,MACZ1mC,KAAM,OACN2mC,OAAQ,SACR1F,OAAQ,SACRjxC,IAAK,MACL42C,OAAQ,SACRC,SAAU,WACVj3C,GAAI,KACJiU,KAAM,OACNijC,OAAQ,SACRC,SAAU,WACV1qC,OAAQ,SACR7D,QAAS,UACTwuC,KAAM,OACNC,QAAS,UACTC,MAAO,QACP/pB,OAAQ,SACRgqB,OAAQ,SACRC,QAAS,WAEXltC,UACE6rC,KAAM,sDACNrsB,YAAa,gUACb+nB,cAAe,yBAEjB8C,OACEqC,OAAQ,SACRS,eAAgB,wBAChBC,YAAa,kDAEf3C,KACEiC,OAAQ,SACRU,YAAa,4CAEf1C,KACEmB,KAAM,2EAERjB,OACEyC,OAAQ,eACR9F,cAAe,sBACfsE,KAAM,iLAER54B,UACEq6B,QAAS,UACTC,MAAO,QACPC,YAAa,eACbC,SAAU,aAEZjgB,OACEA,MAAO,QACPkgB,eAAgB,mBAChB3G,OAAQ,SACRrxC,GAAI,KACJ8E,KAAM,OACN2H,OAAQ,SACRozB,MAAO,QACPC,SAAU,WACVE,YAAa,cACbD,OAAQ,SACRkY,YAAa,cACbrvC,QAAS,UACTsvC,SAAU,WACVC,WAAY,aACZC,MAAO,QACPC,UAAW,YACXC,WAAY,aACZC,YAAa,eACbC,WAAY,cACZC,gBAAiB,mBACjBC,eAAgB,kBAChBC,gBAAiB,mBACjBC,iBAAkB,oBAClBC,kBAAmB,qBACnBC,mBAAoB,sBACpBC,cAAe,iBACfC,eAAgB,kBAChBC,UAAW,yBACXC,WAAY,gCACZC,cAAe,6BACfC,QAAS,mCACTC,0BAA2B,gDAC3BC,qCAAsC,iDACtCC,uBAAwB,iCACxBC,kCAAmC,kCACnCC,qBAAsB,uCACtBC,YAAa,kDACbC,aAAc,gBACdC,cAAe,0BACfC,cAAe,qBACf/zC,MAAO,QACPgnC,OAAQ,SACRgN,uBAAwB,uEACxBC,wBAAyB,0EACzBC,kCAAmC,oEACnCC,oCAAqC,sEACrCC,gCAAiC,kEACjCC,mCAAoC,4DACpCC,uCAAwC,+DACxCC,iCAAkC,0EAClCC,4BAA6B,kEAC7BC,wBAAyB,6EACzBC,oBAAqB,2DACrBC,GAAI,OACJC,UAAW,YACXnD,OAAQ,SACRoD,SAAU,WACVtmB,SAAU,WACVrmB,MAAO,SACPsmB,SAAU,WACVsmB,OAAQ,SACRC,gBAAiB,2EACjBC,gBAAiB,0BACjBC,kBAAmB,4BACnBC,mBAAoB,4BACpBC,mBAAoB,4BACpBC,qBAAsB,yDACtBvgB,sBAAuB,2BACvBwgB,0BAA2B,mCAC3BC,eAAgB,2BAChBC,iBAAkB,gCAClBC,eAAgB,kBAChBC,gBAAiB,mBACjBC,mBAAoB,4BACpBC,eAAgB,0DAChBC,gBAAiB,mBACjBC,4BAA6B,sCAC7BC,oBAAqB,iDAEvBj4B,UACEA,SAAU,WACVk4B,eAAgB,kBAChBC,SAAU,YACVC,YAAa,2BACbC,kBAAmB,2BACnBC,oBAAqB,wBACrBC,OAAQ,SACRC,QAAS,UACTC,OAAQ,SACRC,SAAU,WACVC,qBAAsB,2BAExBpe,aACE7f,KAAM,OACNg6B,UAAW,YACXD,MAAO,QACPvY,MAAO,QACPC,SAAU,WACVyc,YAAa,eACbj0B,SAAU,WACVk0B,eAAgB,kBAChB73B,MAAO,QACPob,OAAQ,SACRtzB,OAAQ,SACRuzB,YAAa,cACbyc,WAAY,sBACZC,sBAAuB,2BACvBC,kBACE3uC,MAAO,QACPsmB,SAAU,WACVqoB,iBAAkB,oBAClBC,uBAAwB,qGACxBC,uBAAwB,kFACxBC,qBAAsB,uDACtBC,cAAe,kBACfC,iBAAkB,qBAClBC,gBAAiB,gCACjBC,aAAc,6BACdxX,QAAS,UACTyX,OAAQ,SACRtF,MAAO,UAGXuF,aACEC,iBAAkB,gBAClBC,cAAe,kBACfzd,MAAO,QACPC,SAAU,WACVyd,SAAU,YACVxd,OAAQ,SACRC,YAAa,eAEfnc,SACEA,QAAS,UACT8D,OAAQ,SACR61B,MAAO,QACPvR,KAAM,OACNwR,UAAW,aACXC,QAAS,WACTP,OAAQ,SACRQ,WAAY,6CACZpwB,OAAQ,SACRgqB,OAAQ,SACRqG,gBAAiB,kBACjBC,eAAgB,kBAChBC,QAAS,sBACTx3B,YAAa,wBACby3B,iBAAkB,qBAClBC,YAAa,eACbrE,aAAc,gBACdj1C,QAAS,UACTu5C,OAAQ,SACRpG,MAAO,QACPqG,WAAY,cACZC,UAAW,aACXpG,SAAU,YACVqG,aAAc,qBACdC,gBAAiB,wBACjBjC,OAAQ,qBACRD,QAAS,sBACTE,SAAU,uBACV3uB,UAAW,YACXE,aAAc,gBACd0wB,SAAU,YACVC,UAAW,aACXv+C,GAAI,KACJ6wB,QAAS,UACT2tB,MAAO,QACPC,OAAQ,SACRt+C,QAAS,UACTu+C,eAAgB,kBAChBC,cAAe,+BACfC,UAAW,eACXC,SAAU,OACV71B,WAAY,SACZ81B,SAAU,qBAEZC,eACE1B,iBAAkB,gBAClB2B,KAAM,OACNC,OAAQ,SACRC,SAAU,YAEZjzC,eACEA,cAAe,kBAEjBoX,UACEA,SAAU,WACVkL,SAAU,WACV4wB,OAAQ,SACRC,OAAQ,SACRC,OAAQ,SACRC,YAAa,cACbC,KAAM,iBACNC,WAAY,cACZC,QAAS,UACTC,SAAU,WACVC,KAAM,OACNC,IAAK,MACLC,WAAY,cACZlpB,SAAU,WACVmpB,OAAQ,SACRC,SAAU,YACVC,QAAS,sBACTC,MAAO,mBACPC,aAAc,gBACdC,MAAO,QACP16B,OAAQ,SACR26B,OAAQ,SACRC,YAAa,mBACbC,YAAa,eACb5a,QAAS,iCACT5b,YAAa,cACby2B,aAAc,6BACdC,uBAAwB,0BACxBC,qBAAsB,wBACtBC,oBAAqB,yBACrBC,oBAAqB,uBACrBC,iBAAkB,WAClBzZ,MAAO,QACP0Z,oBAAqB,gCACrBC,QAAS,oBACTC,OAAQ,SACRC,MAAO,QACPC,OAAQ,kBACRC,SAAU,mBACVC,eAAgB,kBAChBn6C,WAAY,kDACZo6C,eAAgB,kCAChBC,0BAA2B,2EAE7BxyC,SACEC,aAAc,gBACdwyC,kBAAmB,wBACnBC,SAAU,cACV5xC,OAAQ,UACRC,UAAW,aACX4xC,aAAc,2BACdv7C,MAAO,QACPw7C,WAAY,cACZC,KAAM,OACNC,KAAM,OACNpK,OAAQ,SACRqD,OAAQ,SACRgH,OAAQ,SACR5hD,GAAI,KACJ4I,QAAS,UACTm3B,OAAQ,SACR8hB,mBAAoB,wBACpBC,iBAAkB,qCAClB9zC,MAAO,QACPlJ,KAAM,OACNg2C,gBAAiB,0BACjBC,kBAAmB,4BACnBgH,UAAW,kBACXlH,gBAAiB,2EACjBmH,oBAAqB,mGAEvBhB,OACEh9B,WAAY,cACZi+B,SAAU,+BACVC,UAAW,gCACXC,mBAAoB,mIACpBrZ,YAAa,eACbsZ,YAAa,0CACb5b,WAAY,cACZ6b,kBAAmB,sBACnBC,gBAAiB,0BACjB5b,YAAa,eACb6b,sBAAuB,0BACvBC,cAAe,uBACfC,UAAW,aACX1rC,SAAU,WACV2rC,SAAU,WACV54B,YAAa,cACbwc,MAAO,QACPqc,QAAS,UACTnb,UAAW,YACXob,YAAa,kBACbC,eAAgB,sBAChBC,aAAc,gBACd3a,WAAY,cACZ4a,aAAc,gBACdC,oBAAqB,wBACrBC,YAAa,4BACbC,YAAa,wBACbC,iBAAkB,yBAClBC,0BAA2B,8CAC3BC,aAAc,uBACdC,aAAc,iEACdC,mBAAoB,yBACpBC,mBAAoB,2CACpBC,yBAA0B,4BAC1BC,SAAU,WACVC,WAAY,gBACZl9C,IAAK,MACLm9C,cAAe,kBACfzE,OAAQ,SACR0E,eAAgB,kBAChBC,mBAAoB,8BACpBvc,KAAM,OACNwc,UAAW,aACXC,oBAAqB,wCACrBC,mBAAoB,uCACpBC,OAAQ,SACRpX,OAAQ,SACRqX,gBAAiB,mCACjBC,iBAAkB,6BAClBC,gBAAiB,4BACjBC,KAAM,OACNC,gBAAiB,uBD7cdC,KAELC,GAAIp5C,QEjBJwP,OACE+2B,UAAW,KACXxc,aAAc,KACdyc,cAAe,KACfC,MAAO,MACPr0B,WAAY,QACZs0B,eAAgB,OAChBC,oBAAqB,OACrBC,MAAO,KACP5/B,WAAY,KACZ6/B,eAAgB,KAChBC,SAAU,WACVC,WAAY,UACZC,QAAS,OACTC,UAAW,YACXC,aAAc,OACdC,SAAU,WACVC,OAAQ,SACRC,QAAS,UACTC,eAAgB,MAChBC,UAAW,OACXC,WAAY,YACZC,WAAY,YACZC,WAAY,QACZC,OAAQ,KACRC,cAAe,OACfC,UAAW,MACXC,SAAU,OACVC,QAAS,OACTC,OAAQ,OACRC,MAAO,MACPC,UAAW,QACXC,UAAW,QACXC,YAAa,UACbC,YAAa,UACbC,UAAW,QACXC,MAAO,MACPC,MAAO,QACPC,aAAc,UACdC,UAAW,UACXC,gBAAiB,WACjBC,aAAc,UACdC,UAAW,OACXC,gBAAiB,QACjB1pB,IAAK,MACL2pB,KAAM,KACNC,cAAe,OACfC,YAAa,OACbC,YAAa,OACbC,WAAY,OACZC,QAAS,MACTC,QAAS,MACTpqC,SAAU,OACVqqC,MAAO,QACPC,YAAa,eACbC,YAAa,kBACbC,YAAa,eACbC,IAAK,MACLC,IAAK,MACLC,UAAW,aACXC,MAAO,KACPC,cAAe,YACfjlC,KAAM,MACNklC,aAAc,MAEhBE,QACEC,OAAQ,OACR3D,UAAW,KACX4D,OAAQ,OACRN,MAAO,KACPjtC,KAAM,QAERwtC,OACE7hC,MAAO,OACP8hC,MAAO,KACPrhB,SAAU,KACVC,SAAU,KACVwhB,IAAK,MACLC,WAAY,QACZ2O,eAAgB,yBAElB7S,eACEA,cAAe,KACf2D,OAAQ,aAEV/3B,YACEkH,MAAO,OACPuxB,YAAa,OACbC,KAAM,0GAERrE,OACEhoB,YAAa,+CACb3I,OAAQ,QAEV9O,YACEw/B,cAAe,KACfuE,aAAc,2FACdC,WAAY,oBACZC,eAAgB,yBAChBC,eAAgB,oEAChBC,gBAAiB,kEAEnBC,OACEC,aAAc,iBACdC,aAAc,kBACdC,UAAW,OACXC,UAAW,QACXjjC,MAAO,KACPkjC,WAAY,MACZ1mC,KAAM,KACN2mC,OAAQ,KACR1F,OAAQ,KACRjxC,IAAK,KACL42C,OAAQ,KACRC,SAAU,MACVj3C,GAAI,KACJiU,KAAM,KACNijC,OAAQ,KACRC,SAAU,MACV1qC,OAAQ,KACR7D,QAAS,KACTwuC,KAAM,KACNC,QAAS,KACTC,MAAO,KACP/pB,OAAQ,KACRgqB,OAAQ,MACRC,QAAS,OAEXltC,UACE6rC,KAAM,eACNrsB,YAAa,+GACb+nB,cAAe,QAEjB8C,OACEqC,OAAQ,KACRS,eAAgB,SAChBC,YAAa,wBAEf3C,KACEiC,OAAQ,KACRU,YAAa,kBAEf1C,KACEmB,KAAM,qCAERjB,OACEyC,OAAQ,KACR9F,cAAe,OACfsE,KAAM,mEAER54B,UACEq6B,QAAS,KACTC,MAAO,KACPC,YAAa,OACbC,SAAU,SFvIP4M,KAELC,GAAIv5C,QGrBJwP,OACE+2B,UAAW,mBACXxc,aAAc,eACdyc,cAAe,gBACfC,MAAO,OACPr0B,WAAY,WACZs0B,eAAgB,wBAChBC,oBAAqB,2BACrBC,MAAO,SACP5/B,WAAY,cACZ6/B,eAAgB,eAChBC,SAAU,WACVC,WAAY,cACZC,QAAS,YACTC,UAAW,iBACXC,aAAc,eACdC,SAAU,iBACVC,OAAQ,SACRC,QAAS,UACTC,eAAgB,QAChBC,UAAW,YACXC,WAAY,cACZC,WAAY,cACZC,WAAY,cACZC,OAAQ,WACRC,cAAe,iBACfC,UAAW,oBACXC,SAAU,YACVC,QAAS,UACTC,OAAQ,kBACRC,MAAO,SACPC,UAAW,WACXC,UAAW,WACXC,YAAa,aACbC,YAAa,aACbC,UAAW,WACXC,MAAO,SACPC,MAAO,QACPC,aAAc,iBACdC,UAAW,kBACXC,gBAAiB,SACjBC,aAAc,gBACdC,UAAW,aACXC,gBAAiB,mBACjB1pB,IAAK,UACL2pB,KAAM,aACNC,cAAe,iBACfC,YAAa,kBACbC,YAAa,uBACbC,WAAY,mBACZC,QAAS,MACTC,QAAS,MACTpqC,SAAU,sBACVqqC,MAAO,QACPC,YAAa,mBACbC,YAAa,sBACbC,YAAa,cACbC,IAAK,MACLC,IAAK,MACLC,UAAW,iBACXC,MAAO,OACPC,cAAe,YACfjlC,KAAM,OACNklC,aAAc,kBAEhBE,QACEC,OAAQ,QACR3D,UAAW,mBACX4D,OAAQ,SACRN,MAAO,OACPjtC,KAAM,iBAERwtC,OACE7hC,MAAO,uBACP8hC,MAAO,SACPrhB,SAAU,UACVC,SAAU,aACVwhB,IAAK,OACLC,WAAY,eACZ2O,eAAgB,uFAElB7S,eACEA,cAAe,gBACf2D,OAAQ,sBAEV/3B,YACEkH,MAAO,eACPuxB,YAAa,mBACbC,KAAM,8MAERrE,OACEhoB,YAAa,gKACb3I,OAAQ,YAEV9O,YACEw/B,cAAe,gBACfuE,aAAc,+NACdC,WAAY,8EACZC,eAAgB,gHAChBC,eAAgB,uLAChBC,gBAAiB,6LAEnBC,OACEC,aAAc,uCACdC,aAAc,0CACdC,UAAW,oBACXC,UAAW,2BACXjjC,MAAO,SACPkjC,WAAY,cACZ1mC,KAAM,OACN2mC,OAAQ,SACR1F,OAAQ,SACRjxC,IAAK,SACL42C,OAAQ,WACRC,SAAU,WACVj3C,GAAI,KACJiU,KAAM,QACNijC,OAAQ,QACRC,SAAU,SACV1qC,OAAQ,SACR7D,QAAS,WACTwuC,KAAM,SACNC,QAAS,WACTC,MAAO,QACP/pB,OAAQ,WACRgqB,OAAQ,WACRC,QAAS,aAEXltC,UACE6rC,KAAM,sDACNrsB,YAAa,gUACb+nB,cAAe,6BAEjB8C,OACEqC,OAAQ,WACRS,eAAgB,yBAChBC,YAAa,0CAEf3C,KACEiC,OAAQ,WACRU,YAAa,0CAEf1C,KACEmB,KAAM,2EAERjB,OACEyC,OAAQ,eACR9F,cAAe,yBACfsE,KAAM,iLAER54B,UACEq6B,QAAS,aACTC,MAAO,SACPC,YAAa,eACbC,SAAU,iBHnIP8M,KAELC,GAAIz5C,QIzBJwP,OACE+2B,UAAW,iBACXxc,aAAc,eACdyc,cAAe,gBACfC,MAAO,QACPr0B,WAAY,gBACZs0B,eAAgB,wBAChBC,oBAAqB,0BACrBC,MAAO,SACP5/B,WAAY,cACZ6/B,eAAgB,eAChBC,SAAU,WACVC,WAAY,cACZC,QAAS,WACTC,UAAW,YACXC,aAAc,oBACdC,SAAU,WACVC,OAAQ,SACRC,QAAS,UACTC,eAAgB,QAChBC,UAAW,YACXC,WAAY,cACZC,WAAY,cACZC,WAAY,cACZC,OAAQ,SACRC,cAAe,iBACfC,UAAW,aACXC,SAAU,YACVC,QAAS,UACTC,OAAQ,mBACRC,MAAO,SACPC,UAAW,WACXC,UAAW,WACXC,YAAa,aACbC,YAAa,aACbC,UAAW,WACXC,MAAO,SACPC,MAAO,SACPC,aAAc,iBACdC,UAAW,aACXC,gBAAiB,cACjBC,aAAc,iBACdC,UAAW,gBACXC,gBAAiB,8BACjB1pB,IAAK,SACL2pB,KAAM,YACNC,cAAe,mBACfC,YAAa,sBACbC,YAAa,mBACbC,WAAY,kBACZC,QAAS,MACTC,QAAS,MACTpqC,SAAU,iBACVqqC,MAAO,QACPC,YAAa,oBACbC,YAAa,4BACbC,YAAa,oBACbC,IAAK,MACLC,IAAK,MACLC,UAAW,kBACXC,MAAO,OACPC,cAAe,YACfjlC,KAAM,OACNklC,aAAc,kBACdtd,MAAO,eAETwd,QACEC,OAAQ,eACR3D,UAAW,iBACX4D,OAAQ,SACRN,MAAO,OACPjtC,KAAM,gBAERwtC,OACE7hC,MAAO,yBACP8hC,MAAO,eACPrhB,SAAU,oBACVC,SAAU,SACVwhB,IAAK,eACLC,WAAY,qBACZ2O,eAAgB,kFAElB7S,eACEA,cAAe,gBACf2D,OAAQ,oBAEV/3B,YACEkH,MAAO,iBACPuxB,YAAa,mBACbC,KAAM,qNAERrE,OACEhoB,YAAa,2KACb3I,OAAQ,oBAEV9O,YACEw/B,cAAe,gBACfuE,aAAc,+NACdC,WAAY,8EACZC,eAAgB,gHAChBC,eAAgB,uLAChBC,gBAAiB,6LAEnBC,OACEC,aAAc,8CACdC,aAAc,8CACdC,UAAW,sBACXC,UAAW,gCACXjjC,MAAO,QACPkjC,WAAY,MACZ1mC,KAAM,OACN2mC,OAAQ,UACR1F,OAAQ,WACRjxC,IAAK,UACL42C,OAAQ,WACRC,SAAU,aACVj3C,GAAI,KACJiU,KAAM,OACNijC,OAAQ,QACRC,SAAU,WACV1qC,OAAQ,WACR7D,QAAS,UACTwuC,KAAM,YACNC,QAAS,WACTC,MAAO,QACP/pB,OAAQ,WACRgqB,OAAQ,UACRC,QAAS,aAEXltC,UACE6rC,KAAM,yDACNrsB,YAAa,2TACb+nB,cAAe,6BAEjB8C,OACEqC,OAAQ,WACRS,eAAgB,qCAChBC,YAAa,6DAEf3C,KACEiC,OAAQ,WACRU,YAAa,uDAEf1C,KACEmB,KAAM,uEAERjB,OACEyC,OAAQ,kBACR9F,cAAe,2BACfsE,KAAM,8LAER54B,UACEq6B,QAAS,aACTC,MAAO,SACPC,YAAa,oBACbC,SAAU,uBJ7HR7nC,EAAO,IAAIuhC,KAGfsT,OAAQn9C,IAAQC,IAAI,aAAe,KAEnC6pC,aAGaxhC,2fKnCR,SAAew3B,EAAtB/hC,EAAAC,EAAAqB,EAAAC,EAAAuE,EAAAG,GAAA,OAAAo5C,EAAAl/C,MAAAZ,KAAAzE,8CAAO,SAAAsF,EAA+BuhC,EAAUC,EAAMC,EAAWC,EAAUpQ,EAAMpxB,GAA1E,IAAAuD,EAAA,OAAAy7C,EAAAllD,EAAAoG,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cACCkD,EAAO,IAAI07C,SACO,KAApBzd,EAAS0d,QACX37C,EAAKnB,IAAI,WAAYo/B,GAEE,KAArBD,EAAU2d,QACZ37C,EAAKnB,IAAI,YAAam/B,GAExBh+B,EAAKnB,IAAI,OAAQk/B,GARZnhC,EAAAE,KAAA,EAUQC,aACXC,QAASjG,YAAS82B,GAClB5wB,IAAG,4BAAA1F,OAA8BumC,EAA9B,UACH5gC,OAAQ,OACRC,QAASC,EAAYX,GACrBuD,SAfG,cAAApD,EAAAS,OAAA,SAAAT,EAAAU,MAAA,wBAAAV,EAAAW,SAAAhB,6BAmBA,SAASq/C,EAAqB/tB,EAAMiQ,EAAUxiC,GACnD,SAAA/D,OAAUR,YAAS82B,GAAnB,WAAAt2B,OAAkCumC,EAAlC,KAAAvmC,OAA8C+D,GAGzC,SAAekjC,EAAtBn8B,EAAAiC,EAAAI,GAAA,OAAAm3C,EAAAv/C,MAAAZ,KAAAzE,8CAAO,SAAA2G,EAA0BiwB,EAAMpxB,EAAOqhC,GAAvC,OAAA2d,EAAAllD,EAAAoG,KAAA,SAAAkB,GAAA,cAAAA,EAAAhB,KAAAgB,EAAAf,MAAA,cAAAe,EAAAf,KAAA,EACQC,aACXC,QAASjG,YAAS82B,GAClB5wB,IAAG,4BAAA1F,OAA8BumC,GACjC5gC,OAAQ,OACRC,QAASC,EAAYX,KALlB,cAAAoB,EAAAR,OAAA,SAAAQ,EAAAP,MAAA,wBAAAO,EAAAN,SAAAK,6BASA,SAAeygC,EAAtB15B,EAAAG,EAAAC,EAAAC,GAAA,OAAA82C,EAAAx/C,MAAAZ,KAAAzE,8CAAO,SAAAsL,EAA+Bu7B,EAAUE,EAAWnQ,EAAMpxB,GAA1D,OAAAg/C,EAAAllD,EAAAoG,KAAA,SAAA6F,GAAA,cAAAA,EAAA3F,KAAA2F,EAAA1F,MAAA,cAAA0F,EAAA1F,KAAA,EACQC,aACXC,QAASjG,YAAS82B,GAClB5wB,IAAG,4BAAA1F,OAA8BumC,EAA9B,UACH5gC,OAAQ,SACRC,QAASC,EAAYX,GACrBuD,MAAQg+B,eANL,cAAAx7B,EAAAnF,OAAA,SAAAmF,EAAAlF,MAAA,wBAAAkF,EAAAjF,SAAAgF,6BAUA,SAAeo8B,EAAtBvf,EAAAC,EAAAC,GAAA,OAAAy8B,EAAAz/C,MAAAZ,KAAAzE,8CAAO,SAAAiO,EAA0B2oB,EAAMpxB,EAAOqhC,GAAvC,OAAA2d,EAAAllD,EAAAoG,KAAA,SAAAyI,GAAA,cAAAA,EAAAvI,KAAAuI,EAAAtI,MAAA,cAAAsI,EAAAtI,KAAA,EACQC,aACXC,QAASjG,YAAS82B,GAClB5wB,IAAG,4BAAA1F,OAA8BumC,GACjC5gC,OAAQ,SACRC,QAASC,EAAYX,KALlB,cAAA2I,EAAA/H,OAAA,SAAA+H,EAAA9H,MAAA,wBAAA8H,EAAA7H,SAAA2H,6BASA,SAAe85B,EAAtBtQ,EAAAC,EAAAC,EAAAG,EAAAC,GAAA,OAAAgtB,EAAA1/C,MAAAZ,KAAAzE,8CAAO,SAAA6tB,EAA4B+I,EAAM9I,EAAU+Y,EAAUiB,EAAItiC,GAA1D,OAAAg/C,EAAAllD,EAAAoG,KAAA,SAAAqoB,GAAA,cAAAA,EAAAnoB,KAAAmoB,EAAAloB,MAAA,aACa,KAAdiiC,EAAG4c,SACL5c,EAAK,MAFF/Z,EAAAloB,KAAA,EAKQC,aACXC,QAASjG,YAAS82B,GAClB5wB,IAAK,oCACLC,OAAQ,OACRC,QAASC,EAAYX,GACrBuD,MAAQ/C,IAAKlG,YAASguB,GAAWzpB,KAAMwiC,EAAUiB,MACjDkd,QAAS,IAXN,cAAAj3B,EAAA3nB,OAAA,SAAA2nB,EAAA1nB,MAAA,wBAAA0nB,EAAAznB,SAAAunB,6BAwBA,SAAeqa,EAAtB7P,EAAAK,GAAA,OAAAusB,EAAA5/C,MAAAZ,KAAAzE,8CAAO,SAAAu4B,EAA4B3B,EAAMpxB,GAAlC,OAAAg/C,EAAAllD,EAAAoG,KAAA,SAAA8yB,GAAA,cAAAA,EAAA5yB,KAAA4yB,EAAA3yB,MAAA,cAAA2yB,EAAA3yB,KAAA,EACQC,aACXC,QAASjG,YAAS82B,GAClB5wB,IAAK,kCACLC,OAAQ,MACRC,QAASC,EAAYX,KALlB,cAAAgzB,EAAApyB,OAAA,SAAAoyB,EAAAnyB,MAAA,wBAAAmyB,EAAAlyB,SAAAiyB,6BASA,SAAesQ,EAAtBlQ,GAAA,OAAAusB,EAAA7/C,MAAAZ,KAAAzE,8CAAO,SAAA84B,EAAyBlC,GAAzB,OAAA4tB,EAAAllD,EAAAoG,KAAA,SAAAqzB,GAAA,cAAAA,EAAAnzB,KAAAmzB,EAAAlzB,MAAA,cAAAkzB,EAAAlzB,KAAA,EACQC,aACXC,QAASjG,YAAS82B,GAClB5wB,IAAG,4BACHC,OAAQ,QAJL,cAAA8yB,EAAA3yB,OAAA,SAAA2yB,EAAA1yB,MAAA,wBAAA0yB,EAAAzyB,SAAAwyB,6BAQA,SAAekQ,EAAtBpQ,EAAAK,EAAAC,GAAA,OAAAisB,EAAA9/C,MAAAZ,KAAAzE,8CAAO,SAAAs5B,EAA+B1C,EAAMpxB,EAAOsoB,GAA5C,OAAA02B,EAAAllD,EAAAoG,KAAA,SAAA8zB,GAAA,cAAAA,EAAA5zB,KAAA4zB,EAAA3zB,MAAA,cAAA2zB,EAAA3zB,KAAA,EACQC,aACXC,QAASjG,YAAS82B,GAClB5wB,IAAG,uCAAA1F,OAAyCR,YAASguB,IACrD7nB,OAAQ,MACRC,QAASC,EAAYX,KALlB,cAAAg0B,EAAApzB,OAAA,SAAAozB,EAAAnzB,MAAA,wBAAAmzB,EAAAlzB,SAAAgzB,6BASA,SAAe+O,EAAtBlP,EAAAC,GAAA,OAAAgsB,EAAA//C,MAAAZ,KAAAzE,8CAAO,SAAA85B,EAA2BlD,EAAMpxB,GAAjC,OAAAg/C,EAAAllD,EAAAoG,KAAA,SAAAu0B,GAAA,cAAAA,EAAAr0B,KAAAq0B,EAAAp0B,MAAA,cAAAo0B,EAAAp0B,KAAA,EACQC,aACXC,QAASjG,YAAS82B,GAClB5wB,IAAK,kCACLC,OAAQ,OACRC,QAASC,EAAYX,KALlB,cAAAy0B,EAAA7zB,OAAA,SAAA6zB,EAAA5zB,MAAA,wBAAA4zB,EAAA3zB,SAAAwzB,6BASA,SAAe0O,EAAtB9O,EAAAC,EAAAC,EAAAO,GAAA,OAAAkrB,EAAAhgD,MAAAZ,KAAAzE,8CAAO,SAAAu6B,EAAgC3D,EAAMpxB,EAAOqhC,EAAU3Q,GAAvD,OAAAsuB,EAAAllD,EAAAoG,KAAA,SAAA80B,GAAA,cAAAA,EAAA50B,KAAA40B,EAAA30B,MAAA,cAAA20B,EAAA30B,KAAA,EACQC,aACXC,QAASjG,YAAS82B,GAClB5wB,IAAG,4BAAA1F,OAA8BumC,GACjC5gC,OAAQ,QACRC,QAASC,EAAYX,GACrBuD,MAAQmtB,YACR8uB,QAAS,IAPN,cAAAxqB,EAAAp0B,OAAA,SAAAo0B,EAAAn0B,MAAA,wBAAAm0B,EAAAl0B,SAAAi0B,6BAWA,SAAegP,EAAtBnP,EAAAC,EAAAK,EAAAC,EAAAC,EAAAK,EAAAC,GAAA,OAAAoqB,EAAAjgD,MAAAZ,KAAAzE,8CAAO,SAAA86B,EAA+B+L,EAAUE,EAAWqC,EAAcC,EAAaC,EAAO1S,EAAMpxB,GAA5F,OAAAg/C,EAAAllD,EAAAoG,KAAA,SAAAq1B,GAAA,cAAAA,EAAAn1B,KAAAm1B,EAAAl1B,MAAA,cAAAk1B,EAAAl1B,KAAA,EACQC,aACXC,QAASjG,YAAS82B,GAClB5wB,IAAG,4BAAA1F,OAA8BumC,EAA9B,UACH5gC,OAAQ,QACRC,QAASC,EAAYX,GACrBuD,MAAQg+B,YAAWwe,cAAenc,EAAcoc,aAAcnc,EAAaC,WANxE,cAAAvO,EAAA30B,OAAA,SAAA20B,EAAA10B,MAAA,wBAAA00B,EAAAz0B,SAAAw0B,6BAUP,IAAM30B,EAAc,SAACX,GAAD,OAAWA,GAAUqB,cAAA,UAAAvG,OAA2BwG,uDCvIpEjI,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,YACAC,IAAA,kBACAC,QAAA,cACAC,QAAA,4kCAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,6CCTfF,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,WACAC,IAAA,iBACAC,QAAA,cACAC,QAAA,27CAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,6CCTfF,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,YACAC,IAAA,kBACAC,QAAA,cACAC,QAAA,20BAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,6CCTfF,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,YACAC,IAAA,kBACAC,QAAA,cACAC,QAAA,odAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,6CCTfF,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,YACAC,IAAA,kBACAC,QAAA,cACAC,QAAA,gdAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,kCCRfmF,EAAAC,SAAkB6V,SAAA,UAAAE,eAAA,UAAAurC,kBAAA,UAAA3rC,OAAA,UAAA4rC,UAAA,UAAAC,UAAA,UAAAC,aAAA,UAAAC,aAAA,4CCDlB,IAAAC,EAAAjnD,EAAA,QAAAknD,EAAAlnD,EAAAK,EAAA4mD,GAAAE,EAAAnnD,EAAA,QAIMonD,EAAUC,IAAM/L,QACpB6K,QAAS,MAIXiB,EAAQE,aAAar9C,SAAStJ,IAC5B,SAAAsJ,GAAQ,OAAIA,GACZ,SAAAitB,GACE,IAAIqf,EAGJ,GAFA7K,QAAQvgC,IAAR,SAAA1J,OAAqBy1B,IAEjBA,EAAMjtB,SAAU,CAClB,IAAMs9C,EAAQrwB,EAAMjtB,SAASC,KAAKgtB,MAAQA,EAAMjtB,SAASC,KAAKgtB,MAAQA,EAAMjtB,SAASC,KACrFqsC,EAAgBrf,EAAMjtB,SAAS5C,QAAQ,gBAAgByc,SAAS,oBAAjD,GAAAriB,OAERy1B,EAAMvmB,QAFE,OAAAlP,OAEW8lD,GAFX,GAAA9lD,OACRy1B,EAAMvmB,cAGb4lC,EAAerf,EAQjB,OALAxmB,mBACEC,QAAS4lC,EACTzlC,KAAM,QACNC,SAAU,MAELiT,QAAQ6S,OAAOK,KAIXkwB,yCCjCfpnD,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,iBACAC,IAAA,uBACAC,QAAA,cACAC,QAAA,w+BAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,6CCTfF,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,aACAC,IAAA,mBACAC,QAAA,aACAC,QAAA,qXAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,6CCTfF,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,EAAA,QAAAI,EAAAJ,EAAAK,EAAAF,GAAAG,EAAAN,EAAA,QAAAO,EAAAP,EAAAK,EAAAC,GAEAE,EAAA,IAAiBJ,EAAAK,GACjBC,GAAA,aACAC,IAAA,mBACAC,QAAA,cACAC,QAAA,4MAEaN,EAAAE,EAAMK,IAAAN,GACJN,EAAA,6CCTf,ICAgNsnD,GCQhNhiD,KAAA,UACAqM,OACA41C,WACA32C,KAAA+F,OACAY,UAAA,GAEAiwC,WACA52C,KAAA+F,OACA7E,QAAA,KAGAiB,UACA00C,SADA,WAEA,eAAAlmD,OAAAmE,KAAA6hD,YAEAG,SAJA,WAKA,OAAAhiD,KAAA8hD,UACA,YAAA9hD,KAAA8hD,UAEA,sCCnBAjiD,EAAgBN,OAAAO,EAAA,EAAAP,CACdqiD,EHTF,WAA0B,IAAa7hD,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,MAA/DF,KAA+DiiD,IAAwBp1C,MAAvF7M,KAAuFgiD,SAAA5hD,OAA0B8hD,cAAA,SAAjHliD,KAAuImiD,aAAAjiD,EAAA,OAA4BE,OAAOgiD,aAA1KpiD,KAA0K+hD,mBGYpM,EACA,KACA,WACA,MAIAliD,EAAAQ,QAAAC,OAAA,YACehG,EAAA,EAAAuF,gCCnBfJ,EAAAC,SAAkB6V,SAAA,UAAAE,eAAA,UAAAurC,kBAAA,UAAA3rC,OAAA,UAAA4rC,UAAA,UAAAC,UAAA,UAAAC,aAAA,UAAAC,aAAA","file":"static/js/app.3fcec8f6.js","sourcesContent":["import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-pdf\",\n \"use\": \"icon-pdf-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-people\",\n \"use\": \"icon-people-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-eye-open\",\n \"use\": \"icon-eye-open-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--7-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=69c6c5c4&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--7-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=69c6c5c4&scoped=true&lang=css&\"","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-exit-fullscreen\",\n \"use\": \"icon-exit-fullscreen-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-nested\",\n \"use\": \"icon-nested-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-theme\",\n \"use\": \"icon-theme-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-form\",\n \"use\": \"icon-form-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-dashboard\",\n \"use\": \"icon-dashboard-usage\",\n \"viewBox\": \"0 0 128 100\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","const isLocalhost = (instanceName) =>\n instanceName.startsWith('localhost:') || instanceName.startsWith('127.0.0.1:')\n\nexport const baseName = (instanceName = 'localhost') => {\n if (instanceName.match(/https?:\\/\\//)) {\n return instanceName\n } else {\n return isLocalhost(instanceName) ? `http://${instanceName}` : `https://${instanceName}`\n }\n}\n","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-shopping\",\n \"use\": \"icon-shopping-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-bug\",\n \"use\": \"icon-bug-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-international\",\n \"use\": \"icon-international-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-qq\",\n \"use\": \"icon-qq-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-link\",\n \"use\": \"icon-link-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=591d6778&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=591d6778&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TagsView.vue?vue&type=style&index=0&id=e1cdb714&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TagsView.vue?vue&type=style&index=0&id=e1cdb714&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-guide 2\",\n \"use\": \"icon-guide 2-usage\",\n \"viewBox\": \"0 0 1000 1000\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-language\",\n \"use\": \"icon-language-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-password\",\n \"use\": \"icon-password-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-peoples\",\n \"use\": \"icon-peoples-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-money\",\n \"use\": \"icon-money-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-example\",\n \"use\": \"icon-example-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-list\",\n \"use\": \"icon-list-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-settings\",\n \"use\": \"icon-settings-usage\",\n \"viewBox\": \"0 0 490.2 490.2\",\n \"content\": \"\\r\\n\\r\\n\\t\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\r\\n\\t\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-message\",\n \"use\": \"icon-message-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-table\",\n \"use\": \"icon-table-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Layout.vue?vue&type=style&index=0&id=767d264f&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Layout.vue?vue&type=style&index=0&id=767d264f&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-eye\",\n \"use\": \"icon-eye-usage\",\n \"viewBox\": \"0 0 128 64\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","var map = {\n\t\"./404.svg\": \"oUrx\",\n\t\"./bug.svg\": \"F3lI\",\n\t\"./chart.svg\": \"yCkv\",\n\t\"./clipboard.svg\": \"vDVG\",\n\t\"./component.svg\": \"VtY+\",\n\t\"./dashboard.svg\": \"94Jb\",\n\t\"./documentation.svg\": \"kPu2\",\n\t\"./drag.svg\": \"m7++\",\n\t\"./edit.svg\": \"qkZ8\",\n\t\"./email.svg\": \"y7eQ\",\n\t\"./example.svg\": \"MMMJ\",\n\t\"./excel.svg\": \"ZZmv\",\n\t\"./exit-fullscreen.svg\": \"28eg\",\n\t\"./eye-open.svg\": \"1+ww\",\n\t\"./eye.svg\": \"TfVu\",\n\t\"./form.svg\": \"6xvN\",\n\t\"./fullscreen.svg\": \"mSHS\",\n\t\"./guide 2.svg\": \"ICep\",\n\t\"./guide.svg\": \"ZoO1\",\n\t\"./icon.svg\": \"nZHn\",\n\t\"./international.svg\": \"F9+T\",\n\t\"./language.svg\": \"JYDz\",\n\t\"./link.svg\": \"GPBF\",\n\t\"./list.svg\": \"MokB\",\n\t\"./lock.svg\": \"qwAt\",\n\t\"./message.svg\": \"R/8a\",\n\t\"./money.svg\": \"MEYL\",\n\t\"./nested.svg\": \"3PhE\",\n\t\"./password.svg\": \"Kj24\",\n\t\"./pdf.svg\": \"+aF5\",\n\t\"./people.svg\": \"0Fbn\",\n\t\"./peoples.svg\": \"LxGF\",\n\t\"./qq.svg\": \"FDDl\",\n\t\"./search.svg\": \"jo2x\",\n\t\"./settings.svg\": \"P8iQ\",\n\t\"./shopping.svg\": \"EqXK\",\n\t\"./size.svg\": \"hkRB\",\n\t\"./star.svg\": \"cIpu\",\n\t\"./tab.svg\": \"j7e1\",\n\t\"./table.svg\": \"R/Hx\",\n\t\"./theme.svg\": \"5TQQ\",\n\t\"./tree.svg\": \"k80C\",\n\t\"./user.svg\": \"s7Vf\",\n\t\"./wechat.svg\": \"gNoN\",\n\t\"./zip.svg\": \"iqZD\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"Uf/o\";","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-component\",\n \"use\": \"icon-component-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import mod from \"-!../node_modules/babel-loader/lib/index.js?cacheDirectory!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/babel-loader/lib/index.js?cacheDirectory!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=6b42edcf&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"App.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('router-view')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function needReboot(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/need_reboot`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function restartApp(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/restart`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import Cookies from 'js-cookie'\nimport { needReboot, restartApp } from '@/api/app'\n\nconst app = {\n state: {\n sidebar: {\n opened: Cookies.get('sidebarStatus') ? !!+Cookies.get('sidebarStatus') : true,\n withoutAnimation: false\n },\n device: 'desktop',\n language: Cookies.get('language') || 'en',\n needReboot: false,\n size: Cookies.get('size') || 'medium',\n invitesEnabled: false\n },\n mutations: {\n TOGGLE_SIDEBAR: state => {\n state.sidebar.opened = !state.sidebar.opened\n state.sidebar.withoutAnimation = false\n if (state.sidebar.opened) {\n Cookies.set('sidebarStatus', 1)\n } else {\n Cookies.set('sidebarStatus', 0)\n }\n },\n CLOSE_SIDEBAR: (state, withoutAnimation) => {\n Cookies.set('sidebarStatus', 0)\n state.sidebar.opened = false\n state.sidebar.withoutAnimation = withoutAnimation\n },\n TOGGLE_DEVICE: (state, device) => {\n state.device = device\n },\n SET_INVITES_ENABLED: (state, invitesEnabled) => {\n state.invitesEnabled = invitesEnabled\n },\n SET_LANGUAGE: (state, language) => {\n state.language = language\n Cookies.set('language', language)\n },\n TOGGLE_REBOOT: (state, needReboot) => {\n state.needReboot = needReboot\n },\n SET_SIZE: (state, size) => {\n state.size = size\n Cookies.set('size', size)\n }\n },\n actions: {\n closeSideBar({ commit }, { withoutAnimation }) {\n commit('CLOSE_SIDEBAR', withoutAnimation)\n },\n async NeedReboot({ commit, getters }) {\n const response = await needReboot(getters.authHost, getters.token)\n commit('TOGGLE_REBOOT', response.data['need_reboot'])\n },\n async RestartApplication({ commit, getters }) {\n await restartApp(getters.authHost, getters.token)\n commit('TOGGLE_REBOOT', false)\n },\n SetInvitesEnabled({ commit }, invitesEnabled) {\n commit('SET_INVITES_ENABLED', invitesEnabled)\n },\n setLanguage({ commit }, language) {\n commit('SET_LANGUAGE', language)\n },\n setSize({ commit }, size) {\n commit('SET_SIZE', size)\n },\n toggleDevice({ commit }, device) {\n commit('TOGGLE_DEVICE', device)\n },\n toggleSideBar({ commit }) {\n commit('TOGGLE_SIDEBAR')\n }\n }\n}\n\nexport default app\n","const errorLog = {\n state: {\n logs: []\n },\n mutations: {\n ADD_ERROR_LOG: (state, log) => {\n state.logs.push(log)\n }\n },\n actions: {\n addErrorLog({ commit }, log) {\n commit('ADD_ERROR_LOG', log)\n }\n }\n}\n\nexport default errorLog\n","import _ from 'lodash'\n\nimport request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function fetchLog(authHost, token, params, page = 1) {\n const normalizedParams = new URLSearchParams(\n _.omitBy({ ...params, page }, _.isUndefined)\n ).toString()\n\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/moderation_log?${normalizedParams}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function fetchAdmins(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users?filters=is_admin`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function fetchModerators(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users?filters=is_moderator`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import { fetchLog, fetchAdmins, fetchModerators } from '@/api/moderationLog'\n\nconst moderationLog = {\n state: {\n fetchedLog: [],\n logItemsCount: 0,\n admins: [],\n moderators: [],\n logLoading: true,\n adminsLoading: true\n },\n mutations: {\n SET_LOG_LOADING: (state, status) => {\n state.logLoading = status\n },\n SET_ADMINS_LOADING: (state, status) => {\n state.adminsLoading = status\n },\n SET_MODERATION_LOG: (state, log) => {\n state.fetchedLog = log\n },\n SET_MODERATION_LOG_COUNT: (state, count) => {\n state.logItemsCount = count\n },\n SET_ADMINS: (state, admins) => {\n state.admins = admins\n },\n SET_MODERATORS: (state, moderators) => {\n state.moderators = moderators\n }\n },\n actions: {\n async FetchModerationLog({ commit, getters }, opts = {}) {\n const response = await fetchLog(getters.authHost, getters.token, opts)\n\n commit('SET_MODERATION_LOG', response.data.items)\n commit('SET_MODERATION_LOG_COUNT', response.data.total)\n commit('SET_LOG_LOADING', false)\n },\n async FetchAdmins({ commit, getters }) {\n const adminsResponse = await fetchAdmins(getters.authHost, getters.token)\n const moderatorsResponse = await fetchModerators(getters.authHost, getters.token)\n\n commit('SET_ADMINS', adminsResponse.data)\n commit('SET_MODERATORS', moderatorsResponse.data)\n commit('SET_ADMINS_LOADING', false)\n }\n }\n}\n\nexport default moderationLog\n","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function generateInviteToken(max_use, expires_at, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/invite_token`,\n method: 'post',\n headers: authHeaders(token),\n data: expires_at && expires_at.length > 0 ? { max_use, expires_at } : { max_use }\n })\n}\n\nexport async function inviteViaEmail(email, name, authHost, token) {\n const data = name.length > 0 ? { email, name } : { email }\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/users/email_invite',\n method: 'post',\n headers: authHeaders(token),\n data\n })\n}\n\nexport async function listInviteTokens(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/invites`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function revokeToken(tokenToRevoke, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/revoke_invite`,\n method: 'post',\n headers: authHeaders(token),\n data: { token: tokenToRevoke }\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import { generateInviteToken, inviteViaEmail, listInviteTokens, revokeToken } from '@/api/invites'\nimport { Message } from 'element-ui'\nimport i18n from '@/lang'\n\nconst invites = {\n state: {\n inviteTokens: [],\n loading: false,\n newToken: {}\n },\n mutations: {\n SET_LOADING: (state, status) => {\n state.loading = status\n },\n SET_NEW_TOKEN: (state, token) => {\n state.newToken = token\n },\n SET_TOKENS: (state, tokens) => {\n state.inviteTokens = tokens\n }\n },\n actions: {\n async FetchInviteTokens({ commit, getters }) {\n commit('SET_LOADING', true)\n const response = await listInviteTokens(getters.authHost, getters.token)\n commit('SET_TOKENS', response.data.invites.reverse())\n commit('SET_LOADING', false)\n },\n async GenerateInviteToken({ commit, dispatch, getters }, { maxUse, expiresAt }) {\n try {\n const { data } = await generateInviteToken(maxUse, expiresAt, getters.authHost, getters.token)\n commit('SET_NEW_TOKEN', { token: data.token, maxUse: data.max_use, expiresAt: data.expires_at })\n } catch (_e) {\n return\n }\n dispatch('FetchInviteTokens')\n },\n async InviteUserViaEmail({ commit, dispatch, getters }, { email, name }) {\n try {\n await inviteViaEmail(email, name, getters.authHost, getters.token)\n } catch (_e) {\n return\n }\n Message({\n message: i18n.t('invites.emailSent'),\n type: 'success',\n duration: 5 * 1000\n })\n },\n RemoveNewToken({ commit }) {\n commit('SET_NEW_TOKEN', {})\n },\n async RevokeToken({ commit, dispatch, getters }, token) {\n try {\n await revokeToken(token, getters.authHost, getters.token)\n } catch (_e) {\n return\n }\n dispatch('FetchInviteTokens')\n }\n }\n}\n\nexport default invites\n","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function fetchPeers(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/v1/instance/peers`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import { fetchPeers } from '@/api/peers'\n\nconst peers = {\n state: {\n fetchedPeers: [],\n loading: true\n },\n\n mutations: {\n SET_PEERS: (state, peers) => {\n state.fetchedPeers = peers\n },\n SET_LOADING: (state, status) => {\n state.loading = status\n }\n },\n\n actions: {\n async FetchPeers({ commit, getters }) {\n const peers = await fetchPeers(getters.authHost, getters.token)\n\n commit('SET_PEERS', [...peers.data].sort())\n commit('SET_LOADING', false)\n }\n }\n}\n\nexport default peers\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=69c6c5c4&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=69c6c5c4&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"69c6c5c4\",\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"padding\":\"0 15px\"},on:{\"click\":_vm.toggleClick}},[_c('svg',{staticClass:\"hamburger\",class:{'is-active':_vm.isActive},attrs:{\"viewBox\":\"0 0 1024 1024\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":\"64\",\"height\":\"64\"}},[_c('path',{attrs:{\"d\":\"M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM142.4 642.1L298.7 519a8.84 8.84 0 0 0 0-13.9L142.4 381.9c-5.8-4.6-14.4-.5-14.4 6.9v246.3a8.9 8.9 0 0 0 14.4 7z\"}})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navbar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navbar.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Navbar.vue?vue&type=template&id=28de7ff2&scoped=true&\"\nimport script from \"./Navbar.vue?vue&type=script&lang=js&\"\nexport * from \"./Navbar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Navbar.vue?vue&type=style&index=0&id=28de7ff2&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"28de7ff2\",\n null\n \n)\n\ncomponent.options.__file = \"Navbar.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"navbar\"},[_c('hamburger',{staticClass:\"hamburger-container\",attrs:{\"toggle-click\":_vm.toggleSideBar,\"is-active\":_vm.sidebar.opened}}),_vm._v(\" \"),_c('div',{staticClass:\"right-menu\"},[_c('el-dropdown',{staticClass:\"avatar-container right-menu-item hover-effect\",attrs:{\"trigger\":\"click\"}},[_c('div',{staticClass:\"avatar-wrapper\"},[_c('img',{staticClass:\"user-avatar\",attrs:{\"src\":_vm.avatar+'?imageView2/1/w/80/h/80'}})]),_vm._v(\" \"),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[_c('el-dropdown-item',[_c('span',{staticStyle:{\"display\":\"block\"},on:{\"click\":_vm.logout}},[_vm._v(_vm._s(_vm.$t('navbar.logOut')))])])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// translate router.meta.title, be used in breadcrumb sidebar tagsview\nexport function generateTitle(title) {\n const hasKey = this.$te('route.' + title)\n\n if (hasKey) {\n // $t :this method from vue-i18n, inject in @/lang/index.js\n const translatedTitle = this.$t('route.' + title)\n\n return translatedTitle\n }\n return title\n}\n","/**\n * Created by jiachenpan on 16/11/18.\n */\n\nexport function parseTime(time, cFormat) {\n if (arguments.length === 0) {\n return null\n }\n const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'\n let date\n if (typeof time === 'object') {\n date = time\n } else {\n if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {\n time = parseInt(time)\n }\n if ((typeof time === 'number') && (time.toString().length === 10)) {\n time = time * 1000\n }\n date = new Date(time)\n }\n const formatObj = {\n y: date.getFullYear(),\n m: date.getMonth() + 1,\n d: date.getDate(),\n h: date.getHours(),\n i: date.getMinutes(),\n s: date.getSeconds(),\n a: date.getDay()\n }\n const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {\n let value = formatObj[key]\n // Note: getDay() returns 0 on Sunday\n if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value ] }\n if (result.length > 0 && value < 10) {\n value = '0' + value\n }\n return value || 0\n })\n return time_str\n}\n\nexport function formatTime(time, option) {\n time = +time * 1000\n const d = new Date(time)\n const now = Date.now()\n\n const diff = (now - d) / 1000\n\n if (diff < 30) {\n return '刚刚'\n } else if (diff < 3600) {\n // less 1 hour\n return Math.ceil(diff / 60) + '分钟前'\n } else if (diff < 3600 * 24) {\n return Math.ceil(diff / 3600) + '小时前'\n } else if (diff < 3600 * 24 * 2) {\n return '1天前'\n }\n if (option) {\n return parseTime(time, option)\n } else {\n return (\n d.getMonth() +\n 1 +\n '月' +\n d.getDate() +\n '日' +\n d.getHours() +\n '时' +\n d.getMinutes() +\n '分'\n )\n }\n}\n\n// 格式化时间\nexport function getQueryObject(url) {\n url = url == null ? window.location.href : url\n const search = url.substring(url.lastIndexOf('?') + 1)\n const obj = {}\n const reg = /([^?&=]+)=([^?&=]*)/g\n search.replace(reg, (rs, $1, $2) => {\n const name = decodeURIComponent($1)\n let val = decodeURIComponent($2)\n val = String(val)\n obj[name] = val\n return rs\n })\n return obj\n}\n\n/**\n *get getByteLen\n * @param {Sting} val input value\n * @returns {number} output value\n */\nexport function getByteLen(val) {\n let len = 0\n for (let i = 0; i < val.length; i++) {\n if (val[i].match(/[^\\x00-\\xff]/gi) != null) {\n len += 1\n } else {\n len += 0.5\n }\n }\n return Math.floor(len)\n}\n\nexport function cleanArray(actual) {\n const newArray = []\n for (let i = 0; i < actual.length; i++) {\n if (actual[i]) {\n newArray.push(actual[i])\n }\n }\n return newArray\n}\n\nexport function param(json) {\n if (!json) return ''\n return cleanArray(\n Object.keys(json).map(key => {\n if (json[key] === undefined) return ''\n return encodeURIComponent(key) + '=' + encodeURIComponent(json[key])\n })\n ).join('&')\n}\n\nexport function param2Obj(url) {\n const search = url.split('?')[1]\n if (!search) {\n return {}\n }\n return JSON.parse(\n '{\"' +\n decodeURIComponent(search)\n .replace(/\"/g, '\\\\\"')\n .replace(/&/g, '\",\"')\n .replace(/=/g, '\":\"') +\n '\"}'\n )\n}\n\nexport function html2Text(val) {\n const div = document.createElement('div')\n div.innerHTML = val\n return div.textContent || div.innerText\n}\n\nexport function objectMerge(target, source) {\n /* Merges two objects,\n giving the last one precedence */\n\n if (typeof target !== 'object') {\n target = {}\n }\n if (Array.isArray(source)) {\n return source.slice()\n }\n Object.keys(source).forEach(property => {\n const sourceProperty = source[property]\n if (typeof sourceProperty === 'object') {\n target[property] = objectMerge(target[property], sourceProperty)\n } else {\n target[property] = sourceProperty\n }\n })\n return target\n}\n\nexport function toggleClass(element, className) {\n if (!element || !className) {\n return\n }\n let classString = element.className\n const nameIndex = classString.indexOf(className)\n if (nameIndex === -1) {\n classString += '' + className\n } else {\n classString =\n classString.substr(0, nameIndex) +\n classString.substr(nameIndex + className.length)\n }\n element.className = classString\n}\n\nexport const pickerOptions = [\n {\n text: '今天',\n onClick(picker) {\n const end = new Date()\n const start = new Date(new Date().toDateString())\n end.setTime(start.getTime())\n picker.$emit('pick', [start, end])\n }\n },\n {\n text: '最近一周',\n onClick(picker) {\n const end = new Date(new Date().toDateString())\n const start = new Date()\n start.setTime(end.getTime() - 3600 * 1000 * 24 * 7)\n picker.$emit('pick', [start, end])\n }\n },\n {\n text: '最近一个月',\n onClick(picker) {\n const end = new Date(new Date().toDateString())\n const start = new Date()\n start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)\n picker.$emit('pick', [start, end])\n }\n },\n {\n text: '最近三个月',\n onClick(picker) {\n const end = new Date(new Date().toDateString())\n const start = new Date()\n start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)\n picker.$emit('pick', [start, end])\n }\n }\n]\n\nexport function getTime(type) {\n if (type === 'start') {\n return new Date().getTime() - 3600 * 1000 * 24 * 90\n } else {\n return new Date(new Date().toDateString())\n }\n}\n\nexport function debounce(func, wait, immediate) {\n let timeout, args, context, timestamp, result\n\n const later = function() {\n // 据上一次触发时间间隔\n const last = +new Date() - timestamp\n\n // 上次被包装函数被调用时间间隔last小于设定时间间隔wait\n if (last < wait && last > 0) {\n timeout = setTimeout(later, wait - last)\n } else {\n timeout = null\n // 如果设定为immediate===true,因为开始边界已经调用过了此处无需调用\n if (!immediate) {\n result = func.apply(context, args)\n if (!timeout) context = args = null\n }\n }\n }\n\n return function(...args) {\n context = this\n timestamp = +new Date()\n const callNow = immediate && !timeout\n // 如果延时不存在,重新设定延时\n if (!timeout) timeout = setTimeout(later, wait)\n if (callNow) {\n result = func.apply(context, args)\n context = args = null\n }\n\n return result\n }\n}\n\n/**\n * This is just a simple version of deep copy\n * Has a lot of edge cases bug\n * If you want to use a perfect deep copy, use lodash's _.cloneDeep\n */\nexport function deepClone(source) {\n if (!source && typeof source !== 'object') {\n throw new Error('error arguments', 'shallowClone')\n }\n const targetObj = source.constructor === Array ? [] : {}\n Object.keys(source).forEach(keys => {\n if (source[keys] && typeof source[keys] === 'object') {\n targetObj[keys] = deepClone(source[keys])\n } else {\n targetObj[keys] = source[keys]\n }\n })\n return targetObj\n}\n\nexport function uniqueArr(arr) {\n return Array.from(new Set(arr))\n}\n\nexport function isExternal(path) {\n return /^(https?:|mailto:|tel:)/.test(path)\n}\n","\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Item.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Item.vue?vue&type=script&lang=js&\"","var render, staticRenderFns\nimport script from \"./Item.vue?vue&type=script&lang=js&\"\nexport * from \"./Item.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Item.vue\"\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Link.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Link.vue?vue&type=script&lang=js&\"","\n\n\n\n","import { render, staticRenderFns } from \"./Link.vue?vue&type=template&id=4dde2217&\"\nimport script from \"./Link.vue?vue&type=script&lang=js&\"\nexport * from \"./Link.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Link.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('component',_vm._b({},'component',_vm.linkProps(_vm.to),false),[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarItem.vue?vue&type=script&lang=js&\"","\n\n\n","export default {\n computed: {\n device() {\n return this.$store.state.app.device\n }\n },\n mounted() {\n // In order to fix the click on menu on the ios device will trigger the mouseleave bug\n // https://github.com/PanJiaChen/vue-element-admin/issues/1135\n this.fixBugIniOS()\n },\n methods: {\n fixBugIniOS() {\n const $subMenu = this.$refs.subMenu\n if ($subMenu) {\n const handleMouseleave = $subMenu.handleMouseleave\n $subMenu.handleMouseleave = (e) => {\n if (this.device === 'mobile') {\n return\n }\n handleMouseleave(e)\n }\n }\n }\n }\n}\n","import { render, staticRenderFns } from \"./SidebarItem.vue?vue&type=template&id=763b3c07&\"\nimport script from \"./SidebarItem.vue?vue&type=script&lang=js&\"\nexport * from \"./SidebarItem.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"SidebarItem.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.item.hidden && _vm.item.children && _vm.invitesEnabled)?_c('div',{staticClass:\"menu-wrapper\"},[(_vm.hasOneShowingChild(_vm.item.children,_vm.item) && (!_vm.onlyOneChild.children||_vm.onlyOneChild.noShowingChildren)&&!_vm.item.alwaysShow)?[_c('app-link',{attrs:{\"to\":_vm.resolvePath(_vm.onlyOneChild.path)}},[_c('el-menu-item',{class:{'submenu-title-noDropdown':!_vm.isNest},attrs:{\"index\":_vm.resolvePath(_vm.onlyOneChild.path)}},[(_vm.onlyOneChild.meta)?_c('item',{attrs:{\"icon\":_vm.onlyOneChild.meta.icon||_vm.item.meta.icon,\"title\":_vm.generateTitle(_vm.onlyOneChild.meta.title)}}):_vm._e()],1)],1)]:_c('el-submenu',{ref:\"subMenu\",attrs:{\"index\":_vm.resolvePath(_vm.item.path)}},[_c('template',{slot:\"title\"},[(_vm.item.meta)?_c('item',{attrs:{\"icon\":_vm.item.meta.icon,\"title\":_vm.generateTitle(_vm.item.meta.title)}}):_vm._e()],1),_vm._v(\" \"),_vm._l((_vm.item.children),function(child){return [(!child.hidden)?[(child.children&&child.children.length>0)?_c('sidebar-item',{key:child.path,staticClass:\"nest-menu\",attrs:{\"is-nest\":true,\"item\":child,\"base-path\":_vm.resolvePath(child.path)}}):_c('app-link',{key:child.name,attrs:{\"to\":_vm.resolvePath(child.path)}},[_c('el-menu-item',{attrs:{\"index\":_vm.resolvePath(child.path)}},[(child.meta)?_c('item',{attrs:{\"icon\":child.meta.icon,\"title\":_vm.generateTitle(child.meta.title)}}):_vm._e()],1)],1)]:_vm._e()]})],2)],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=29a0fa94&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-scrollbar',{attrs:{\"wrap-class\":\"scrollbar-wrapper\"}},[_c('el-menu',{attrs:{\"default-active\":_vm.$route.path,\"collapse\":_vm.isCollapse,\"background-color\":_vm.variables.menuBg,\"text-color\":_vm.variables.menuText,\"active-text-color\":_vm.variables.menuActiveText,\"mode\":\"vertical\"}},_vm._l((_vm.permission_routers),function(route){return _c('sidebar-item',{key:route.path,attrs:{\"item\":route,\"base-path\":route.path}})}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=591d6778&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=591d6778&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"591d6778\",\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-scrollbar',{ref:\"scrollContainer\",staticClass:\"scroll-container\",attrs:{\"vertical\":false},nativeOn:{\"wheel\":function($event){$event.preventDefault();return _vm.handleScroll($event)}}},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TagsView.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TagsView.vue?vue&type=script&lang=js&\"","\n\n\n\n\n\n\n","import { render, staticRenderFns } from \"./TagsView.vue?vue&type=template&id=e1cdb714&scoped=true&\"\nimport script from \"./TagsView.vue?vue&type=script&lang=js&\"\nexport * from \"./TagsView.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TagsView.vue?vue&type=style&index=0&id=e1cdb714&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\nimport style1 from \"./TagsView.vue?vue&type=style&index=1&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e1cdb714\",\n null\n \n)\n\ncomponent.options.__file = \"TagsView.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"tags-view-container\"},[_c('scroll-pane',{ref:\"scrollPane\",staticClass:\"tags-view-wrapper\"},_vm._l((_vm.visitedViews),function(tag){return _c('router-link',{key:tag.path,ref:\"tag\",refInFor:true,staticClass:\"tags-view-item\",class:_vm.isActive(tag)?'active':'',attrs:{\"to\":{ path: tag.path, query: tag.query, fullPath: tag.fullPath },\"tag\":\"span\"},nativeOn:{\"mouseup\":function($event){if('button' in $event && $event.button !== 1){ return null; }return _vm.closeSelectedTag(tag)},\"contextmenu\":function($event){$event.preventDefault();return _vm.openMenu(tag,$event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.generateTitle(tag.title))+\"\\n \"),(!tag.meta.affix)?_c('span',{staticClass:\"el-icon-close\",on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.closeSelectedTag(tag)}}}):_vm._e()])}),1),_vm._v(\" \"),_c('ul',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.visible),expression:\"visible\"}],staticClass:\"contextmenu\",style:({left:_vm.left+'px',top:_vm.top+'px'})},[_c('li',{on:{\"click\":function($event){return _vm.refreshSelectedTag(_vm.selectedTag)}}},[_vm._v(_vm._s(_vm.$t('tagsView.refresh')))]),_vm._v(\" \"),(!(_vm.selectedTag.meta&&_vm.selectedTag.meta.affix))?_c('li',{on:{\"click\":function($event){return _vm.closeSelectedTag(_vm.selectedTag)}}},[_vm._v(_vm._s(_vm.$t('tagsView.close')))]):_vm._e(),_vm._v(\" \"),_c('li',{on:{\"click\":_vm.closeOthersTags}},[_vm._v(_vm._s(_vm.$t('tagsView.closeOthers')))]),_vm._v(\" \"),_c('li',{on:{\"click\":function($event){return _vm.closeAllTags(_vm.selectedTag)}}},[_vm._v(_vm._s(_vm.$t('tagsView.closeAll')))])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMain.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMain.vue?vue&type=script&lang=js&\"","\n\n\n\n\n\n","import { render, staticRenderFns } from \"./AppMain.vue?vue&type=template&id=f852c4f2&scoped=true&\"\nimport script from \"./AppMain.vue?vue&type=script&lang=js&\"\nexport * from \"./AppMain.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AppMain.vue?vue&type=style&index=0&id=f852c4f2&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f852c4f2\",\n null\n \n)\n\ncomponent.options.__file = \"AppMain.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"app-main\"},[_c('transition',{attrs:{\"name\":\"fade-transform\",\"mode\":\"out-in\"}},[_c('keep-alive',{attrs:{\"include\":_vm.cachedViews}},[_c('router-view',{key:_vm.key})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import store from '@/store'\n\nconst { body } = document\nconst mobileWidth = 480\nconst tabletWidth = 801\nconst ratio = 3\n\nexport default {\n watch: {\n $route(route) {\n if (this.device === 'mobile' && this.sidebar.opened) {\n store.dispatch('closeSideBar', { withoutAnimation: false })\n }\n }\n },\n beforeMount() {\n window.addEventListener('resize', this.resizeHandler)\n },\n mounted() {\n const isMobile = this.isMobile()\n const isTablet = this.isTablet()\n if (isMobile || isTablet) {\n store.dispatch('toggleDevice', isMobile ? 'mobile' : 'tablet')\n store.dispatch('closeSideBar', { withoutAnimation: true })\n }\n },\n methods: {\n isMobile() {\n const rect = body.getBoundingClientRect()\n return rect.width - ratio < mobileWidth\n },\n isTablet() {\n const rect = body.getBoundingClientRect()\n return rect.width - ratio < tabletWidth && rect.width - ratio > mobileWidth\n },\n resizeHandler() {\n if (!document.hidden) {\n const isMobile = this.isMobile()\n const isTablet = this.isTablet()\n\n if (isMobile || isTablet) {\n store.dispatch('toggleDevice', isMobile ? 'mobile' : 'tablet')\n store.dispatch('closeSideBar', { withoutAnimation: true })\n } else {\n store.dispatch('toggleDevice', 'desktop')\n }\n }\n }\n }\n}\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Layout.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Layout.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Layout.vue?vue&type=template&id=767d264f&scoped=true&\"\nimport script from \"./Layout.vue?vue&type=script&lang=js&\"\nexport * from \"./Layout.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Layout.vue?vue&type=style&index=0&id=767d264f&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"767d264f\",\n null\n \n)\n\ncomponent.options.__file = \"Layout.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"app-wrapper\",class:_vm.classObj},[(_vm.device==='mobile'&&_vm.sidebar.opened)?_c('div',{staticClass:\"drawer-bg\",on:{\"click\":_vm.handleClickOutside}}):_vm._e(),_vm._v(\" \"),_c('sidebar',{staticClass:\"sidebar-container\"}),_vm._v(\" \"),_c('div',{staticClass:\"main-container\"},[_c('navbar'),_vm._v(\" \"),_c('app-main')],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport Router from 'vue-router'\n\nVue.use(Router)\n\n/* Layout */\nimport Layout from '@/views/layout/Layout'\n\nconst disabledFeatures = process.env.DISABLED_FEATURES || []\nconst settingsDisabled = disabledFeatures.includes('settings')\nconst settings = {\n path: '/settings',\n component: Layout,\n children: [\n {\n path: 'index',\n component: () => import('@/views/settings/index'),\n name: 'Settings',\n meta: { title: 'Settings', icon: 'settings', noCache: true }\n }\n ]\n}\n\nconst statusesDisabled = disabledFeatures.includes('statuses')\nconst statuses = {\n path: '/statuses',\n component: Layout,\n children: [\n {\n path: 'index',\n component: () => import('@/views/statuses/index'),\n name: 'Statuses',\n meta: { title: 'Statuses', icon: 'form', noCache: true }\n }\n ]\n}\n\nconst reportsDisabled = disabledFeatures.includes('reports')\nconst reports = {\n path: '/reports',\n component: Layout,\n children: [\n {\n path: 'index',\n component: () => import('@/views/reports/index'),\n name: 'Reports',\n meta: { title: 'Reports', icon: 'documentation', noCache: true }\n }\n ]\n}\n\nconst invitesDisabled = disabledFeatures.includes('invites')\nconst invites = {\n path: '/invites',\n component: Layout,\n children: [\n {\n path: 'index',\n component: () => import('@/views/invites/index'),\n name: 'Invites',\n meta: { title: 'Invites', icon: 'guide', noCache: true }\n }\n ]\n}\n\nconst emojiPacksDisabled = disabledFeatures.includes('emoji-packs')\nconst emojiPacks = {\n path: '/emoji_packs',\n component: Layout,\n children: [\n {\n path: 'index',\n component: () => import('@/views/emojiPacks/index'),\n name: 'Emoji Packs',\n meta: { title: 'Emoji Packs', icon: 'eye-open', noCache: true }\n }\n ]\n}\n\nconst moderationLogDisabled = disabledFeatures.includes('moderation-log')\nconst moderationLog = {\n path: '/moderation_log',\n component: Layout,\n children: [\n {\n path: 'index',\n component: () => import('@/views/moderation_log/index'),\n name: 'Moderation Log',\n meta: { title: 'moderationLog', icon: 'list', noCache: true }\n }\n ]\n}\n\nexport const constantRouterMap = [\n {\n path: '/redirect',\n component: Layout,\n hidden: true,\n children: [\n {\n path: '/redirect/:path*',\n component: () => import('@/views/redirect/index')\n }\n ]\n },\n {\n path: '/login-pleroma',\n component: () => import('@/views/login/pleroma'),\n hidden: true\n },\n {\n path: '/login',\n component: () => import('@/views/login/index'),\n hidden: true\n },\n {\n path: '/auth-redirect',\n component: () => import('@/views/login/authredirect'),\n hidden: true\n },\n {\n path: '/404',\n component: () => import('@/views/errorPage/404'),\n hidden: true\n },\n {\n path: '/401',\n component: () => import('@/views/errorPage/401'),\n hidden: true\n },\n {\n path: '',\n component: Layout,\n redirect: '/users/index'\n }\n]\n\nexport default new Router({\n // mode: 'history', // require service support\n scrollBehavior: () => ({ y: 0 }),\n routes: constantRouterMap\n})\n\nexport const asyncRouterMap = [\n {\n path: '/users',\n component: Layout,\n children: [\n {\n path: 'index',\n component: () => import('@/views/users/index'),\n name: 'Users',\n meta: { title: 'users', icon: 'peoples', noCache: true }\n }\n ]\n },\n ...(statusesDisabled ? [] : [statuses]),\n ...(reportsDisabled ? [] : [reports]),\n ...(invitesDisabled ? [] : [invites]),\n ...(emojiPacksDisabled ? [] : [emojiPacks]),\n ...(moderationLogDisabled ? [] : [moderationLog]),\n ...(settingsDisabled ? [] : [settings]),\n {\n path: '/users/:id',\n component: Layout,\n children: [\n {\n path: '',\n name: 'UsersShow',\n component: () => import('@/views/users/show')\n }\n ],\n hidden: true\n },\n {\n path: '/statuses/:id',\n component: Layout,\n children: [\n {\n path: '',\n name: 'StatusShow',\n component: () => import('@/views/statuses/show')\n }\n ],\n hidden: true\n },\n { path: '*', redirect: '/404', hidden: true }\n]\n","import { asyncRouterMap, constantRouterMap } from '@/router'\n\n/**\n * 通过meta.role判断是否与当前用户权限匹配\n * @param roles\n * @param route\n */\nfunction hasPermission(roles, route) {\n if (route.meta && route.meta.roles) {\n return roles.some(role => route.meta.roles.includes(role))\n } else {\n return true\n }\n}\n\n/**\n * 递归过滤异步路由表,返回符合用户角色权限的路由表\n * @param routes asyncRouterMap\n * @param roles\n */\nfunction filterAsyncRouter(routes, roles) {\n const res = []\n\n routes.forEach(route => {\n const tmp = { ...route }\n if (hasPermission(roles, tmp)) {\n if (tmp.children) {\n tmp.children = filterAsyncRouter(tmp.children, roles)\n }\n res.push(tmp)\n }\n })\n\n return res\n}\n\nconst permission = {\n state: {\n routers: [],\n addRouters: []\n },\n mutations: {\n SET_ROUTERS: (state, routers) => {\n state.addRouters = routers\n state.routers = constantRouterMap.concat(routers)\n }\n },\n actions: {\n GenerateRoutes({ commit }, data) {\n return new Promise(resolve => {\n const { roles } = data\n let accessedRouters\n if (roles.includes('admin')) {\n accessedRouters = asyncRouterMap\n } else {\n accessedRouters = filterAsyncRouter(asyncRouterMap, roles)\n }\n commit('SET_ROUTERS', accessedRouters)\n resolve()\n })\n }\n }\n}\n\nexport default permission\n","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function fetchRelays(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/relay',\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function addRelay(relay, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/relay',\n method: 'post',\n headers: authHeaders(token),\n data: { relay_url: relay }\n })\n}\n\nexport async function deleteRelay(relay, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/relay',\n method: 'delete',\n headers: authHeaders(token),\n data: { relay_url: `https://${relay}/actor` }\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import { fetchRelays, addRelay, deleteRelay } from '@/api/relays'\n\nconst relays = {\n state: {\n fetchedRelays: [],\n loading: true\n },\n mutations: {\n SET_LOADING: (state, loading) => {\n state.loading = loading\n },\n SET_RELAYS: (state, relays) => {\n state.fetchedRelays = relays\n },\n ADD_RELAY: (state, relay) => {\n state.fetchedRelays = [...state.fetchedRelays, relay]\n },\n DELETE_RELAY: (state, relay) => {\n state.fetchedRelays = state.fetchedRelays.filter(fetchedRelay => fetchedRelay !== relay)\n }\n },\n actions: {\n async FetchRelays({ commit, getters }) {\n commit('SET_LOADING', true)\n\n const response = await fetchRelays(getters.authHost, getters.token)\n\n commit('SET_RELAYS', response.data.relays)\n commit('SET_LOADING', false)\n },\n async AddRelay({ commit, dispatch, getters }, relay) {\n commit('ADD_RELAY', relay)\n\n try {\n await addRelay(relay, getters.authHost, getters.token)\n } catch (_e) {\n return\n } finally {\n dispatch('FetchRelays')\n }\n },\n async DeleteRelay({ commit, dispatch, getters }, relay) {\n commit('DELETE_RELAY', relay)\n\n try {\n await deleteRelay(relay, getters.authHost, getters.token)\n } catch (_e) {\n return\n } finally {\n dispatch('FetchRelays')\n }\n }\n }\n}\n\nexport default relays\n","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function changeState(reports, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/reports`,\n method: 'patch',\n headers: authHeaders(token),\n data: { reports }\n })\n}\n\nexport async function fetchReports(filter, page, pageSize, authHost, token) {\n const url = filter.length > 0\n ? `/api/pleroma/admin/reports?state=${filter}&page=${page}&page_size=${pageSize}`\n : `/api/pleroma/admin/reports?page=${page}&page_size=${pageSize}`\n return await request({\n baseURL: baseName(authHost),\n url,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function createNote(content, reportID, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/reports/${reportID}/notes`,\n method: `post`,\n headers: authHeaders(token),\n data: { content }\n })\n}\n\nexport async function deleteNote(noteID, reportID, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/reports/${reportID}/notes/${noteID}`,\n method: `delete`,\n headers: authHeaders(token)\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import { changeState, fetchReports, createNote, deleteNote } from '@/api/reports'\n\nconst reports = {\n state: {\n fetchedReports: [],\n totalReportsCount: 0,\n currentPage: 1,\n pageSize: 50,\n stateFilter: '',\n loading: true\n },\n mutations: {\n SET_LAST_REPORT_ID: (state, id) => {\n state.idOfLastReport = id\n },\n SET_LOADING: (state, status) => {\n state.loading = status\n },\n SET_PAGE: (state, page) => {\n state.currentPage = page\n },\n SET_REPORTS: (state, reports) => {\n state.fetchedReports = reports\n },\n SET_REPORTS_COUNT: (state, total) => {\n state.totalReportsCount = total\n },\n SET_REPORTS_FILTER: (state, filter) => {\n state.stateFilter = filter\n }\n },\n actions: {\n async ChangeReportState({ commit, getters, state }, reportsData) {\n changeState(reportsData, getters.authHost, getters.token)\n\n const updatedReports = state.fetchedReports.map(report => {\n const updatedReportsIds = reportsData.map(({ id }) => id)\n return updatedReportsIds.includes(report.id) ? { ...report, state: reportsData[0].state } : report\n })\n\n commit('SET_REPORTS', updatedReports)\n },\n ClearFetchedReports({ commit }) {\n commit('SET_REPORTS', [])\n },\n async FetchReports({ commit, getters, state }, page) {\n commit('SET_LOADING', true)\n const { data } = await fetchReports(state.stateFilter, page, state.pageSize, getters.authHost, getters.token)\n\n commit('SET_REPORTS', data.reports)\n commit('SET_REPORTS_COUNT', data.total)\n commit('SET_PAGE', page)\n commit('SET_LOADING', false)\n },\n SetFilter({ commit }, filter) {\n commit('SET_REPORTS_FILTER', filter)\n },\n CreateReportNote({ commit, getters, state, rootState }, { content, reportID }) {\n createNote(content, reportID, getters.authHost, getters.token)\n\n const optimisticNote = {\n user: {\n avatar: rootState.user.avatar,\n nickname: rootState.user.name,\n id: rootState.user.id\n },\n content: content,\n created_at: new Date().getTime()\n }\n\n const updatedReports = state.fetchedReports.map(report => {\n if (report.id === reportID) {\n report.notes = [...report.notes, optimisticNote]\n }\n\n return report\n })\n\n commit('SET_REPORTS', updatedReports)\n },\n DeleteReportNote({ commit, getters, state }, { noteID, reportID }) {\n deleteNote(noteID, reportID, getters.authHost, getters.token)\n\n const updatedReports = state.fetchedReports.map(report => {\n if (report.id === reportID) {\n report.notes = report.notes.filter(note => note.id !== noteID)\n }\n\n return report\n })\n\n commit('SET_REPORTS', updatedReports)\n }\n }\n}\n\nexport default reports\n","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function fetchDescription(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/config/descriptions`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function fetchSettings(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/config`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function updateSettings(configs, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/config`,\n method: 'post',\n headers: authHeaders(token),\n data: { configs }\n })\n}\n\nexport async function removeSettings(configs, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/config`,\n method: 'post',\n headers: authHeaders(token),\n data: { configs }\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import { fetchDescription, fetchSettings, removeSettings, updateSettings } from '@/api/settings'\nimport { checkPartialUpdate, formSearchObject, parseNonTuples, parseTuples, valueHasTuples, wrapUpdatedSettings } from './normalizers'\nimport _ from 'lodash'\n\nconst settings = {\n state: {\n activeTab: 'instance',\n configDisabled: true,\n db: {},\n description: [],\n loading: true,\n searchData: {},\n settings: {},\n updatedSettings: {}\n },\n mutations: {\n CLEAR_UPDATED_SETTINGS: (state) => {\n state.updatedSettings = {}\n },\n REMOVE_SETTING_FROM_UPDATED: (state, { group, key, subkeys }) => {\n if (_.get(state.updatedSettings, [group, key, subkeys[0]])) {\n const { [subkeys[0]]: value, ...updatedSettings } = state.updatedSettings[group][key]\n state.updatedSettings = updatedSettings\n }\n },\n SET_ACTIVE_TAB: (state, tab) => {\n state.activeTab = tab\n },\n SET_DESCRIPTION: (state, data) => {\n state.description = data\n },\n SET_LOADING: (state, status) => {\n state.loading = status\n },\n SET_SEARCH: (state, searchObject) => {\n state.searchData = searchObject\n },\n SET_SETTINGS: (state, data) => {\n const newSettings = data.reduce((acc, { group, key, value }) => {\n const parsedValue = valueHasTuples(key, value)\n ? { value: parseNonTuples(key, value) }\n : parseTuples(value, key)\n acc[group] = acc[group] ? { ...acc[group], [key]: parsedValue } : { [key]: parsedValue }\n return acc\n }, {})\n\n const newDbSettings = data.reduce((acc, { group, key, db }) => {\n if (db) {\n acc[group] = acc[group] ? { ...acc[group], [key]: db } : { [key]: db }\n }\n return acc\n }, {})\n\n state.settings = newSettings\n state.db = newDbSettings\n },\n TOGGLE_TABS: (state, status) => {\n state.configDisabled = status\n },\n UPDATE_SETTINGS: (state, { group, key, input, value, type }) => {\n const updatedSetting = !state.updatedSettings[group] || (key === 'Pleroma.Emails.Mailer' && input === ':adapter')\n ? { [key]: { [input]: [type, value] }}\n : { [key]: { ...state.updatedSettings[group][key], ...{ [input]: [type, value] }}}\n state.updatedSettings[group] = { ...state.updatedSettings[group], ...updatedSetting }\n },\n UPDATE_STATE: (state, { group, key, input, value }) => {\n const updatedState = key === 'Pleroma.Emails.Mailer' && input === ':adapter'\n ? { [key]: { [input]: value }}\n : { [key]: { ...state.settings[group][key], ...{ [input]: value }}}\n state.settings[group] = { ...state.settings[group], ...updatedState }\n }\n },\n actions: {\n async FetchSettings({ commit, getters }) {\n commit('SET_LOADING', true)\n try {\n const response = await fetchSettings(getters.authHost, getters.token)\n const description = await fetchDescription(getters.authHost, getters.token)\n commit('SET_DESCRIPTION', description.data)\n const searchObject = formSearchObject(description.data)\n commit('SET_SEARCH', searchObject)\n commit('SET_SETTINGS', response.data.configs)\n } catch (_e) {\n commit('TOGGLE_TABS', true)\n commit('SET_ACTIVE_TAB', 'relays')\n commit('SET_LOADING', false)\n return\n }\n commit('TOGGLE_TABS', false)\n commit('SET_LOADING', false)\n },\n async RemoveSetting({ commit, getters }, configs) {\n await removeSettings(configs, getters.authHost, getters.token)\n const response = await fetchSettings(getters.authHost, getters.token)\n const { group, key, subkeys } = configs[0]\n commit('SET_SETTINGS', response.data.configs)\n commit('TOGGLE_REBOOT', response.data.need_reboot)\n commit('REMOVE_SETTING_FROM_UPDATED', { group, key, subkeys: subkeys || [] })\n },\n SetActiveTab({ commit }, tab) {\n commit('SET_ACTIVE_TAB', tab)\n },\n async SubmitChanges({ getters, commit, state }) {\n const updatedData = checkPartialUpdate(state.settings, state.updatedSettings, state.description)\n const configs = Object.keys(updatedData).reduce((acc, group) => {\n return [...acc, ...wrapUpdatedSettings(group, updatedData[group], state.settings)]\n }, [])\n\n await updateSettings(configs, getters.authHost, getters.token)\n const response = await fetchSettings(getters.authHost, getters.token)\n commit('SET_SETTINGS', response.data.configs)\n commit('TOGGLE_REBOOT', response.data.need_reboot)\n commit('CLEAR_UPDATED_SETTINGS')\n },\n UpdateSettings({ commit }, { group, key, input, value, type }) {\n key\n ? commit('UPDATE_SETTINGS', { group, key, input, value, type })\n : commit('UPDATE_SETTINGS', { group, key: input, input: '_value', value, type })\n },\n async UpdateState({ commit, getters, state }, { group, key, input, value }) {\n if (key === 'Pleroma.Emails.Mailer' && input === ':adapter') {\n const subkeys = Object.keys(state.settings[group][key]).filter(el => el !== ':adapter')\n await removeSettings([{ group, key, delete: true, subkeys }], getters.authHost, getters.token)\n } else if (key === 'Pleroma.Upload' && input === ':uploader') {\n const deletedKey = value === 'Pleroma.Uploaders.Local' ? 'Pleroma.Uploaders.S3' : 'Pleroma.Uploaders.Local'\n await removeSettings([{ group, key: deletedKey, delete: true }], getters.authHost, getters.token)\n }\n key\n ? commit('UPDATE_STATE', { group, key, input, value })\n : commit('UPDATE_STATE', { group, key: input, input: 'value', value })\n }\n }\n}\n\nexport default settings\n","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function changeStatusScope(id, sensitive, visibility, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/statuses/${id}`,\n method: 'put',\n headers: authHeaders(token),\n data: { sensitive, visibility }\n })\n}\n\nexport async function deleteStatus(id, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/statuses/${id}`,\n method: 'delete',\n headers: authHeaders(token)\n })\n}\n\nexport async function fetchStatus(id, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/statuses/${id}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function fetchStatuses({ godmode, localOnly, authHost, token, pageSize, page }) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/statuses?godmode=${godmode}&local_only=${localOnly}&page=${page}&page_size=${pageSize}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function fetchStatusesCount(instance, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: instance ? `/api/pleroma/admin/stats?instance=${instance}` : `/api/pleroma/admin/stats`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function fetchStatusesByInstance({ instance, authHost, token, pageSize, page }) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/instances/${instance}/statuses?page=${page}&page_size=${pageSize}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import { changeStatusScope, deleteStatus, fetchStatus, fetchStatuses, fetchStatusesCount, fetchStatusesByInstance } from '@/api/status'\n\nconst status = {\n state: {\n fetchedStatus: {},\n fetchedStatuses: [],\n loading: false,\n statusAuthor: {},\n statusesByInstance: {\n selectedInstance: '',\n showLocal: false,\n showPrivate: false,\n page: 1,\n pageSize: 20,\n buttonLoading: false,\n allLoaded: false\n },\n statusVisibility: {}\n },\n mutations: {\n CHANGE_GODMODE_CHECKBOX_VALUE: (state, value) => {\n state.statusesByInstance.showPrivate = value\n },\n CHANGE_LOCAL_CHECKBOX_VALUE: (state, value) => {\n state.statusesByInstance.showLocal = value\n },\n CHANGE_PAGE: (state, page) => {\n state.statusesByInstance.page = page\n },\n CHANGE_SELECTED_INSTANCE: (state, instance) => {\n state.statusesByInstance.selectedInstance = instance\n },\n SET_STATUS: (state, status) => {\n state.fetchedStatus = status\n },\n SET_STATUSES_BY_INSTANCE: (state, statuses) => {\n state.fetchedStatuses = statuses\n },\n PUSH_STATUSES: (state, statuses) => {\n state.fetchedStatuses = [...state.fetchedStatuses, ...statuses]\n },\n SET_ALL_LOADED: (state, status) => {\n state.statusesByInstance.allLoaded = status\n },\n SET_BUTTON_LOADING: (state, status) => {\n state.statusesByInstance.buttonLoading = status\n },\n SET_LOADING: (state, status) => {\n state.loading = status\n },\n SET_STATUS_VISIBILITY: (state, visibility) => {\n state.statusVisibility = visibility\n },\n SET_STATUS_AUTHOR: (state, user) => {\n state.statusAuthor = user\n }\n },\n actions: {\n async ChangeStatusScope({ dispatch, getters }, { statusId, isSensitive, visibility, reportCurrentPage, userId, godmode, fetchStatusesByInstance }) {\n await changeStatusScope(statusId, isSensitive, visibility, getters.authHost, getters.token)\n if (reportCurrentPage !== 0) { // called from Reports\n dispatch('FetchReports', reportCurrentPage)\n } else if (userId.length > 0) { // called from User profile\n dispatch('FetchUserStatuses', { userId, godmode })\n } else if (fetchStatusesByInstance) { // called from Statuses by Instance\n dispatch('FetchStatusesByInstance')\n } else { // called from Status show page\n dispatch('FetchStatusAfterUserModeration', statusId)\n }\n },\n ClearState({ commit }) {\n commit('CHANGE_SELECTED_INSTANCE', '')\n commit('SET_STATUSES_BY_INSTANCE', [])\n commit('CHANGE_LOCAL_CHECKBOX_VALUE', false)\n commit('CHANGE_GODMODE_CHECKBOX_VALUE', false)\n commit('SET_ALL_LOADED', false)\n commit('CHANGE_PAGE', 1)\n },\n async DeleteStatus({ dispatch, getters }, { statusId, reportCurrentPage, userId, godmode, fetchStatusesByInstance }) {\n await deleteStatus(statusId, getters.authHost, getters.token)\n if (reportCurrentPage !== 0) { // called from Reports\n dispatch('FetchReports', reportCurrentPage)\n } else if (userId.length > 0) { // called from User profile\n dispatch('FetchUserStatuses', { userId, godmode })\n } else if (fetchStatusesByInstance) { // called from Statuses by Instance\n dispatch('FetchStatusesByInstance')\n }\n },\n async FetchStatus({ commit, dispatch, getters, state }, id) {\n commit('SET_LOADING', true)\n const status = await fetchStatus(id, getters.authHost, getters.token)\n\n commit('SET_STATUS', status.data)\n commit('SET_STATUS_AUTHOR', status.data.account)\n commit('SET_LOADING', false)\n dispatch('FetchUserStatuses', { userId: state.fetchedStatus.account.id, godmode: false })\n },\n FetchStatusAfterUserModeration({ commit, dispatch, getters, state }, id) {\n commit('SET_LOADING', true)\n fetchStatus(id, getters.authHost, getters.token)\n .then(status => dispatch('SetStatus', status.data))\n commit('SET_LOADING', false)\n },\n async FetchStatusesCount({ commit, getters }, instance) {\n commit('SET_LOADING', true)\n const { data } = await fetchStatusesCount(instance, getters.authHost, getters.token)\n commit('SET_STATUS_VISIBILITY', data.status_visibility)\n commit('SET_LOADING', false)\n },\n async FetchStatusesByInstance({ commit, dispatch, getters, state, rootState }) {\n commit('SET_LOADING', true)\n dispatch('FetchStatusesCount', state.statusesByInstance.selectedInstance)\n if (state.statusesByInstance.selectedInstance === '') {\n commit('SET_STATUSES_BY_INSTANCE', [])\n } else {\n const statuses = state.statusesByInstance.selectedInstance === rootState.user.authHost\n ? await fetchStatuses(\n {\n godmode: state.statusesByInstance.showPrivate,\n localOnly: state.statusesByInstance.showLocal,\n authHost: getters.authHost,\n token: getters.token,\n pageSize: state.statusesByInstance.pageSize,\n page: state.statusesByInstance.page\n })\n : await fetchStatusesByInstance(\n {\n instance: state.statusesByInstance.selectedInstance,\n authHost: getters.authHost,\n token: getters.token,\n pageSize: state.statusesByInstance.pageSize,\n page: state.statusesByInstance.page\n })\n commit('SET_STATUSES_BY_INSTANCE', statuses.data)\n if (statuses.data.length < state.statusesByInstance.pageSize) {\n commit('SET_ALL_LOADED', true)\n }\n }\n commit('SET_LOADING', false)\n },\n async FetchStatusesPageByInstance({ commit, getters, rootState, state }) {\n commit('SET_BUTTON_LOADING', true)\n const statuses = state.statusesByInstance.selectedInstance === rootState.user.authHost\n ? await fetchStatuses(\n {\n godmode: state.statusesByInstance.showPrivate,\n localOnly: state.statusesByInstance.showLocal,\n authHost: getters.authHost,\n token: getters.token,\n pageSize: state.statusesByInstance.pageSize,\n page: state.statusesByInstance.page\n })\n : await fetchStatusesByInstance(\n {\n instance: state.statusesByInstance.selectedInstance,\n authHost: getters.authHost,\n token: getters.token,\n pageSize: state.statusesByInstance.pageSize,\n page: state.statusesByInstance.page\n })\n commit('PUSH_STATUSES', statuses.data)\n commit('SET_BUTTON_LOADING', false)\n if (statuses.data.length < state.statusesByInstance.pageSize) {\n commit('SET_ALL_LOADED', true)\n }\n },\n HandleGodmodeCheckboxChange({ commit, dispatch }, value) {\n dispatch('HandlePageChange', 1)\n commit('SET_ALL_LOADED', false)\n\n commit('CHANGE_GODMODE_CHECKBOX_VALUE', value)\n dispatch('FetchStatusesByInstance')\n },\n HandleLocalCheckboxChange({ commit, dispatch }, value) {\n dispatch('HandlePageChange', 1)\n commit('SET_ALL_LOADED', false)\n\n commit('CHANGE_LOCAL_CHECKBOX_VALUE', value)\n dispatch('FetchStatusesByInstance')\n },\n HandleFilterChange({ commit }, instance) {\n commit('CHANGE_SELECTED_INSTANCE', instance)\n commit('SET_ALL_LOADED', false)\n },\n HandlePageChange({ commit }, page) {\n commit('CHANGE_PAGE', page)\n },\n SetStatus({ commit }, status) {\n commit('SET_STATUS', status)\n commit('SET_STATUS_AUTHOR', status.account)\n }\n }\n}\n\nexport default status\n","const tagsView = {\n state: {\n visitedViews: [],\n cachedViews: []\n },\n mutations: {\n ADD_VISITED_VIEW: (state, view) => {\n if (state.visitedViews.some(v => v.path === view.path)) return\n state.visitedViews.push(\n Object.assign({}, view, {\n title: view.meta.title || 'no-name'\n })\n )\n },\n ADD_CACHED_VIEW: (state, view) => {\n if (state.cachedViews.includes(view.name)) return\n if (!view.meta.noCache) {\n state.cachedViews.push(view.name)\n }\n },\n\n DEL_VISITED_VIEW: (state, view) => {\n for (const [i, v] of state.visitedViews.entries()) {\n if (v.path === view.path) {\n state.visitedViews.splice(i, 1)\n break\n }\n }\n },\n DEL_CACHED_VIEW: (state, view) => {\n for (const i of state.cachedViews) {\n if (i === view.name) {\n const index = state.cachedViews.indexOf(i)\n state.cachedViews.splice(index, 1)\n break\n }\n }\n },\n\n DEL_OTHERS_VISITED_VIEWS: (state, view) => {\n state.visitedViews = state.visitedViews.filter(v => {\n return v.meta.affix || v.path === view.path\n })\n },\n DEL_OTHERS_CACHED_VIEWS: (state, view) => {\n for (const i of state.cachedViews) {\n if (i === view.name) {\n const index = state.cachedViews.indexOf(i)\n state.cachedViews = state.cachedViews.slice(index, index + 1)\n break\n }\n }\n },\n\n DEL_ALL_VISITED_VIEWS: state => {\n // keep affix tags\n const affixTags = state.visitedViews.filter(tag => tag.meta.affix)\n state.visitedViews = affixTags\n },\n DEL_ALL_CACHED_VIEWS: state => {\n state.cachedViews = []\n },\n\n UPDATE_VISITED_VIEW: (state, view) => {\n for (let v of state.visitedViews) {\n if (v.path === view.path) {\n v = Object.assign(v, view)\n break\n }\n }\n }\n\n },\n actions: {\n addView({ dispatch }, view) {\n dispatch('addVisitedView', view)\n dispatch('addCachedView', view)\n },\n addVisitedView({ commit }, view) {\n commit('ADD_VISITED_VIEW', view)\n },\n addCachedView({ commit }, view) {\n commit('ADD_CACHED_VIEW', view)\n },\n\n delView({ dispatch, state }, view) {\n return new Promise(resolve => {\n dispatch('delVisitedView', view)\n dispatch('delCachedView', view)\n resolve({\n visitedViews: [...state.visitedViews],\n cachedViews: [...state.cachedViews]\n })\n })\n },\n delVisitedView({ commit, state }, view) {\n return new Promise(resolve => {\n commit('DEL_VISITED_VIEW', view)\n resolve([...state.visitedViews])\n })\n },\n delCachedView({ commit, state }, view) {\n return new Promise(resolve => {\n commit('DEL_CACHED_VIEW', view)\n resolve([...state.cachedViews])\n })\n },\n\n delOthersViews({ dispatch, state }, view) {\n return new Promise(resolve => {\n dispatch('delOthersVisitedViews', view)\n dispatch('delOthersCachedViews', view)\n resolve({\n visitedViews: [...state.visitedViews],\n cachedViews: [...state.cachedViews]\n })\n })\n },\n delOthersVisitedViews({ commit, state }, view) {\n return new Promise(resolve => {\n commit('DEL_OTHERS_VISITED_VIEWS', view)\n resolve([...state.visitedViews])\n })\n },\n delOthersCachedViews({ commit, state }, view) {\n return new Promise(resolve => {\n commit('DEL_OTHERS_CACHED_VIEWS', view)\n resolve([...state.cachedViews])\n })\n },\n\n delAllViews({ dispatch, state }, view) {\n return new Promise(resolve => {\n dispatch('delAllVisitedViews', view)\n dispatch('delAllCachedViews', view)\n resolve({\n visitedViews: [...state.visitedViews],\n cachedViews: [...state.cachedViews]\n })\n })\n },\n delAllVisitedViews({ commit, state }) {\n return new Promise(resolve => {\n commit('DEL_ALL_VISITED_VIEWS')\n resolve([...state.visitedViews])\n })\n },\n delAllCachedViews({ commit, state }) {\n return new Promise(resolve => {\n commit('DEL_ALL_CACHED_VIEWS')\n resolve([...state.cachedViews])\n })\n },\n\n updateVisitedView({ commit }, view) {\n commit('UPDATE_VISITED_VIEW', view)\n }\n }\n}\n\nexport default tagsView\n","import request from '@/utils/request'\nimport { baseName } from './utils'\n\nexport async function loginByUsername(username, password, authHost) {\n const appsRequest = await request({\n baseURL: baseName(authHost),\n url: '/api/v1/apps',\n method: 'post',\n data: {\n client_name: `AdminFE_${Math.random()}`,\n redirect_uris: `${window.location.origin}/oauth-callback`,\n scopes: 'read write follow push admin'\n }\n })\n\n const app = appsRequest.data\n\n return request({\n baseURL: baseName(authHost),\n url: '/oauth/token',\n method: 'post',\n data: {\n client_id: app.client_id,\n client_secret: app.client_secret,\n grant_type: 'password',\n username: username,\n password: password\n }\n })\n}\n\nexport function getUserInfo(token, authHost) {\n return request({\n baseURL: baseName(authHost),\n url: '/api/v1/accounts/verify_credentials',\n method: 'get',\n headers: token ? { 'Authorization': `Bearer ${token}` } : {}\n })\n}\n\nconst oauth = { loginByUsername, getUserInfo }\n\nexport default oauth\n","import request from '@/utils/request'\nimport { baseName } from './utils'\n\nexport async function getNodeInfo(authHost) {\n return await request({\n baseURL: baseName(authHost),\n url: `/nodeinfo/2.0.json`,\n method: 'get'\n })\n}\n","import { loginByUsername, getUserInfo } from '@/api/login'\nimport { getNodeInfo } from '@/api/nodeInfo'\nimport { getToken, setToken, removeToken, getAuthHost, setAuthHost, removeAuthHost } from '@/utils/auth'\n\nconst user = {\n state: {\n user: '',\n id: '',\n status: '',\n code: '',\n token: getToken(),\n authHost: getAuthHost(),\n name: '',\n avatar: '',\n introduction: '',\n roles: [],\n setting: {\n articlePlatform: []\n },\n nodeInfo: {}\n },\n\n mutations: {\n SET_CODE: (state, code) => {\n state.code = code\n },\n SET_TOKEN: (state, token) => {\n state.token = token\n },\n SET_INTRODUCTION: (state, introduction) => {\n state.introduction = introduction\n },\n SET_SETTING: (state, setting) => {\n state.setting = setting\n },\n SET_STATUS: (state, status) => {\n state.status = status\n },\n SET_NAME: (state, name) => {\n state.name = name\n },\n SET_AVATAR: (state, avatar) => {\n state.avatar = avatar\n },\n SET_ROLES: (state, roles) => {\n state.roles = roles\n },\n SET_ID: (state, id) => {\n state.id = id\n },\n SET_AUTH_HOST: (state, authHost) => {\n state.authHost = authHost\n },\n SET_NODE_INFO: (state, nodeInfo) => {\n state.nodeInfo = nodeInfo\n }\n },\n\n actions: {\n LoginByUsername({ commit, dispatch }, { username, authHost, password }) {\n return new Promise((resolve, reject) => {\n loginByUsername(username, password, authHost).then(response => {\n const data = response.data\n commit('SET_TOKEN', data.access_token)\n commit('SET_AUTH_HOST', authHost)\n setToken(data.access_token)\n setAuthHost(authHost)\n resolve()\n }).catch(error => {\n dispatch('addErrorLog', { message: error.message })\n reject(error)\n })\n })\n },\n async GetNodeInfo({ commit, dispatch, state }) {\n const nodeInfo = await getNodeInfo(state.authHost)\n\n commit('SET_NODE_INFO', nodeInfo.data)\n dispatch('SetInvitesEnabled', nodeInfo.data.metadata.invitesEnabled)\n },\n GetUserInfo({ commit, state }) {\n return new Promise((resolve, reject) => {\n getUserInfo(state.token, state.authHost).then(response => {\n const data = response.data\n const message = 'This user doesn\\`t have admin rights. Try another credentials or see the ' +\n 'docs' +\n ' to find out how to make this user an admin'\n\n if (!data) {\n reject('Verification failed, please login again.')\n }\n\n if (data.pleroma && data.pleroma.is_admin) {\n commit('SET_ROLES', ['admin'])\n } else {\n reject(message)\n }\n\n commit('SET_NAME', data.username)\n commit('SET_ID', data.id)\n commit('SET_AVATAR', data.avatar)\n commit('SET_INTRODUCTION', '')\n resolve(response)\n }).catch(error => {\n reject(error)\n })\n })\n },\n LogOut({ commit }) {\n commit('SET_TOKEN', '')\n commit('SET_ROLES', [])\n removeToken()\n removeAuthHost()\n },\n FedLogOut({ commit }) {\n return new Promise(resolve => {\n commit('SET_TOKEN', '')\n removeToken()\n removeAuthHost()\n resolve()\n })\n },\n async LoginByPleromaFE({ commit, dispatch }, { token }) {\n commit('SET_TOKEN', token)\n setToken(token)\n commit('SET_AUTH_HOST', window.location.host)\n setAuthHost(window.location.host)\n\n dispatch('GetUserInfo')\n }\n }\n}\n\nexport default user\n","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function activateUsers(nicknames, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/activate`,\n method: 'patch',\n headers: authHeaders(token),\n data: { nicknames }\n })\n}\n\nexport async function addRight(nicknames, right, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/permission_group/${right}`,\n method: 'post',\n headers: authHeaders(token),\n data: { nicknames }\n })\n}\n\nexport async function createNewAccount(nickname, email, password, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/users',\n method: 'post',\n headers: authHeaders(token),\n data: { users: [{ nickname, email, password }] }\n })\n}\n\nexport async function deactivateUsers(nicknames, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/deactivate`,\n method: 'patch',\n headers: authHeaders(token),\n data: { nicknames }\n })\n}\n\nexport async function deleteRight(nicknames, right, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/permission_group/${right}`,\n method: 'delete',\n headers: authHeaders(token),\n data: { nicknames }\n })\n}\n\nexport async function deleteUsers(nicknames, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users`,\n method: 'delete',\n headers: authHeaders(token),\n data: { nicknames }\n })\n}\n\nexport async function fetchUser(id, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/${id}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function fetchUserCredentials(nickname, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/${nickname}/credentials`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function updateUserCredentials(nickname, credentials, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/${nickname}/credentials`,\n method: 'patch',\n headers: authHeaders(token),\n data: credentials\n })\n}\n\nexport async function fetchUsers(filters, authHost, token, page = 1) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users?page=${page}&filters=${filters}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function getPasswordResetToken(nickname, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/${nickname}/password_reset`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function forcePasswordReset(nicknames, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/force_password_reset`,\n method: 'patch',\n headers: authHeaders(token),\n data: { nicknames }\n })\n}\n\nexport async function searchUsers(query, filters, authHost, token, page = 1) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users?query=${query}&page=${page}&filters=${filters}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function tagUser(nicknames, tags, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/users/tag',\n method: 'put',\n headers: authHeaders(token),\n data: { nicknames, tags }\n })\n}\n\nexport async function untagUser(nicknames, tags, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/users/tag',\n method: 'delete',\n headers: authHeaders(token),\n data: { nicknames, tags }\n })\n}\n\nexport async function fetchUserStatuses(id, authHost, godmode, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/${id}/statuses?godmode=${godmode}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function confirmUserEmail(nicknames, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/users/confirm_email',\n method: 'patch',\n headers: authHeaders(token),\n data: { nicknames }\n })\n}\n\nexport async function resendConfirmationEmail(nicknames, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/users/resend_confirmation_email',\n method: 'patch',\n headers: authHeaders(token),\n data: { nicknames }\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import { fetchUser, fetchUserStatuses, fetchUserCredentials, updateUserCredentials } from '@/api/users'\n\nconst userProfile = {\n state: {\n statuses: [],\n statusesLoading: true,\n user: {},\n userCredentials: {},\n userProfileLoading: true\n },\n mutations: {\n SET_STATUSES: (state, statuses) => {\n state.statuses = statuses\n },\n SET_STATUSES_LOADING: (state, status) => {\n state.statusesLoading = status\n },\n SET_USER: (state, user) => {\n state.user = user\n },\n SET_USER_PROFILE_LOADING: (state, status) => {\n state.userProfileLoading = status\n },\n SET_USER_CREDENTIALS: (state, userCredentials) => {\n state.userCredentials = userCredentials\n }\n },\n actions: {\n async FetchUserProfile({ commit, dispatch, getters }, { userId, godmode }) {\n commit('SET_USER_PROFILE_LOADING', true)\n\n const userResponse = await fetchUser(userId, getters.authHost, getters.token)\n commit('SET_USER', userResponse.data)\n commit('SET_USER_PROFILE_LOADING', false)\n\n dispatch('FetchUserStatuses', { userId, godmode })\n },\n FetchUserStatuses({ commit, dispatch, getters }, { userId, godmode }) {\n commit('SET_STATUSES_LOADING', true)\n\n fetchUserStatuses(userId, getters.authHost, godmode, getters.token)\n .then(statuses => dispatch('SetStatuses', statuses.data))\n\n commit('SET_STATUSES_LOADING', false)\n },\n async FetchUserCredentials({ commit, getters }, { nickname }) {\n const userResponse = await fetchUserCredentials(nickname, getters.authHost, getters.token)\n commit('SET_USER_CREDENTIALS', userResponse.data)\n },\n SetStatuses({ commit }, statuses) {\n commit('SET_STATUSES', statuses)\n },\n async UpdateUserCredentials({ dispatch, getters }, { nickname, credentials }) {\n await updateUserCredentials(nickname, credentials, getters.authHost, getters.token)\n dispatch('FetchUserCredentials', { nickname })\n }\n }\n}\n\nexport default userProfile\n","import { Message } from 'element-ui'\nimport i18n from '@/lang'\nimport {\n activateUsers,\n addRight,\n createNewAccount,\n deactivateUsers,\n deleteRight,\n deleteUsers,\n fetchUsers,\n getPasswordResetToken,\n searchUsers,\n tagUser,\n untagUser,\n forcePasswordReset,\n confirmUserEmail,\n resendConfirmationEmail\n} from '@/api/users'\n\nconst users = {\n state: {\n fetchedUsers: [],\n loading: true,\n searchQuery: '',\n totalUsersCount: 0,\n currentPage: 1,\n pageSize: 50,\n filters: {\n local: false,\n external: false,\n active: false,\n deactivated: false\n },\n passwordResetToken: {\n token: '',\n link: ''\n }\n },\n mutations: {\n SET_USERS: (state, users) => {\n state.fetchedUsers = users\n },\n SET_LOADING: (state, status) => {\n state.loading = status\n },\n SWAP_USERS: (state, users) => {\n const usersWithoutSwapped = users.reduce((acc, user) => {\n return acc.filter(u => u.id !== user.id)\n }, state.fetchedUsers)\n\n if (state.fetchedUsers.length === 0) {\n return\n }\n\n const updatedUsers = [...usersWithoutSwapped, ...users]\n state.fetchedUsers = updatedUsers\n .filter(user => user.nickname && user.id)\n .sort((a, b) => a.nickname.localeCompare(b.nickname))\n .concat(updatedUsers.filter(user => !user.nickname || !user.id))\n },\n SET_COUNT: (state, count) => {\n state.totalUsersCount = count\n },\n SET_PAGE: (state, page) => {\n state.currentPage = page\n },\n SET_PAGE_SIZE: (state, pageSize) => {\n state.pageSize = pageSize\n },\n SET_PASSWORD_RESET_TOKEN: (state, { token, link }) => {\n state.passwordResetToken.token = token\n state.passwordResetToken.link = link\n },\n SET_SEARCH_QUERY: (state, query) => {\n state.searchQuery = query\n },\n SET_USERS_FILTERS: (state, filters) => {\n state.filters = filters\n }\n },\n actions: {\n async ActivateUsers({ dispatch, getters }, { users, _userId }) {\n const updatedUsers = users.map(user => {\n return { ...user, deactivated: false }\n })\n const nicknames = users.map(user => user.nickname)\n const callApiFn = async() => await activateUsers(nicknames, getters.authHost, getters.token)\n\n dispatch('ApplyChanges', { updatedUsers, callApiFn, userId: _userId })\n },\n async ApplyChanges({ commit, dispatch, state }, { updatedUsers, callApiFn, userId, statusId }) {\n commit('SWAP_USERS', updatedUsers)\n\n try {\n await callApiFn()\n } catch (_e) {\n return\n } finally {\n dispatch('SearchUsers', { query: state.searchQuery, page: state.currentPage })\n }\n if (statusId) {\n dispatch('FetchStatusAfterUserModeration', statusId)\n } else if (userId) {\n dispatch('FetchUserProfile', { userId, godmode: false })\n }\n dispatch('SuccessMessage')\n },\n async AddRight({ dispatch, getters }, { users, right, _userId, _statusId }) {\n const updatedUsers = users.map(user => {\n return user.local ? { ...user, roles: { ...user.roles, [right]: true }} : user\n })\n const nicknames = users.map(user => user.nickname)\n const callApiFn = async() => await addRight(nicknames, right, getters.authHost, getters.token)\n\n dispatch('ApplyChanges', { updatedUsers, callApiFn, userId: _userId, statusId: _statusId })\n },\n async AddTag({ dispatch, getters }, { users, tag, _userId, _statusId }) {\n const updatedUsers = users.map(user => {\n return { ...user, tags: [...user.tags, tag] }\n })\n const nicknames = users.map(user => user.nickname)\n const callApiFn = async() => await tagUser(nicknames, [tag], getters.authHost, getters.token)\n\n dispatch('ApplyChanges', { updatedUsers, callApiFn, userId: _userId, statusId: _statusId })\n },\n ClearUsersState({ commit }) {\n commit('SET_SEARCH_QUERY', '')\n commit('SET_USERS_FILTERS', { local: false, external: false, active: false, deactivated: false })\n },\n async ClearFilters({ commit, dispatch, state }) {\n commit('CLEAR_USERS_FILTERS')\n dispatch('SearchUsers', { query: state.searchQuery, page: 1 })\n },\n async CreateNewAccount({ dispatch, getters, state }, { nickname, email, password }) {\n try {\n await createNewAccount(nickname, email, password, getters.authHost, getters.token)\n } catch (_e) {\n return\n } finally {\n dispatch('SearchUsers', { query: state.searchQuery, page: state.currentPage })\n }\n dispatch('SuccessMessage')\n },\n async DeactivateUsers({ dispatch, getters }, { users, _userId }) {\n const updatedUsers = users.map(user => {\n return { ...user, deactivated: true }\n })\n const nicknames = users.map(user => user.nickname)\n const callApiFn = async() => await deactivateUsers(nicknames, getters.authHost, getters.token)\n\n dispatch('ApplyChanges', { updatedUsers, callApiFn, userId: _userId })\n },\n async ConfirmUsersEmail({ dispatch, getters }, { users, _userId, _statusId }) {\n const updatedUsers = users.map(user => {\n return { ...user, confirmation_pending: false }\n })\n const nicknames = users.map(user => user.nickname)\n const callApiFn = async() => await confirmUserEmail(nicknames, getters.authHost, getters.token)\n\n dispatch('ApplyChanges', { updatedUsers, callApiFn, userId: _userId, statusId: _statusId })\n },\n async ResendConfirmationEmail({ dispatch, getters }, users) {\n const usersNicknames = users.map(user => user.nickname)\n try {\n await resendConfirmationEmail(usersNicknames, getters.authHost, getters.token)\n } catch (_e) {\n return\n }\n dispatch('SuccessMessage')\n },\n async DeleteRight({ dispatch, getters }, { users, right, _userId, _statusId }) {\n const updatedUsers = users.map(user => {\n return user.local ? { ...user, roles: { ...user.roles, [right]: false }} : user\n })\n const nicknames = users.map(user => user.nickname)\n const callApiFn = async() => await deleteRight(nicknames, right, getters.authHost, getters.token)\n\n dispatch('ApplyChanges', { updatedUsers, callApiFn, userId: _userId, statusId: _statusId })\n },\n async DeleteUsers({ commit, dispatch, getters, state }, { users, _userId }) {\n const usersNicknames = users.map(user => user.nickname)\n try {\n await deleteUsers(usersNicknames, getters.authHost, getters.token)\n } catch (_e) {\n return\n }\n const deletedUsersIds = users.map(deletedUser => deletedUser.id)\n const updatedUsers = state.fetchedUsers.filter(user => !deletedUsersIds.includes(user.id))\n commit('SET_USERS', updatedUsers)\n\n dispatch('FetchUserProfile', { userId: _userId, godmode: false })\n dispatch('SuccessMessage')\n },\n async FetchUsers({ commit, dispatch, getters, state }, { page }) {\n commit('SET_LOADING', true)\n const filters = Object.keys(state.filters).filter(filter => state.filters[filter]).join()\n const response = await fetchUsers(filters, getters.authHost, getters.token, page)\n await dispatch('GetNodeInfo')\n loadUsers(commit, page, response.data)\n },\n async GetPasswordResetToken({ commit, getters }, nickname) {\n const { data } = await getPasswordResetToken(nickname, getters.authHost, getters.token)\n commit('SET_PASSWORD_RESET_TOKEN', data)\n },\n RemovePasswordToken({ commit }) {\n commit('SET_PASSWORD_RESET_TOKEN', { link: '', token: '' })\n },\n async RemoveTag({ dispatch, getters }, { users, tag, _userId, _statusId }) {\n const updatedUsers = users.map(user => {\n return { ...user, tags: user.tags.filter(userTag => userTag !== tag) }\n })\n const nicknames = users.map(user => user.nickname)\n const callApiFn = async() => await untagUser(nicknames, [tag], getters.authHost, getters.token)\n\n dispatch('ApplyChanges', { updatedUsers, callApiFn, userId: _userId, statusId: _statusId })\n },\n async RequirePasswordReset({ dispatch, getters }, users) {\n const nicknames = users.map(user => user.nickname)\n try {\n await forcePasswordReset(nicknames, getters.authHost, getters.token)\n } catch (_e) {\n return\n }\n dispatch('SuccessMessage')\n },\n async SearchUsers({ commit, dispatch, state, getters }, { query, page }) {\n if (query.length === 0) {\n commit('SET_SEARCH_QUERY', query)\n dispatch('FetchUsers', { page })\n } else {\n commit('SET_LOADING', true)\n commit('SET_SEARCH_QUERY', query)\n\n const filters = Object.keys(state.filters).filter(filter => state.filters[filter]).join()\n const response = await searchUsers(query, filters, getters.authHost, getters.token, page)\n\n loadUsers(commit, page, response.data)\n }\n },\n SuccessMessage() {\n Message.success({\n message: i18n.t('users.completed'),\n duration: 5 * 1000\n })\n },\n async ToggleUsersFilter({ commit, dispatch, state }, filters) {\n const defaultFilters = {\n local: false,\n external: false,\n active: false,\n deactivated: false\n }\n const currentFilters = { ...defaultFilters, ...filters }\n commit('SET_USERS_FILTERS', currentFilters)\n dispatch('SearchUsers', { query: state.searchQuery, page: 1 })\n }\n }\n}\n\nconst loadUsers = (commit, page, { users, count, page_size }) => {\n commit('SET_USERS', users)\n commit('SET_COUNT', count)\n commit('SET_PAGE', page)\n commit('SET_PAGE_SIZE', page_size)\n commit('SET_LOADING', false)\n}\n\nexport default users\n","const getters = {\n sidebar: state => state.app.sidebar,\n language: state => state.app.language,\n size: state => state.app.size,\n device: state => state.app.device,\n visitedViews: state => state.tagsView.visitedViews,\n cachedViews: state => state.tagsView.cachedViews,\n token: state => state.user.token,\n avatar: state => state.user.avatar,\n name: state => state.user.name,\n introduction: state => state.user.introduction,\n status: state => state.user.status,\n roles: state => state.user.roles,\n setting: state => state.user.setting,\n permission_routers: state => state.permission.routers,\n addRouters: state => state.permission.addRouters,\n errorLogs: state => state.errorLog.logs,\n users: state => state.users.fetchedUsers,\n authHost: state => state.user.authHost,\n settings: state => state.settings\n}\nexport default getters\n","import {\n addNewEmojiFile,\n createPack,\n deleteEmojiFile,\n deletePack,\n downloadFrom,\n importFromFS,\n listPacks,\n listRemotePacks,\n reloadEmoji,\n savePackMetadata,\n updateEmojiFile\n} from '@/api/emojiPacks'\nimport i18n from '@/lang'\nimport { Message } from 'element-ui'\n\nimport Vue from 'vue'\n\nconst packs = {\n state: {\n activeCollapseItems: [],\n localPacks: {},\n remoteInstance: '',\n remotePacks: {}\n },\n mutations: {\n SET_ACTIVE_COLLAPSE_ITEMS: (state, items) => {\n state.activeCollapseItems = items\n },\n SET_LOCAL_PACKS: (state, packs) => {\n state.localPacks = packs\n },\n SET_REMOTE_INSTANCE: (state, name) => {\n state.remoteInstance = name\n },\n SET_REMOTE_PACKS: (state, packs) => {\n state.remotePacks = packs\n },\n UPDATE_LOCAL_PACK_VAL: (state, { name, key, value }) => {\n Vue.set(state.localPacks[name]['pack'], key, value)\n },\n UPDATE_LOCAL_PACK_PACK: (state, { name, pack }) => {\n state.localPacks[name]['pack'] = pack\n },\n UPDATE_LOCAL_PACK_FILES: (state, { name, files }) => {\n // Use vue.set in case \"files\" was null\n Vue.set(\n state.localPacks[name],\n 'files',\n files\n )\n }\n },\n actions: {\n async AddNewEmojiFile({ commit, getters }, { packName, file, shortcode, filename }) {\n let result\n try {\n result = await addNewEmojiFile(packName, file, shortcode, filename, getters.authHost, getters.token)\n } catch (_e) {\n return\n }\n Message({\n message: `${i18n.t('settings.successfullyUpdated')} ${packName} ${i18n.t('settings.metadatLowerCase')}`,\n type: 'success',\n duration: 5 * 1000\n })\n\n commit('UPDATE_LOCAL_PACK_FILES', { name: packName, files: result.data })\n },\n async DeleteEmojiFile({ commit, getters }, { packName, shortcode }) {\n let result\n try {\n result = await deleteEmojiFile(packName, shortcode, getters.authHost, getters.token)\n } catch (_e) {\n return\n }\n Message({\n message: `${i18n.t('settings.successfullyUpdated')} ${packName} ${i18n.t('settings.metadatLowerCase')}`,\n type: 'success',\n duration: 5 * 1000\n })\n\n commit('UPDATE_LOCAL_PACK_FILES', { name: packName, files: result.data })\n },\n async CreatePack({ getters }, { name }) {\n await createPack(getters.authHost, getters.token, name)\n },\n async DeletePack({ getters }, { name }) {\n await deletePack(getters.authHost, getters.token, name)\n },\n async DownloadFrom({ getters }, { instanceAddress, packName, as }) {\n const result = await downloadFrom(getters.authHost, instanceAddress, packName, as, getters.token)\n\n if (result.data === 'ok') {\n Message({\n message: `${i18n.t('settings.successfullyDownloaded')} ${packName}`,\n type: 'success',\n duration: 5 * 1000\n })\n }\n },\n async ImportFromFS({ getters }) {\n const result = await importFromFS(getters.authHost, getters.token)\n\n if (result.status === 200) {\n const message = result.data.length > 0\n ? `${i18n.t('settings.successfullyImported')} ${result.data}`\n : i18n.t('settings.nowNewPacksToImport')\n\n Message({\n message,\n type: 'success',\n duration: 5 * 1000\n })\n }\n },\n async ReloadEmoji({ getters }) {\n await reloadEmoji(getters.authHost, getters.token)\n },\n async SavePackMetadata({ commit, getters, state }, { packName }) {\n const result =\n await savePackMetadata(\n getters.authHost,\n getters.token,\n packName,\n state.localPacks[packName]['pack']\n )\n\n if (result.status === 200) {\n Message({\n message: `${i18n.t('settings.successfullyUpdated')} ${packName} ${i18n.t('settings.metadatLowerCase')}`,\n type: 'success',\n duration: 5 * 1000\n })\n\n commit('UPDATE_LOCAL_PACK_PACK', { name: packName, pack: result.data })\n }\n },\n SetActiveCollapseItems({ commit, state }, activeItems) {\n commit('SET_ACTIVE_COLLAPSE_ITEMS', activeItems)\n },\n async SetLocalEmojiPacks({ commit, getters }) {\n const { data } = await listPacks(getters.authHost)\n commit('SET_LOCAL_PACKS', data)\n },\n async SetRemoteEmojiPacks({ commit, getters }, { remoteInstance }) {\n const { data } = await listRemotePacks(getters.authHost, getters.token, remoteInstance)\n\n commit('SET_REMOTE_INSTANCE', remoteInstance)\n commit('SET_REMOTE_PACKS', data)\n },\n SetRemoteInstance({ commit }, instance) {\n commit('SET_REMOTE_INSTANCE', instance)\n },\n async UpdateEmojiFile({ commit, getters }, { packName, shortcode, newShortcode, newFilename, force }) {\n let result\n try {\n result = await updateEmojiFile(packName, shortcode, newShortcode, newFilename, force, getters.authHost, getters.token)\n } catch (_e) {\n return\n }\n Message({\n message: `${i18n.t('settings.successfullyUpdated')} ${packName} ${i18n.t('settings.metadatLowerCase')}`,\n type: 'success',\n duration: 5 * 1000\n })\n\n commit('UPDATE_LOCAL_PACK_FILES', { name: packName, files: result.data })\n },\n async UpdateLocalPackVal({ commit }, args) {\n commit('UPDATE_LOCAL_PACK_VAL', args)\n }\n }\n}\n\nexport default packs\n","import Vue from 'vue'\nimport Vuex from 'vuex'\nimport app from './modules/app'\nimport errorLog from './modules/errorLog'\nimport moderationLog from './modules/moderationLog'\nimport invites from './modules/invites'\nimport peers from './modules/peers'\nimport permission from './modules/permission'\nimport relays from './modules/relays'\nimport reports from './modules/reports'\nimport settings from './modules/settings'\nimport status from './modules/status'\nimport tagsView from './modules/tagsView'\nimport user from './modules/user'\nimport userProfile from './modules/userProfile'\nimport users from './modules/users'\nimport getters from './getters'\nimport emojiPacks from './modules/emojiPacks.js'\n\nVue.use(Vuex)\n\nconst store = new Vuex.Store({\n modules: {\n app,\n errorLog,\n moderationLog,\n invites,\n peers,\n permission,\n relays,\n reports,\n settings,\n status,\n tagsView,\n user,\n userProfile,\n users,\n emojiPacks\n },\n getters\n})\n\nexport default store\n","import Vue from 'vue'\nimport SvgIcon from '@/components/element-ui/SvgIcon'// svg组件\n\n// register globally\nVue.component('svg-icon', SvgIcon)\n\nconst req = require.context('./svg', false, /\\.svg$/)\nconst requireAll = requireContext => requireContext.keys().map(requireContext)\nrequireAll(req)\n","import Vue from 'vue'\nimport store from './store'\n\n// you can set only in production env show the error-log\nif (process.env.NODE_ENV === 'production') {\n Vue.config.errorHandler = function(err, vm, info, a) {\n // Don't ask me why I use Vue.nextTick, it just a hack.\n // detail see https://forum.vuejs.org/t/dispatch-in-vue-config-errorhandler-has-some-problem/23500\n Vue.nextTick(() => {\n store.dispatch('addErrorLog', {\n err,\n vm,\n info,\n url: window.location.href\n })\n console.error(err, info)\n })\n }\n}\n","import router from './router'\nimport store from './store'\nimport { Message } from 'element-ui'\nimport NProgress from 'nprogress' // progress bar\nimport 'nprogress/nprogress.css'// progress bar style\nimport { getToken } from '@/utils/auth' // getToken from cookie\n\nNProgress.configure({ showSpinner: false })// NProgress Configuration\n\n// permission judge function\nfunction hasPermission(roles, permissionRoles) {\n if (roles.indexOf('admin') >= 0) return true // admin permission passed directly\n if (!permissionRoles) return true\n return roles.some(role => permissionRoles.indexOf(role) >= 0)\n}\n\nconst whiteList = ['/login', '/auth-redirect', '/login-pleroma']// no redirect whitelist\n\nexport const beforeEachRoute = (to, from, next) => {\n NProgress.start() // start progress bar\n if (getToken()) { // determine if there has token\n /* has token*/\n if (to.path === '/login') {\n next({ path: '/' })\n NProgress.done() // if current page is dashboard will not trigger\tafterEach hook, so manually handle it\n } else {\n if (store.getters.roles.length === 0) {\n store.dispatch('GetUserInfo').then(res => {\n const roles = res.data.pleroma.is_admin ? ['admin'] : []\n store.dispatch('GenerateRoutes', { roles }).then(() => {\n router.addRoutes(store.getters.addRouters)\n next({ ...to, replace: true })\n })\n }).catch((err) => {\n store.dispatch('FedLogOut').then(() => {\n Message({\n dangerouslyUseHTMLString: true,\n message: err,\n type: 'error',\n duration: 10 * 1000\n })\n next({ path: '/' })\n })\n })\n } else {\n if (hasPermission(store.getters.roles, to.meta.roles)) {\n next()\n } else {\n next({ path: '/401', replace: true, query: { noGoBack: true }})\n }\n }\n }\n } else {\n /* has no token*/\n if (whiteList.indexOf(to.path) !== -1) {\n next()\n } else {\n next(`/login?redirect=${to.path}`)\n NProgress.done() // if current page is login will not trigger afterEach hook, so manually handle it\n }\n }\n}\nrouter.beforeEach(beforeEachRoute)\n\nrouter.afterEach(() => {\n NProgress.done() // finish progress bar\n})\n","// set function parseTime,formatTime to filter\nexport { parseTime, formatTime } from '@/utils'\n\nfunction pluralize(time, label) {\n if (time === 1) {\n return time + label\n }\n return time + label + 's'\n}\n\nexport function timeAgo(time) {\n const between = Date.now() / 1000 - Number(time)\n if (between < 3600) {\n return pluralize(~~(between / 60), ' minute')\n } else if (between < 86400) {\n return pluralize(~~(between / 3600), ' hour')\n } else {\n return pluralize(~~(between / 86400), ' day')\n }\n}\n\n/* 数字 格式化*/\nexport function numberFormatter(num, digits) {\n const si = [\n { value: 1E18, symbol: 'E' },\n { value: 1E15, symbol: 'P' },\n { value: 1E12, symbol: 'T' },\n { value: 1E9, symbol: 'G' },\n { value: 1E6, symbol: 'M' },\n { value: 1E3, symbol: 'k' }\n ]\n for (let i = 0; i < si.length; i++) {\n if (num >= si[i].value) {\n return (num / si[i].value + 0.1).toFixed(digits).replace(/\\.0+$|(\\.[0-9]*[1-9])0+$/, '$1') + si[i].symbol\n }\n }\n return num.toString()\n}\n\nexport function toThousandFilter(num) {\n return (+num || 0).toString().replace(/^-?\\d+/g, m => m.replace(/(?=(?!\\b)(\\d{3})+$)/g, ','))\n}\n","import Vue from 'vue'\n\nimport Cookies from 'js-cookie'\n\nimport 'normalize.css/normalize.css' // A modern alternative to CSS resets\n\nimport Element from 'element-ui'\nimport 'element-ui/lib/theme-chalk/index.css'\n\nimport '@/styles/index.scss' // global css\n\nimport App from './App'\nimport store from './store'\nimport router from './router'\n\nimport i18n from './lang' // Internationalization\nimport './icons' // icon\nimport './errorLog' // error log\nimport './permission' // permission control\n\nimport * as filters from './filters' // global filters\n\nVue.use(Element, {\n size: Cookies.get('size') || 'medium', // set element-ui default size\n i18n: (key, value) => i18n.t(key, value)\n})\n\n// register global utility filters.\nObject.keys(filters).forEach(key => {\n Vue.filter(key, filters[key])\n})\n\nVue.config.productionTip = false\n\nnew Vue({\n el: '#app',\n router,\n store,\n i18n,\n render: h => h(App)\n})\n","import Cookies from 'js-cookie'\n\nconst TokenKey = 'Admin-Token'\nconst AuthHostKey = 'Auth-Host'\n\nexport function getToken() {\n return Cookies.get(TokenKey)\n}\n\nexport function setToken(token) {\n return Cookies.set(TokenKey, token)\n}\n\nexport function removeToken() {\n return Cookies.remove(TokenKey)\n}\n\nexport function getAuthHost() {\n return Cookies.get(AuthHostKey)\n}\n\nexport function setAuthHost(token) {\n return Cookies.set(AuthHostKey, token)\n}\n\nexport function removeAuthHost() {\n return Cookies.remove(AuthHostKey)\n}\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TagsView.vue?vue&type=style&index=1&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TagsView.vue?vue&type=style&index=1&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--7-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMain.vue?vue&type=style&index=0&id=f852c4f2&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--7-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMain.vue?vue&type=style&index=0&id=f852c4f2&scoped=true&lang=css&\"","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-excel\",\n \"use\": \"icon-excel-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-guide\",\n \"use\": \"icon-guide-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-star\",\n \"use\": \"icon-star-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navbar.vue?vue&type=style&index=0&id=28de7ff2&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navbar.vue?vue&type=style&index=0&id=28de7ff2&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-wechat\",\n \"use\": \"icon-wechat-usage\",\n \"viewBox\": \"0 0 128 110\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import _ from 'lodash'\n\nexport const getBooleanValue = value => {\n if (value === 'true') {\n return true\n } else if (value === 'false') {\n return false\n }\n return value\n}\n\nexport const checkPartialUpdate = (settings, updatedSettings, description) => {\n return Object.keys(updatedSettings).reduce((acc, group) => {\n acc[group] = Object.keys(updatedSettings[group]).reduce((acc, key) => {\n if (!partialUpdate(group, key)) {\n const updated = Object.keys(settings[group][key]).reduce((acc, settingName) => {\n const setting = description\n .find(element => element.group === group && element.key === key).children\n .find(child => child.key === settingName)\n const type = setting ? setting.type : ''\n acc[settingName] = [type, settings[group][key][settingName]]\n return acc\n }, {})\n acc[key] = updated\n return acc\n }\n acc[key] = updatedSettings[group][key]\n return acc\n }, {})\n return acc\n }, {})\n}\n\nconst getCurrentValue = (type, value, path) => {\n if (type === 'state') {\n return _.get(value, path)\n } else {\n const [firstSettingName, ...restKeys] = path\n const firstSegment = value[firstSettingName]\n if (restKeys.length === 0 || !firstSegment) {\n return firstSegment || false\n } else {\n const secondSegment = (value, keys) => {\n const [element, ...rest] = keys\n return keys.length === 0 ? value : secondSegment(value[1][element], rest)\n }\n return secondSegment(firstSegment, restKeys)\n }\n }\n}\n\nconst getValueWithoutKey = (key, [type, value]) => {\n if (type === 'atom' && value.length > 1) {\n return `:${value}`\n } else if (key === ':backends') {\n const index = value.findIndex(el => el === ':ex_syslogger')\n const updatedArray = value.slice()\n if (index !== -1) {\n updatedArray[index] = { 'tuple': ['ExSyslogger', ':ex_syslogger'] }\n }\n return updatedArray\n } else if (key === ':types') {\n return Object.keys(value).reduce((acc, key) => { return { ...acc, [key]: value[key][1] } }, {})\n }\n return value\n}\n\nexport const parseNonTuples = (key, value) => {\n if (key === ':backends') {\n const index = value.findIndex(el => typeof el === 'object' && el.tuple.includes(':ex_syslogger'))\n const updated = value.map((el, i) => i === index ? ':ex_syslogger' : el)\n return updated\n }\n if (key === ':args') {\n if (typeof value === 'string') {\n return [value]\n }\n const index = value.findIndex(el => typeof el === 'object' && el.tuple.includes('implode'))\n const updated = value.map((el, i) => i === index ? 'implode' : el)\n return updated\n }\n return value\n}\n// REFACTOR\nexport const parseTuples = (tuples, key) => {\n return tuples.reduce((accum, item) => {\n if (key === ':rate_limit') {\n accum[item.tuple[0]] = Array.isArray(item.tuple[1])\n ? item.tuple[1].map(el => el.tuple)\n : item.tuple[1].tuple\n } else if (item.tuple[0] === ':mascots') {\n accum[item.tuple[0]] = item.tuple[1].reduce((acc, mascot) => {\n return [...acc, { [mascot.tuple[0]]: { ...mascot.tuple[1], id: `f${(~~(Math.random() * 1e8)).toString(16)}` }}]\n }, [])\n } else if (Array.isArray(item.tuple[1]) &&\n (item.tuple[0] === ':groups' || item.tuple[0] === ':replace' || item.tuple[0] === ':retries')) {\n accum[item.tuple[0]] = item.tuple[1].reduce((acc, group) => {\n return [...acc, { [group.tuple[0]]: { value: group.tuple[1], id: `f${(~~(Math.random() * 1e8)).toString(16)}` }}]\n }, [])\n } else if (item.tuple[0] === ':crontab') {\n accum[item.tuple[0]] = item.tuple[1].reduce((acc, group) => {\n return { ...acc, [group.tuple[1]]: group.tuple[0] }\n }, {})\n } else if (item.tuple[0] === ':match_actor') {\n accum[item.tuple[0]] = Object.keys(item.tuple[1]).reduce((acc, regex) => {\n return [...acc, { [regex]: { value: item.tuple[1][regex], id: `f${(~~(Math.random() * 1e8)).toString(16)}` }}]\n }, [])\n } else if (item.tuple[0] === ':icons') {\n accum[item.tuple[0]] = item.tuple[1].map(icon => {\n return Object.keys(icon).map(name => {\n return { key: name, value: icon[name], id: `f${(~~(Math.random() * 1e8)).toString(16)}` }\n })\n }, [])\n } else if (item.tuple[0] === ':prune') {\n accum[item.tuple[0]] = item.tuple[1] === ':disabled' ? [item.tuple[1]] : item.tuple[1].tuple\n } else if (item.tuple[0] === ':proxy_url') {\n accum[item.tuple[0]] = parseProxyUrl(item.tuple[1])\n } else if (item.tuple[0] === ':args') {\n accum[item.tuple[0]] = parseNonTuples(item.tuple[0], item.tuple[1])\n } else if (Array.isArray(item.tuple[1]) &&\n (typeof item.tuple[1][0] === 'object' && !Array.isArray(item.tuple[1][0])) && item.tuple[1][0]['tuple']) {\n accum[item.tuple[0]] = parseTuples(item.tuple[1], item.tuple[0])\n } else if (Array.isArray(item.tuple[1])) {\n accum[item.tuple[0]] = item.tuple[1]\n } else if (item.tuple[0] === ':ip') {\n accum[item.tuple[0]] = item.tuple[1].tuple.join('.')\n } else if (item.tuple[1] && typeof item.tuple[1] === 'object') {\n accum[item.tuple[0]] = parseObject(item.tuple[1])\n } else {\n accum[item.tuple[0]] = item.tuple[1]\n }\n return accum\n }, {})\n}\n\nconst parseObject = object => {\n return Object.keys(object).reduce((acc, item) => {\n acc[item] = object[item]\n return acc\n }, {})\n}\n\nconst parseProxyUrl = value => {\n if (value && !Array.isArray(value) &&\n typeof value === 'object' &&\n value.tuple.length === 3 &&\n value.tuple[0] === ':socks5') {\n const [, host, port] = value.tuple\n return { socks5: true, host, port }\n } else if (typeof value === 'string') {\n const [host, port] = value.split(':')\n return { socks5: false, host, port }\n }\n return { socks5: false, host: null, port: null }\n}\n\nconst partialUpdate = (group, key) => {\n return !(group === ':auto_linker' && key === ':opts')\n}\n\nexport const processNested = (valueForState, valueForUpdatedSettings, group, parentKey, parents, settings, updatedSettings) => {\n const [{ key, type }, ...otherParents] = parents\n const path = [group, parentKey, ...parents.reverse().map(parent => parent.key).slice(0, -1)]\n\n let updatedValueForState = valueExists('state', settings, path)\n ? { ...getCurrentValue('state', settings[group][parentKey], parents.map(el => el.key).slice(0, -1)),\n ...{ [key]: valueForState }}\n : { [key]: valueForState }\n let updatedValueForUpdatedSettings = valueExists('updatedSettings', updatedSettings, path)\n ? { ...getCurrentValue('updatedSettings', updatedSettings[group][parentKey], parents.map(el => el.key).slice(0, -1))[1],\n ...{ [key]: [type, valueForUpdatedSettings] }}\n : { [key]: [type, valueForUpdatedSettings] }\n\n if (group === ':mime' && parents[0].key === ':types') {\n updatedValueForState = settings[group][parents[0].key]\n ? { ...settings[group][parents[0].key].value, ...updatedValueForState }\n : updatedValueForState\n updatedValueForUpdatedSettings = settings[group][parents[0].key]\n ? { ...Object.keys(settings[group][parents[0].key].value)\n .reduce((acc, el) => {\n return { ...acc, [el]: [type, settings[group][parents[0].key].value[el]] }\n }, {}),\n ...updatedValueForUpdatedSettings }\n : updatedValueForUpdatedSettings\n }\n\n return otherParents.length === 1\n ? { valueForState: updatedValueForState, valueForUpdatedSettings: updatedValueForUpdatedSettings, setting: otherParents[0] }\n : processNested(updatedValueForState, updatedValueForUpdatedSettings, group, parentKey, otherParents, settings, updatedSettings)\n}\n\nconst valueExists = (type, value, path) => {\n if (type === 'state') {\n return _.get(value, path)\n } else {\n const [group, key, firstSettingName, ...restKeys] = path\n const firstSegment = _.get(value, [group, key, firstSettingName])\n if (restKeys.length === 0 || !firstSegment) {\n return firstSegment || false\n } else {\n const secondSegment = (value, keys) => {\n if (keys.length === 0) {\n return true\n }\n const [element, ...rest] = keys\n return value[1][element] ? secondSegment(value[1][element], rest) : false\n }\n return secondSegment(firstSegment, restKeys)\n }\n }\n}\n\nexport const valueHasTuples = (key, value) => {\n const valueIsArrayOfNonObjects = Array.isArray(value) && value.length > 0 && value.every(el => typeof el !== 'object')\n return key === ':meta' ||\n key === ':types' ||\n key === ':backends' ||\n key === ':compiled_template_engines' ||\n key === ':compiled_format_encoders' ||\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n value === null ||\n valueIsArrayOfNonObjects\n}\n\nexport const wrapUpdatedSettings = (group, settings, currentState) => {\n return Object.keys(settings).map((key) => {\n return settings[key]._value\n ? { group, key, value: getValueWithoutKey(key, settings[key]._value) }\n : { group, key, value: wrapValues(settings[key], currentState[group][key]) }\n })\n}\n\nconst wrapValues = (settings, currentState) => {\n return Object.keys(settings).map(setting => {\n const [type, value] = settings[setting]\n if (\n type === 'keyword' ||\n type.includes('keyword') ||\n type.includes('tuple') && type.includes('list') ||\n setting === ':replace'\n ) {\n return { 'tuple': [setting, wrapValues(value, currentState)] }\n } else if (type === 'atom' && value.length > 0) {\n return { 'tuple': [setting, `:${value}`] }\n } else if (type.includes('tuple') && (type.includes('string') || type.includes('atom'))) {\n return typeof value === 'string'\n ? { 'tuple': [setting, value] }\n : { 'tuple': [setting, { 'tuple': value }] }\n } else if (type === 'reversed_tuple') {\n return { 'tuple': [value, setting] }\n } else if (type === 'map') {\n const mapValue = Object.keys(value).reduce((acc, key) => {\n acc[key] = setting === ':match_actor' ? value[key] : value[key][1]\n return acc\n }, {})\n const mapCurrentState = setting === ':match_actor'\n ? currentState[setting].reduce((acc, element) => {\n return { ...acc, ...{ [Object.keys(element)[0]]: Object.values(element)[0].value }}\n }, {})\n : currentState[setting]\n return { 'tuple': [setting, { ...mapCurrentState, ...mapValue }] }\n } else if (setting === ':ip') {\n const ip = value.split('.').map(s => parseInt(s, 10))\n return { 'tuple': [setting, { 'tuple': ip }] }\n } else if (setting === ':args') {\n const index = value.findIndex(el => el === 'implode')\n const updatedArray = value.slice()\n if (index !== -1) {\n updatedArray[index] = { 'tuple': ['implode', '1'] }\n }\n return { 'tuple': [setting, updatedArray] }\n } else {\n return { 'tuple': [setting, value] }\n }\n })\n}\n\nexport const formSearchObject = description => {\n const parseNestedSettings = (description, label, key) => description.reduce((acc, setting) => {\n const searchArray = _.compact([setting.key, setting.label, setting.description]).map(el => el.toLowerCase())\n const resultObject = { label: setting.label, key: setting.key || setting.group, groupKey: key, groupLabel: label, search: searchArray }\n if (setting.children) {\n const updatedAcc = [...acc, resultObject]\n return [...updatedAcc, ...parseNestedSettings(setting.children, label, key)]\n }\n return [...acc, resultObject]\n }, [])\n\n return description.reduce((acc, setting) => {\n const searchArray = _.compact([setting.key, setting.label, setting.description]).map(el => el.toLowerCase())\n const resultObject = { label: setting.label, key: setting.key || setting.group, groupKey: setting.key || setting.group, groupLabel: setting.label, search: searchArray }\n if (setting.children) {\n const updatedAcc = !setting.key && setting.group === ':pleroma' ? acc : [...acc, resultObject]\n return [...updatedAcc, ...parseNestedSettings(setting.children, setting.label, setting.key || setting.group)]\n }\n return !setting.key && setting.group === ':pleroma' ? acc : [...acc, resultObject]\n }, [])\n}\n","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-size\",\n \"use\": \"icon-size-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-zip\",\n \"use\": \"icon-zip-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tab\",\n \"use\": \"icon-tab-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-search\",\n \"use\": \"icon-search-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tree\",\n \"use\": \"icon-tree-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-documentation\",\n \"use\": \"icon-documentation-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-drag\",\n \"use\": \"icon-drag-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--7-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=17178ffc&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--7-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=17178ffc&scoped=true&lang=css&\"","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-fullscreen\",\n \"use\": \"icon-fullscreen-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import Vue from 'vue'\nimport VueI18n from 'vue-i18n'\nimport Cookies from 'js-cookie'\nimport elementEnLocale from 'element-ui/lib/locale/lang/en' // element-ui lang\nimport elementZhLocale from 'element-ui/lib/locale/lang/zh-CN' // element-ui lang\nimport elementEsLocale from 'element-ui/lib/locale/lang/es' // element-ui lang\nimport enLocale from './en'\nimport zhLocale from './zh'\nimport esLocale from './es'\nimport ocLocale from './oc'\n\nVue.use(VueI18n)\n\nconst messages = {\n en: {\n ...enLocale,\n ...elementEnLocale\n },\n zh: {\n ...zhLocale,\n ...elementZhLocale\n },\n es: {\n ...esLocale,\n ...elementEsLocale\n },\n oc: {\n ...ocLocale\n }\n}\n\nconst i18n = new VueI18n({\n // set locale\n // options: en | zh | es | oc\n locale: Cookies.get('language') || 'en',\n // set locale messages\n messages\n})\n\nexport default i18n\n","export default {\n route: {\n dashboard: 'Dashboard',\n introduction: 'Introduction',\n documentation: 'Documentation',\n guide: 'Guide',\n permission: 'Permission',\n pagePermission: 'Page Permission',\n directivePermission: 'Directive Permission',\n icons: 'Icons',\n components: 'Components',\n componentIndex: 'Introduction',\n markdown: 'Markdown',\n jsonEditor: 'JSON Editor',\n dndList: 'Dnd List',\n splitPane: 'SplitPane',\n avatarUpload: 'Avatar Upload',\n dropzone: 'Dropzone',\n sticky: 'Sticky',\n countTo: 'CountTo',\n componentMixin: 'Mixin',\n backToTop: 'BackToTop',\n dragDialog: 'Drag Dialog',\n dragSelect: 'Drag Select',\n dragKanban: 'Drag Kanban',\n charts: 'Charts',\n keyboardChart: 'Keyboard Chart',\n lineChart: 'Line Chart',\n mixChart: 'Mix Chart',\n example: 'Example',\n nested: 'Nested Routes',\n menu1: 'Menu 1',\n 'menu1-1': 'Menu 1-1',\n 'menu1-2': 'Menu 1-2',\n 'menu1-2-1': 'Menu 1-2-1',\n 'menu1-2-2': 'Menu 1-2-2',\n 'menu1-3': 'Menu 1-3',\n menu2: 'Menu 2',\n Table: 'Table',\n dynamicTable: 'Dynamic Table',\n dragTable: 'Drag Table',\n inlineEditTable: 'Inline Edit',\n complexTable: 'Complex Table',\n treeTable: 'Tree Table',\n customTreeTable: 'Custom TreeTable',\n tab: 'Tab',\n form: 'Form',\n createArticle: 'Create Article',\n editArticle: 'Edit Article',\n articleList: 'Article List',\n errorPages: 'Error Pages',\n page401: '401',\n page404: '404',\n errorLog: 'Error Log',\n excel: 'Excel',\n exportExcel: 'Export Excel',\n selectExcel: 'Export Selected',\n uploadExcel: 'Upload Excel',\n zip: 'Zip',\n pdf: 'PDF',\n exportZip: 'Export Zip',\n theme: 'Theme',\n clipboardDemo: 'Clipboard',\n i18n: 'I18n',\n externalLink: 'External Link',\n users: 'Users',\n reports: 'Reports',\n settings: 'Settings',\n moderationLog: 'Moderation Log',\n 'emoji-packs': 'Emoji packs'\n },\n navbar: {\n logOut: 'Log Out',\n dashboard: 'Dashboard',\n github: 'Github',\n theme: 'Theme',\n size: 'Global Size'\n },\n login: {\n title: 'Login Form',\n logIn: 'Log in',\n logInViaPleromaFE: 'Log in via PleromaFE',\n username: 'username@host',\n password: 'password',\n omitHostname: 'omit hostname if Pleroma is located on this domain',\n errorMessage: 'Username must contain username and host, e.g. john@pleroma.social',\n any: 'any',\n thirdparty: 'Or connect with',\n pleromaFELoginFailed: 'Failed to login via PleromaFE, please login with username/password',\n pleromaFELoginSucceed: 'Logged in via PleromaFE'\n },\n documentation: {\n documentation: 'Documentation',\n github: 'Github Repository'\n },\n permission: {\n roles: 'Your roles',\n switchRoles: 'Switch roles',\n tips: 'In some cases it is not suitable to use v-permission, such as element Tab component or el-table-column and other asynchronous rendering dom cases which can only be achieved by manually setting the v-if.'\n },\n guide: {\n description: 'The guide page is useful for some people who entered the project for the first time. You can briefly introduce the features of the project. Demo is based on ',\n button: 'Show Guide'\n },\n components: {\n documentation: 'Documentation',\n dropzoneTips: 'Because my business has special needs, and has to upload images to qiniu, so instead of a third party, I chose encapsulate it by myself. It is very simple, you can see the detail code in @/components/element-ui/Dropzone.',\n stickyTips: 'when the page is scrolled to the preset position will be sticky on the top.',\n backToTopTips1: 'When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner',\n backToTopTips2: 'You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally',\n imageUploadTips: 'Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version.'\n },\n table: {\n dynamicTips1: 'Fixed header, sorted by header order',\n dynamicTips2: 'Not fixed header, sorted by click order',\n dragTips1: 'The default order',\n dragTips2: 'The after dragging order',\n title: 'Title',\n importance: 'Imp',\n type: 'Type',\n remark: 'Remark',\n search: 'Search',\n add: 'Add',\n export: 'Export',\n reviewer: 'reviewer',\n id: 'ID',\n date: 'Date',\n author: 'Author',\n readings: 'Readings',\n status: 'Status',\n actions: 'Actions',\n edit: 'Edit',\n publish: 'Publish',\n draft: 'Draft',\n delete: 'Delete',\n cancel: 'Cancel',\n confirm: 'Confirm'\n },\n errorLog: {\n tips: 'Please click the bug icon in the upper right corner',\n description: 'Now the management system are basically the form of the spa, it enhances the user experience, but it also increases the possibility of page problems, a small negligence may lead to the entire page deadlock. Fortunately Vue provides a way to catch handling exceptions, where you can handle errors or report exceptions.',\n documentation: 'Document introduction'\n },\n excel: {\n export: 'Export',\n selectedExport: 'Export Selected Items',\n placeholder: 'Please enter the file name(default excel-list)'\n },\n zip: {\n export: 'Export',\n placeholder: 'Please enter the file name(default file)'\n },\n pdf: {\n tips: 'Here we use window.print() to implement the feature of downloading pdf.'\n },\n theme: {\n change: 'Change Theme',\n documentation: 'Theme documentation',\n tips: 'Tips: It is different from the theme-pick on the navbar is two different skinning methods, each with different application scenarios. Refer to the documentation for details.'\n },\n tagsView: {\n refresh: 'Refresh',\n close: 'Close',\n closeOthers: 'Close Others',\n closeAll: 'Close All'\n },\n users: {\n users: 'Users',\n localUsersOnly: 'Local users only',\n search: 'Search',\n id: 'ID',\n name: 'Name',\n status: 'Status',\n local: 'Local',\n external: 'External',\n deactivated: 'Deactivated',\n active: 'Active',\n unconfirmed: 'Unconfirmed',\n actions: 'Actions',\n activate: 'Activate',\n deactivate: 'Deactivate',\n admin: 'Admin',\n moderator: 'Moderator',\n moderation: 'Moderation',\n revokeAdmin: 'Revoke Admin',\n grantAdmin: 'Grant Admin',\n revokeModerator: 'Revoke Moderator',\n grantModerator: 'Grant Moderator',\n activateAccount: 'Activate Account',\n activateAccounts: 'Activate Accounts',\n deactivateAccount: 'Deactivate Account',\n deactivateAccounts: 'Deactivate Accounts',\n deleteAccount: 'Delete Account',\n deleteAccounts: 'Delete Accounts',\n forceNsfw: 'Force posts to be NSFW',\n stripMedia: 'Force posts to not have media',\n forceUnlisted: 'Force posts to be unlisted',\n sandbox: 'Force posts to be followers-only',\n disableRemoteSubscription: 'Disallow following user from remote instances',\n disableRemoteSubscriptionForMultiple: 'Disallow following users from remote instances',\n disableAnySubscription: 'Disallow following user at all',\n disableAnySubscriptionForMultiple: 'Disallow following users at all',\n requirePasswordReset: 'Require password reset on next login',\n selectUsers: 'Select users to apply actions to multiple users',\n moderateUser: 'Moderate user',\n moderateUsers: 'Moderate multiple users',\n createAccount: 'Create new account',\n apply: 'Apply',\n remove: 'Remove',\n grantRightConfirmation: 'Are you sure you want to grant {right} rights to all selected users?',\n revokeRightConfirmation: 'Are you sure you want to revoke {right} rights from all selected users?',\n activateMultipleUsersConfirmation: 'Are you sure you want to activate accounts of all selected users?',\n deactivateMultipleUsersConfirmation: 'Are you sure you want to deactivate accounts of all selected users?',\n deleteMultipleUsersConfirmation: 'Are you sure you want to delete accounts of all selected users?',\n addTagForMultipleUsersConfirmation: 'Are you sure you want to apply tag to all selected users?',\n removeTagFromMultipleUsersConfirmation: 'Are you sure you want to remove tag from all selected users?',\n requirePasswordResetConfirmation: 'Are you sure you want to require password reset for all selected users?',\n confirmAccountsConfirmation: 'Are you sure you want to confirm emails for all selected users?',\n resendEmailConfirmation: 'Are you sure you want to resend confirmation email for all selected users?',\n mailerMustBeEnabled: 'To require user\\'s password reset you must enable mailer.',\n ok: 'Okay',\n completed: 'Completed',\n cancel: 'Cancel',\n canceled: 'Canceled',\n username: 'Username',\n email: 'E-mail',\n password: 'Password',\n create: 'Create',\n submitFormError: 'There are invalid values in the form. Please fix them before continuing.',\n emptyEmailError: 'Please input the e-mail',\n invalidEmailError: 'Please input valid e-mail',\n emptyPasswordError: 'Please input the password',\n emptyNicknameError: 'Please input the username',\n invalidNicknameError: 'Username can include \"a-z\", \"A-Z\" and \"0-9\" characters',\n getPasswordResetToken: 'Get password reset token',\n passwordResetTokenCreated: 'Password reset token was created',\n accountCreated: 'New account was created!',\n unconfirmedEmail: 'User didn\\'t confirm the email',\n confirmAccount: 'Confirm account',\n confirmAccounts: 'Confirm accounts',\n resendConfirmation: 'Resend confirmation email',\n invalidAccount: 'This account has invalid nickname and can\\'t be modified',\n invalidNickname: 'invalid nickname',\n passwordResetTokenGenerated: 'Password reset token was generated:',\n linkToResetPassword: 'You can also use this link to reset password:'\n },\n statuses: {\n statuses: 'Statuses',\n instanceFilter: 'Instance filter',\n loadMore: 'Load more',\n noInstances: 'No other instances found',\n onlyLocalStatuses: 'Show only local statuses',\n showPrivateStatuses: 'Show private statuses',\n direct: 'Direct',\n private: 'Private',\n public: 'Public',\n unlisted: 'Unlisted',\n openStatusInInstance: 'Open status in instance'\n },\n userProfile: {\n tags: 'Tags',\n moderator: 'Moderator',\n admin: 'Admin',\n local: 'Local',\n external: 'External',\n accountType: 'Account type',\n nickname: 'Nickname',\n recentStatuses: 'Recent Statuses',\n roles: 'Roles',\n active: 'Active',\n status: 'Status',\n deactivated: 'Deactivated',\n noStatuses: 'No statuses to show',\n openAccountInInstance: 'Open account in instance',\n securitySettings: {\n email: 'Email',\n password: 'Password',\n securitySettings: 'Security settings',\n passwordChangeWarning1: 'Setting a new password will cause the user to be signed out from any client they have used before.',\n passwordChangeWarning2: 'When the user signs in with this password, they will be asked to set a new one.',\n passwordLengthNotice: 'Make sure it\\'s at least {minLength} characters long.',\n inputNewEmail: 'Input new email',\n inputNewPassword: 'Input new password',\n passwordUpdated: 'The password has been updated',\n emailUpdated: 'The email has been updated',\n success: 'Success',\n submit: 'Submit',\n close: 'Close'\n }\n },\n usersFilter: {\n inputPlaceholder: 'Select filter',\n byAccountType: 'By account type',\n local: 'Local',\n external: 'External',\n byStatus: 'By status',\n active: 'Active',\n deactivated: 'Deactivated'\n },\n reports: {\n reports: 'Reports',\n report: 'Report',\n reply: 'Reply',\n from: 'From',\n showNotes: 'Show notes',\n newNote: 'New note',\n submit: 'Submit',\n confirmMsg: 'Are you sure you want to delete this note?',\n delete: 'Delete',\n cancel: 'Cancel',\n deleteCompleted: 'Delete comleted',\n deleteCanceled: 'Delete canceled',\n noNotes: 'No notes to display',\n changeState: \"Change report's state\",\n changeAllReports: 'Change all reports',\n changeScope: 'Change scope',\n moderateUser: 'Moderate user',\n resolve: 'Resolve',\n reopen: 'Reopen',\n close: 'Close',\n resolveAll: 'Resolve all',\n reopenAll: 'Reopen all',\n closeAll: 'Close all',\n addSensitive: 'Add Sensitive flag',\n removeSensitive: 'Remove Sensitive flag',\n public: 'Make status public',\n private: 'Make status private',\n unlisted: 'Make status unlisted',\n sensitive: 'Sensitive',\n deleteStatus: 'Delete status',\n reportOn: 'Report on',\n reportsOn: 'Reports on',\n id: 'ID',\n account: 'Account',\n actor: 'Actor',\n actors: 'Actors',\n content: 'Content',\n reportedStatus: 'Reported status',\n statusDeleted: 'This status has been deleted',\n leaveNote: 'Leave a note',\n postNote: 'Send',\n deleteNote: 'Delete',\n notFound: 'account not found'\n },\n reportsFilter: {\n inputPlaceholder: 'Select filter',\n open: 'Open',\n closed: 'Closed',\n resolved: 'Resolved'\n },\n moderationLog: {\n moderationLog: 'Moderation Log'\n },\n settings: {\n settings: 'Settings',\n instance: 'Instance',\n upload: 'Upload',\n mailer: 'Mailer',\n logger: 'Logger',\n activityPub: 'ActivityPub',\n auth: 'Authentication',\n autoLinker: 'Auto Linker',\n captcha: 'Captcha',\n frontend: 'Frontend',\n http: 'HTTP',\n mrf: 'MRF',\n mediaProxy: 'Media Proxy',\n metadata: 'Metadata',\n gopher: 'Gopher',\n jobQueue: 'Job queue',\n webPush: 'Web push encryption',\n esshd: 'BBS / SSH access',\n rateLimiters: 'Rate limiters',\n other: 'Other',\n relays: 'Relays',\n follow: 'Follow',\n followRelay: 'Follow new relay',\n instanceUrl: 'Instance URL',\n success: 'Settings changed successfully!',\n description: 'Description',\n removeFromDB: 'Remove setting from the DB',\n successfullyDownloaded: 'Successfully downloaded',\n successfullyImported: 'Successfully imported',\n nowNewPacksToImport: 'No new packs to import',\n successfullyUpdated: 'Successfully updated',\n metadatLowerCase: 'metadata',\n files: 'files',\n successfullyRemoved: 'Setting removed successfully!',\n seeDocs: 'See Documentation',\n assets: 'Assets',\n emoji: 'Emoji',\n markup: 'Markup settings',\n corsPlug: 'CORS plug config',\n instanceReboot: 'Reboot Instance',\n restartApp: 'You must restart the instance to apply settings',\n restartSuccess: 'Instance rebooted successfully!',\n removeSettingConfirmation: 'Are you sure you want to remove this setting\\'s value from the database?'\n },\n invites: {\n inviteTokens: 'Invite tokens',\n createInviteToken: 'Generate invite token',\n pickDate: 'Pick a date',\n maxUse: 'Max use',\n expiresAt: 'Expires at',\n tokenCreated: 'Invite token was created',\n token: 'Token',\n inviteLink: 'Invite link',\n uses: 'Uses',\n used: 'Used',\n cancel: 'Cancel',\n create: 'Create',\n revoke: 'Revoke',\n id: 'ID',\n actions: 'Actions',\n active: 'Active',\n inviteUserViaEmail: 'Invite user via email',\n sendRegistration: 'Send registration invite via email',\n email: 'Email',\n name: 'Name',\n emptyEmailError: 'Please input the e-mail',\n invalidEmailError: 'Please input valid e-mail',\n emailSent: 'Invite was sent',\n submitFormError: 'There are invalid values in the form. Please fix them before continuing.',\n inviteViaEmailAlert: 'To send invite via email make sure to enable `invites_enabled` and disable `registrations_open`'\n },\n emoji: {\n emojiPacks: 'Emoji packs',\n reloaded: 'Emoji reloaded successfully!',\n refreshed: 'Emoji refreshed successfully!',\n importEmojiTooltip: 'Importing from the filesystem will scan the directories and import those without pack.json but with emoji.txt or without neither',\n reloadEmoji: 'Reload emoji',\n importPacks: 'Import packs from the server filesystem',\n localPacks: 'Local packs',\n refreshLocalPacks: 'Refresh local packs',\n createLocalPack: 'Create a new local pack',\n remotePacks: 'Remote packs',\n remoteInstanceAddress: 'Remote instance address',\n refreshRemote: 'Refresh remote packs',\n sharePack: 'Share pack',\n required: 'required',\n homepage: 'Homepage',\n description: 'Description',\n packs: 'Packs',\n license: 'License',\n shortcode: 'Shortcode',\n fallbackSrc: 'Fallback source',\n fallbackSrcSha: 'Fallback source SHA',\n saveMetadata: 'Save metadata',\n deletePack: 'Delete pack',\n downloadPack: 'Download pack',\n downloadPackArchive: 'Download pack archive',\n addNewEmoji: 'Add new emoji to the pack',\n manageEmoji: 'Manage existing emoji',\n thisWillDownload: 'This will download the',\n downloadToCurrentInstance: 'pack to the current instance under the name',\n canBeChanged: 'can be changed below',\n willBeUsable: 'It will then be usable and shareable from the current instance',\n downloadAsOptional: 'Download as (optional)',\n downloadSharedPack: 'Download shared pack to current instance',\n downloadSharedPackMobile: 'Download pack to instance',\n optional: 'optional',\n uploadFile: 'Upload a file',\n url: 'URL',\n clickToUpload: 'Click to upload',\n upload: 'Upload',\n customFilename: 'Custom filename',\n customFilenameDesc: 'Custom file name (optional)',\n file: 'File',\n localPack: 'Local pack',\n leaveEmptyShortcode: 'leave empty to use the same shortcode',\n leaveEmptyFilename: 'leave empty to use the same filename',\n update: 'Update',\n remove: 'Remove',\n selectLocalPack: 'Select the local pack to copy to',\n specifyShortcode: 'Specify a custom shortcode',\n specifyFilename: 'Specify a custom filename',\n copy: 'Copy',\n copyToLocalPack: 'Copy to local pack'\n }\n}\n","export default {\n route: {\n dashboard: '首页',\n introduction: '简述',\n documentation: '文档',\n guide: '引导页',\n permission: '权限测试页',\n pagePermission: '页面权限',\n directivePermission: '指令权限',\n icons: '图标',\n components: '组件',\n componentIndex: '介绍',\n markdown: 'Markdown',\n jsonEditor: 'JSON编辑器',\n dndList: '列表拖拽',\n splitPane: 'Splitpane',\n avatarUpload: '头像上传',\n dropzone: 'Dropzone',\n sticky: 'Sticky',\n countTo: 'CountTo',\n componentMixin: '小组件',\n backToTop: '返回顶部',\n dragDialog: '拖拽 Dialog',\n dragSelect: '拖拽 Select',\n dragKanban: '可拖拽看板',\n charts: '图表',\n keyboardChart: '键盘图表',\n lineChart: '折线图',\n mixChart: '混合图表',\n example: '综合实例',\n nested: '路由嵌套',\n menu1: '菜单1',\n 'menu1-1': '菜单1-1',\n 'menu1-2': '菜单1-2',\n 'menu1-2-1': '菜单1-2-1',\n 'menu1-2-2': '菜单1-2-2',\n 'menu1-3': '菜单1-3',\n menu2: '菜单2',\n Table: 'Table',\n dynamicTable: '动态Table',\n dragTable: '拖拽Table',\n inlineEditTable: 'Table内编辑',\n complexTable: '综合Table',\n treeTable: '树形表格',\n customTreeTable: '自定义树表',\n tab: 'Tab',\n form: '表单',\n createArticle: '创建文章',\n editArticle: '编辑文章',\n articleList: '文章列表',\n errorPages: '错误页面',\n page401: '401',\n page404: '404',\n errorLog: '错误日志',\n excel: 'Excel',\n exportExcel: 'Export Excel',\n selectExcel: 'Export Selected',\n uploadExcel: 'Upload Excel',\n zip: 'Zip',\n pdf: 'PDF',\n exportZip: 'Export Zip',\n theme: '换肤',\n clipboardDemo: 'Clipboard',\n i18n: '国际化',\n externalLink: '外链'\n },\n navbar: {\n logOut: '退出登录',\n dashboard: '首页',\n github: '项目地址',\n theme: '换肤',\n size: '布局大小'\n },\n login: {\n title: '系统登录',\n logIn: '登录',\n username: '账号',\n password: '密码',\n any: '随便填',\n thirdparty: '第三方登录',\n thirdpartyTips: '本地不能模拟,请结合自己业务进行模拟!!!'\n },\n documentation: {\n documentation: '文档',\n github: 'Github 地址'\n },\n permission: {\n roles: '你的权限',\n switchRoles: '切换权限',\n tips: '在某些情况下,不适合使用 v-permission。例如:Element-UI 的 Tab 组件或 el-table-column 以及其它动态渲染 dom 的场景。你只能通过手动设置 v-if 来实现。'\n },\n guide: {\n description: '引导页对于一些第一次进入项目的人很有用,你可以简单介绍下项目的功能。本 Demo 是基于',\n button: '打开引导'\n },\n components: {\n documentation: '文档',\n dropzoneTips: '由于我司业务有特殊需求,而且要传七牛 所以没用第三方,选择了自己封装。代码非常的简单,具体代码你可以在这里看到 @/components/element-ui/Dropzone',\n stickyTips: '当页面滚动到预设的位置会吸附在顶部',\n backToTopTips1: '页面滚动到指定位置会在右下角出现返回顶部按钮',\n backToTopTips2: '可自定义按钮的样式、show/hide、出现的高度、返回的位置 如需文字提示,可在外部使用Element的el-tooltip元素',\n imageUploadTips: '由于我在使用时它只有vue@1版本,而且和mockjs不兼容,所以自己改造了一下,如果大家要使用的话,优先还是使用官方版本。'\n },\n table: {\n dynamicTips1: '固定表头, 按照表头顺序排序',\n dynamicTips2: '不固定表头, 按照点击顺序排序',\n dragTips1: '默认顺序',\n dragTips2: '拖拽后顺序',\n title: '标题',\n importance: '重要性',\n type: '类型',\n remark: '点评',\n search: '搜索',\n add: '添加',\n export: '导出',\n reviewer: '审核人',\n id: '序号',\n date: '时间',\n author: '作者',\n readings: '阅读数',\n status: '状态',\n actions: '操作',\n edit: '编辑',\n publish: '发布',\n draft: '草稿',\n delete: '删除',\n cancel: '取 消',\n confirm: '确 定'\n },\n errorLog: {\n tips: '请点击右上角bug小图标',\n description: '现在的管理后台基本都是spa的形式了,它增强了用户体验,但同时也会增加页面出问题的可能性,可能一个小小的疏忽就导致整个页面的死锁。好在 Vue 官网提供了一个方法来捕获处理异常,你可以在其中进行错误处理或者异常上报。',\n documentation: '文档介绍'\n },\n excel: {\n export: '导出',\n selectedExport: '导出已选择项',\n placeholder: '请输入文件名(默认excel-list)'\n },\n zip: {\n export: '导出',\n placeholder: '请输入文件名(默认file)'\n },\n pdf: {\n tips: '这里使用 window.print() 来实现下载pdf的功能'\n },\n theme: {\n change: '换肤',\n documentation: '换肤文档',\n tips: 'Tips: 它区别于 navbar 上的 theme-pick, 是两种不同的换肤方法,各自有不同的应用场景,具体请参考文档。'\n },\n tagsView: {\n refresh: '刷新',\n close: '关闭',\n closeOthers: '关闭其它',\n closeAll: '关闭所有'\n }\n}\n","export default {\n route: {\n dashboard: 'Panel de control',\n introduction: 'Introducción',\n documentation: 'Documentación',\n guide: 'Guía',\n permission: 'Permisos',\n pagePermission: 'Permisos de la página',\n directivePermission: 'Permisos de la directiva',\n icons: 'Iconos',\n components: 'Componentes',\n componentIndex: 'Introducción',\n markdown: 'Markdown',\n jsonEditor: 'Editor JSON',\n dndList: 'Lista Dnd',\n splitPane: 'Panel dividido',\n avatarUpload: 'Subir avatar',\n dropzone: 'Subir ficheros',\n sticky: 'Sticky',\n countTo: 'CountTo',\n componentMixin: 'Mixin',\n backToTop: 'Ir arriba',\n dragDialog: 'Drag Dialog',\n dragSelect: 'Drag Select',\n dragKanban: 'Drag Kanban',\n charts: 'Gráficos',\n keyboardChart: 'Keyboard Chart',\n lineChart: 'Gráfico de líneas',\n mixChart: 'Mix Chart',\n example: 'Ejemplo',\n nested: 'Rutas anidadass',\n menu1: 'Menu 1',\n 'menu1-1': 'Menu 1-1',\n 'menu1-2': 'Menu 1-2',\n 'menu1-2-1': 'Menu 1-2-1',\n 'menu1-2-2': 'Menu 1-2-2',\n 'menu1-3': 'Menu 1-3',\n menu2: 'Menu 2',\n Table: 'Tabla',\n dynamicTable: 'Tabla dinámica',\n dragTable: 'Arrastrar tabla',\n inlineEditTable: 'Editor',\n complexTable: 'Complex Table',\n treeTable: 'Tree Table',\n customTreeTable: 'Custom TreeTable',\n tab: 'Pestaña',\n form: 'Formulario',\n createArticle: 'Crear artículo',\n editArticle: 'Editar artículo',\n articleList: 'Listado de artículos',\n errorPages: 'Páginas de error',\n page401: '401',\n page404: '404',\n errorLog: 'Registro de errores',\n excel: 'Excel',\n exportExcel: 'Exportar a Excel',\n selectExcel: 'Export seleccionado',\n uploadExcel: 'Subir Excel',\n zip: 'Zip',\n pdf: 'PDF',\n exportZip: 'Exportar a Zip',\n theme: 'Tema',\n clipboardDemo: 'Clipboard',\n i18n: 'I18n',\n externalLink: 'Enlace externo'\n },\n navbar: {\n logOut: 'Salir',\n dashboard: 'Panel de control',\n github: 'Github',\n theme: 'Tema',\n size: 'Tamaño global'\n },\n login: {\n title: 'Formulario de acceso',\n logIn: 'Acceso',\n username: 'Usuario',\n password: 'Contraseña',\n any: 'nada',\n thirdparty: 'Conectar con',\n thirdpartyTips: 'No se puede simular en local, así que combine su propia simulación de negocios. ! !'\n },\n documentation: {\n documentation: 'Documentación',\n github: 'Repositorio Github'\n },\n permission: {\n roles: 'Tus permisos',\n switchRoles: 'Cambiar permisos',\n tips: 'In some cases it is not suitable to use v-permission, such as element Tab component or el-table-column and other asynchronous rendering dom cases which can only be achieved by manually setting the v-if.'\n },\n guide: {\n description: 'The guide page is useful for some people who entered the project for the first time. You can briefly introduce the features of the project. Demo is based on ',\n button: 'Ver guía'\n },\n components: {\n documentation: 'Documentación',\n dropzoneTips: 'Because my business has special needs, and has to upload images to qiniu, so instead of a third party, I chose encapsulate it by myself. It is very simple, you can see the detail code in @/components/element-ui/Dropzone.',\n stickyTips: 'when the page is scrolled to the preset position will be sticky on the top.',\n backToTopTips1: 'When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner',\n backToTopTips2: 'You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally',\n imageUploadTips: 'Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version.'\n },\n table: {\n dynamicTips1: 'Fixed header, sorted by header order',\n dynamicTips2: 'Not fixed header, sorted by click order',\n dragTips1: 'Orden por defecto',\n dragTips2: 'The after dragging order',\n title: 'Título',\n importance: 'Importancia',\n type: 'Tipo',\n remark: 'Remark',\n search: 'Buscar',\n add: 'Añadir',\n export: 'Exportar',\n reviewer: 'reviewer',\n id: 'ID',\n date: 'Fecha',\n author: 'Autor',\n readings: 'Lector',\n status: 'Estado',\n actions: 'Acciones',\n edit: 'Editar',\n publish: 'Publicar',\n draft: 'Draft',\n delete: 'Eliminar',\n cancel: 'Cancelar',\n confirm: 'Confirmar'\n },\n errorLog: {\n tips: 'Please click the bug icon in the upper right corner',\n description: 'Now the management system are basically the form of the spa, it enhances the user experience, but it also increases the possibility of page problems, a small negligence may lead to the entire page deadlock. Fortunately Vue provides a way to catch handling exceptions, where you can handle errors or report exceptions.',\n documentation: 'Documento de introducción'\n },\n excel: {\n export: 'Exportar',\n selectedExport: 'Exportar seleccionados',\n placeholder: 'Por favor escribe un nombre de fichero'\n },\n zip: {\n export: 'Exportar',\n placeholder: 'Por favor escribe un nombre de fichero'\n },\n pdf: {\n tips: 'Here we use window.print() to implement the feature of downloading pdf.'\n },\n theme: {\n change: 'Cambiar tema',\n documentation: 'Documentación del tema',\n tips: 'Tips: It is different from the theme-pick on the navbar is two different skinning methods, each with different application scenarios. Refer to the documentation for details.'\n },\n tagsView: {\n refresh: 'Actualizar',\n close: 'Cerrar',\n closeOthers: 'Cerrar otros',\n closeAll: 'Cerrar todos'\n }\n}\n","export default {\n route: {\n dashboard: 'Tablèu de bòrd',\n introduction: 'Introduccion',\n documentation: 'Documentacion',\n guide: 'Guida',\n permission: 'Autorizacions',\n pagePermission: 'Pagina d’autorizacion',\n directivePermission: 'Politica d’autorizacion',\n icons: 'Icònas',\n components: 'Compausants',\n componentIndex: 'Introduccion',\n markdown: 'Markdown',\n jsonEditor: 'JSON Editor',\n dndList: 'Dnd List',\n splitPane: 'SplitPane',\n avatarUpload: 'Mandadís d’avatar',\n dropzone: 'Dropzone',\n sticky: 'Sticky',\n countTo: 'CountTo',\n componentMixin: 'Mixin',\n backToTop: 'BackToTop',\n dragDialog: 'Drag Dialog',\n dragSelect: 'Drag Select',\n dragKanban: 'Drag Kanban',\n charts: 'Charts',\n keyboardChart: 'Keyboard Chart',\n lineChart: 'Line Chart',\n mixChart: 'Mix Chart',\n example: 'Exemple',\n nested: 'Rotas imbricadas',\n menu1: 'Menú 1',\n 'menu1-1': 'Menu 1-1',\n 'menu1-2': 'Menu 1-2',\n 'menu1-2-1': 'Menu 1-2-1',\n 'menu1-2-2': 'Menu 1-2-2',\n 'menu1-3': 'Menu 1-3',\n menu2: 'Menú 2',\n Table: 'Tablèu',\n dynamicTable: 'Tablèu dinamic',\n dragTable: 'Drag Table',\n inlineEditTable: 'Inline Edit',\n complexTable: 'Tablèu complèx',\n treeTable: 'Arborescéncia',\n customTreeTable: 'Arborescéncia personalizada',\n tab: 'Onglet',\n form: 'Formulari',\n createArticle: 'Crear un article',\n editArticle: 'Modificar l’article',\n articleList: 'Lista d’articles',\n errorPages: 'Paginas d’error',\n page401: '401',\n page404: '404',\n errorLog: 'Jornal d’error',\n excel: 'Excel',\n exportExcel: 'Exportacion Excel',\n selectExcel: 'Exportar los seleccionats',\n uploadExcel: 'Importacion Excel',\n zip: 'Zip',\n pdf: 'PDF',\n exportZip: 'Exportacion Zip',\n theme: 'Tèma',\n clipboardDemo: 'Clipboard',\n i18n: 'I18n',\n externalLink: 'Ligams extèrnes',\n users: 'Utilizaires'\n },\n navbar: {\n logOut: 'Desconnexion',\n dashboard: 'Tablèu de bòrd',\n github: 'Github',\n theme: 'Tèma',\n size: 'Talha totala'\n },\n login: {\n title: 'Formulari de connexion',\n logIn: 'Se connectar',\n username: 'Nom d’’utilizaire',\n password: 'Senhal',\n any: 'qual que siá',\n thirdparty: 'O se connectar amb',\n thirdpartyTips: 'Pòt pas èsser simulat en local, doncas montatz vòstra pròpria simulacion ! ! !'\n },\n documentation: {\n documentation: 'Documentacion',\n github: 'Repertòri Github'\n },\n permission: {\n roles: 'Vòstres ròtles',\n switchRoles: 'Cambiar de ròtle',\n tips: 'Dins qualques cases es pas de bon far d’utilizar v-permission, coma element d’onglet compausant, el-table-column o d’autres renduts dom asincròns que pòdon pas que foncionar amb un parametratge manual de v-if.'\n },\n guide: {\n description: 'La pagina de guida es utila pel monde que dintran dins lo projècte pel primièr còp. Podètz presentar en un mot las foncionalitats del projèctes. La demo es fondada sus ',\n button: 'Mostrar la guida'\n },\n components: {\n documentation: 'Documentacion',\n dropzoneTips: 'Because my business has special needs, and has to upload images to qiniu, so instead of a third party, I chose encapsulate it by myself. It is very simple, you can see the detail code in @/components/element-ui/Dropzone.',\n stickyTips: 'when the page is scrolled to the preset position will be sticky on the top.',\n backToTopTips1: 'When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner',\n backToTopTips2: 'You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally',\n imageUploadTips: 'Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version.'\n },\n table: {\n dynamicTips1: 'Bandièra fixa, triada per òrdre de bandièra',\n dynamicTips2: 'Bandièra pas fixa, triada per òrdre de clic',\n dragTips1: 'L’’òrdre per defaut',\n dragTips2: 'L’’òrdre aprèp lisar-depausar',\n title: 'Títol',\n importance: 'Imp',\n type: 'Tipe',\n remark: 'Remarca',\n search: 'Recercar',\n add: 'Ajustar',\n export: 'Exportar',\n reviewer: 'examinator',\n id: 'ID',\n date: 'Data',\n author: 'Autor',\n readings: 'Lecturas',\n status: 'Estatuts',\n actions: 'Accions',\n edit: 'Modificar',\n publish: 'Publicar',\n draft: 'Ensag',\n delete: 'Suprimir',\n cancel: 'Anullar',\n confirm: 'Confirmar'\n },\n errorLog: {\n tips: 'Mercés de clicar l’’icòna del babau amont a man drecha',\n description: 'Ara que lo sistèma de gestion es coma un spa, melhora l’experiéncia dels utilizaire mas aumenta tanben lo risc de problèmas sus la pagina, una pichona negligéncia pòt menar a un blocatge complèt de la pagina. Urosament Vue fornís de manièras per gerir las excepcions, trobar las errors o senhalar las excepcions.',\n documentation: 'Presentacion del document'\n },\n excel: {\n export: 'Exportar',\n selectedExport: 'Exportar los elements seleccionats',\n placeholder: 'Mercés de picar lo nom de fichièr (per defaut excel-list)'\n },\n zip: {\n export: 'Exportar',\n placeholder: 'Mercés de picar lo nom de fichièr (per defaut file)'\n },\n pdf: {\n tips: 'Aquí utilizam window.print() per prepausar lo telecargament de pdf.'\n },\n theme: {\n change: 'Cambiar lo tèma',\n documentation: 'Documentacion dels tèmas',\n tips: 'Astúcia : es diferent del theme-pick de la barra de navigacion, i a dos metòdes de personalizacion, caduna amb un biais de far diferent. Referiscam a la documentacion per mai de detalhs.'\n },\n tagsView: {\n refresh: 'Actualizar',\n close: 'Tampar',\n closeOthers: 'Tampar los autres',\n closeAll: 'Los tampar totes'\n }\n}\n","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function addNewEmojiFile(packName, file, shortcode, filename, host, token) {\n const data = new FormData()\n if (filename.trim() !== '') {\n data.set('filename', filename)\n }\n if (shortcode.trim() !== '') {\n data.set('shortcode', shortcode)\n }\n data.set('file', file)\n\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/packs/${packName}/files`,\n method: 'post',\n headers: authHeaders(token),\n data\n })\n}\n\nexport function addressOfEmojiInPack(host, packName, name) {\n return `${baseName(host)}/emoji/${packName}/${name}`\n}\n\nexport async function createPack(host, token, packName) {\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/packs/${packName}`,\n method: 'post',\n headers: authHeaders(token)\n })\n}\n\nexport async function deleteEmojiFile(packName, shortcode, host, token) {\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/packs/${packName}/files`,\n method: 'delete',\n headers: authHeaders(token),\n data: { shortcode }\n })\n}\n\nexport async function deletePack(host, token, packName) {\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/packs/${packName}`,\n method: 'delete',\n headers: authHeaders(token)\n })\n}\n\nexport async function downloadFrom(host, instance, packName, as, token) {\n if (as.trim() === '') {\n as = null\n }\n\n return await request({\n baseURL: baseName(host),\n url: '/api/pleroma/emoji/packs/download',\n method: 'post',\n headers: authHeaders(token),\n data: { url: baseName(instance), name: packName, as },\n timeout: 0\n })\n}\n\nexport async function fetchPack(packName, host, token) {\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/packs/${packName}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function importFromFS(host, token) {\n return await request({\n baseURL: baseName(host),\n url: '/api/pleroma/emoji/packs/import',\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function listPacks(host) {\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/packs/`,\n method: 'get'\n })\n}\n\nexport async function listRemotePacks(host, token, instance) {\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/packs/remote?url=${baseName(instance)}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function reloadEmoji(host, token) {\n return await request({\n baseURL: baseName(host),\n url: '/api/pleroma/admin/reload_emoji',\n method: 'post',\n headers: authHeaders(token)\n })\n}\n\nexport async function savePackMetadata(host, token, packName, metadata) {\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/packs/${packName}`,\n method: 'patch',\n headers: authHeaders(token),\n data: { metadata },\n timeout: 0 // This might take a long time\n })\n}\n\nexport async function updateEmojiFile(packName, shortcode, newShortcode, newFilename, force, host, token) {\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/packs/${packName}/files`,\n method: 'patch',\n headers: authHeaders(token),\n data: { shortcode, new_shortcode: newShortcode, new_filename: newFilename, force }\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-icon\",\n \"use\": \"icon-icon-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-404\",\n \"use\": \"icon-404-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-edit\",\n \"use\": \"icon-edit-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-lock\",\n \"use\": \"icon-lock-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-user\",\n \"use\": \"icon-user-usage\",\n \"viewBox\": \"0 0 130 130\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","// extracted by mini-css-extract-plugin\nmodule.exports = {\"menuText\":\"#bfcbd9\",\"menuActiveText\":\"#409EFF\",\"subMenuActiveText\":\"#f4f4f5\",\"menuBg\":\"#304156\",\"menuHover\":\"#263445\",\"subMenuBg\":\"#1f2d3d\",\"subMenuHover\":\"#001528\",\"sideBarWidth\":\"180px\"};","import axios from 'axios'\nimport { Message } from 'element-ui'\n\n// create an axios instance\nconst service = axios.create({\n timeout: 60000 // request timeout\n})\n\n// response interceptor\nservice.interceptors.response.use(\n response => response,\n error => {\n let errorMessage\n console.log(`Error ${error}`)\n\n if (error.response) {\n const edata = error.response.data.error ? error.response.data.error : error.response.data\n errorMessage = !error.response.headers['content-type'].includes('application/json')\n ? `${error.message}`\n : `${error.message} - ${edata}`\n } else {\n errorMessage = error\n }\n\n Message({\n message: errorMessage,\n type: 'error',\n duration: 5 * 1000\n })\n return Promise.reject(error)\n }\n)\n\nexport default service\n","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-clipboard\",\n \"use\": \"icon-clipboard-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-email\",\n \"use\": \"icon-email-usage\",\n \"viewBox\": \"0 0 128 96\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-chart\",\n \"use\": \"icon-chart-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',_vm._g({class:_vm.svgClass,attrs:{\"aria-hidden\":\"true\"}},_vm.$listeners),[_c('use',{attrs:{\"xlink:href\":_vm.iconName}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=17178ffc&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=17178ffc&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"17178ffc\",\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","// extracted by mini-css-extract-plugin\nmodule.exports = {\"menuText\":\"#bfcbd9\",\"menuActiveText\":\"#409EFF\",\"subMenuActiveText\":\"#f4f4f5\",\"menuBg\":\"#304156\",\"menuHover\":\"#263445\",\"subMenuBg\":\"#1f2d3d\",\"subMenuHover\":\"#001528\",\"sideBarWidth\":\"180px\"};"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-0558.75954137.js b/priv/static/adminfe/static/js/chunk-070d.7e10a520.js similarity index 98% rename from priv/static/adminfe/static/js/chunk-0558.75954137.js rename to priv/static/adminfe/static/js/chunk-070d.7e10a520.js index 7b29707fa..8726dbcd3 100644 --- a/priv/static/adminfe/static/js/chunk-0558.75954137.js +++ b/priv/static/adminfe/static/js/chunk-070d.7e10a520.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-0558"],{"/eX4":function(s,t,i){"use strict";i.r(t);var n=[function(){var s=this.$createElement,t=this._self._c||s;return t("div",{staticClass:"pic-404"},[t("img",{staticClass:"pic-404__parent",attrs:{src:i("o2sD"),alt:"404"}}),this._v(" "),t("img",{staticClass:"pic-404__child left",attrs:{src:i("Jvyq"),alt:"404"}}),this._v(" "),t("img",{staticClass:"pic-404__child mid",attrs:{src:i("Jvyq"),alt:"404"}}),this._v(" "),t("img",{staticClass:"pic-404__child right",attrs:{src:i("Jvyq"),alt:"404"}})])}],e={name:"Page404",computed:{message:function(){return"There is nothing here"}}},r=(i("J67/"),i("KHd+")),l=Object(r.a)(e,function(){var s=this,t=s.$createElement,i=s._self._c||t;return i("div",{staticClass:"wscn-http404-container"},[i("div",{staticClass:"wscn-http404"},[s._m(0),s._v(" "),i("div",{staticClass:"bullshit"},[i("div",{staticClass:"bullshit__oops"},[s._v("OOPS!")]),s._v(" "),i("div",{staticClass:"bullshit__headline"},[s._v(s._s(s.message))]),s._v(" "),i("div",{staticClass:"bullshit__info"},[s._v("Please make sure you URL is correct")]),s._v(" "),i("router-link",{staticClass:"bullshit__return-home",attrs:{to:"/"}},[s._v("Go to the home page")])],1)])])},n,!1,null,"1d6b2d2a",null);l.options.__file="404.vue";t.default=l.exports},"J67/":function(s,t,i){"use strict";var n=i("QCkX");i.n(n).a},Jvyq:function(s,t){s.exports="data:image/png;base64,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"},QCkX:function(s,t,i){},o2sD:function(s,t,i){s.exports=i.p+"static/img/404.a57b6f3.png"}}]); -//# sourceMappingURL=chunk-0558.75954137.js.map \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-070d"],{"/eX4":function(s,t,i){"use strict";i.r(t);var n=[function(){var s=this.$createElement,t=this._self._c||s;return t("div",{staticClass:"pic-404"},[t("img",{staticClass:"pic-404__parent",attrs:{src:i("o2sD"),alt:"404"}}),this._v(" "),t("img",{staticClass:"pic-404__child left",attrs:{src:i("Jvyq"),alt:"404"}}),this._v(" "),t("img",{staticClass:"pic-404__child mid",attrs:{src:i("Jvyq"),alt:"404"}}),this._v(" "),t("img",{staticClass:"pic-404__child right",attrs:{src:i("Jvyq"),alt:"404"}})])}],e={name:"Page404",computed:{message:function(){return"There is nothing here"}}},r=(i("J67/"),i("KHd+")),l=Object(r.a)(e,function(){var s=this,t=s.$createElement,i=s._self._c||t;return i("div",{staticClass:"wscn-http404-container"},[i("div",{staticClass:"wscn-http404"},[s._m(0),s._v(" "),i("div",{staticClass:"bullshit"},[i("div",{staticClass:"bullshit__oops"},[s._v("OOPS!")]),s._v(" "),i("div",{staticClass:"bullshit__headline"},[s._v(s._s(s.message))]),s._v(" "),i("div",{staticClass:"bullshit__info"},[s._v("Please make sure you URL is correct")]),s._v(" "),i("router-link",{staticClass:"bullshit__return-home",attrs:{to:"/"}},[s._v("Go to the home page")])],1)])])},n,!1,null,"1d6b2d2a",null);l.options.__file="404.vue";t.default=l.exports},"J67/":function(s,t,i){"use strict";var n=i("QCkX");i.n(n).a},Jvyq:function(s,t){s.exports="data:image/png;base64,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"},QCkX:function(s,t,i){},o2sD:function(s,t,i){s.exports=i.p+"static/img/404.a57b6f3.png"}}]); +//# sourceMappingURL=chunk-070d.7e10a520.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-0558.75954137.js.map b/priv/static/adminfe/static/js/chunk-070d.7e10a520.js.map similarity index 99% rename from priv/static/adminfe/static/js/chunk-0558.75954137.js.map rename to priv/static/adminfe/static/js/chunk-070d.7e10a520.js.map index e9e2affb6..6b75a215e 100644 --- a/priv/static/adminfe/static/js/chunk-0558.75954137.js.map +++ b/priv/static/adminfe/static/js/chunk-070d.7e10a520.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///./src/views/errorPage/404.vue?e9e9","webpack:///./src/views/errorPage/404.vue?e36b","webpack:///src/views/errorPage/404.vue","webpack:///./src/views/errorPage/404.vue","webpack:///./src/views/errorPage/404.vue?ce30","webpack:///./src/assets/404_images/404_cloud.png","webpack:///./src/assets/404_images/404.png"],"names":["staticRenderFns","_h","this","$createElement","_c","_self","staticClass","attrs","src","__webpack_require__","alt","_v","errorPage_404vue_type_script_lang_js_","name","computed","message","component","Object","componentNormalizer","_vm","_m","_s","to","options","__file","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_404_vue_vue_type_style_index_0_id_1d6b2d2a_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","n","module","exports","p"],"mappings":"+GAAA,IACAA,GAAA,WAAoC,IAAaC,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAiBE,YAAA,YAAsBF,EAAA,OAAYE,YAAA,kBAAAC,OAAqCC,IAAMC,EAAQ,QAA6BC,IAAA,SAAlMR,KAAiNS,GAAA,KAAAP,EAAA,OAAwBE,YAAA,sBAAAC,OAAyCC,IAAMC,EAAQ,QAAmCC,IAAA,SAAnUR,KAAkVS,GAAA,KAAAP,EAAA,OAAwBE,YAAA,qBAAAC,OAAwCC,IAAMC,EAAQ,QAAmCC,IAAA,SAAncR,KAAkdS,GAAA,KAAAP,EAAA,OAAwBE,YAAA,uBAAAC,OAA0CC,IAAMC,EAAQ,QAAmCC,IAAA,aCDjaE,GCsBxMC,KAAA,UACAC,UACAC,QADA,WAEA,yDCjBAC,EAAgBC,OAAAC,EAAA,EAAAD,CACdL,EHTF,WAA0B,IAAAO,EAAAjB,KAAaD,EAAAkB,EAAAhB,eAA0BC,EAAAe,EAAAd,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAiBE,YAAA,2BAAqCF,EAAA,OAAYE,YAAA,iBAA2Ba,EAAAC,GAAA,GAAAD,EAAAR,GAAA,KAAAP,EAAA,OAAkCE,YAAA,aAAuBF,EAAA,OAAYE,YAAA,mBAA6Ba,EAAAR,GAAA,WAAAQ,EAAAR,GAAA,KAAAP,EAAA,OAA0CE,YAAA,uBAAiCa,EAAAR,GAAAQ,EAAAE,GAAAF,EAAAJ,YAAAI,EAAAR,GAAA,KAAAP,EAAA,OAAsDE,YAAA,mBAA6Ba,EAAAR,GAAA,yCAAAQ,EAAAR,GAAA,KAAAP,EAAA,eAAgFE,YAAA,wBAAAC,OAA2Ce,GAAA,OAAUH,EAAAR,GAAA,kCGWzjBX,GACF,EACA,KACA,WACA,MAIAgB,EAAAO,QAAAC,OAAA,UACeC,EAAA,QAAAT,+CCpBf,IAAAU,EAAAjB,EAAA,QAAAA,EAAAkB,EAAAD,GAA6e,sBCA7eE,EAAAC,QAAA,0xMCAAD,EAAAC,QAAiBpB,EAAAqB,EAAuB","file":"static/js/chunk-0558.75954137.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"wscn-http404-container\"},[_c('div',{staticClass:\"wscn-http404\"},[_vm._m(0),_vm._v(\" \"),_c('div',{staticClass:\"bullshit\"},[_c('div',{staticClass:\"bullshit__oops\"},[_vm._v(\"OOPS!\")]),_vm._v(\" \"),_c('div',{staticClass:\"bullshit__headline\"},[_vm._v(_vm._s(_vm.message))]),_vm._v(\" \"),_c('div',{staticClass:\"bullshit__info\"},[_vm._v(\"Please make sure you URL is correct\")]),_vm._v(\" \"),_c('router-link',{staticClass:\"bullshit__return-home\",attrs:{\"to\":\"/\"}},[_vm._v(\"Go to the home page\")])],1)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pic-404\"},[_c('img',{staticClass:\"pic-404__parent\",attrs:{\"src\":require(\"@/assets/404_images/404.png\"),\"alt\":\"404\"}}),_vm._v(\" \"),_c('img',{staticClass:\"pic-404__child left\",attrs:{\"src\":require(\"@/assets/404_images/404_cloud.png\"),\"alt\":\"404\"}}),_vm._v(\" \"),_c('img',{staticClass:\"pic-404__child mid\",attrs:{\"src\":require(\"@/assets/404_images/404_cloud.png\"),\"alt\":\"404\"}}),_vm._v(\" \"),_c('img',{staticClass:\"pic-404__child right\",attrs:{\"src\":require(\"@/assets/404_images/404_cloud.png\"),\"alt\":\"404\"}})])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./404.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./404.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./404.vue?vue&type=template&id=1d6b2d2a&scoped=true&\"\nimport script from \"./404.vue?vue&type=script&lang=js&\"\nexport * from \"./404.vue?vue&type=script&lang=js&\"\nimport style0 from \"./404.vue?vue&type=style&index=0&id=1d6b2d2a&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1d6b2d2a\",\n null\n \n)\n\ncomponent.options.__file = \"404.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./404.vue?vue&type=style&index=0&id=1d6b2d2a&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./404.vue?vue&type=style&index=0&id=1d6b2d2a&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/img/404.a57b6f3.png\";"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///./src/views/errorPage/404.vue?e9e9","webpack:///./src/views/errorPage/404.vue?e36b","webpack:///src/views/errorPage/404.vue","webpack:///./src/views/errorPage/404.vue","webpack:///./src/views/errorPage/404.vue?ce30","webpack:///./src/assets/404_images/404_cloud.png","webpack:///./src/assets/404_images/404.png"],"names":["staticRenderFns","_h","this","$createElement","_c","_self","staticClass","attrs","src","__webpack_require__","alt","_v","errorPage_404vue_type_script_lang_js_","name","computed","message","component","Object","componentNormalizer","_vm","_m","_s","to","options","__file","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_404_vue_vue_type_style_index_0_id_1d6b2d2a_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","n","module","exports","p"],"mappings":"+GAAA,IACAA,GAAA,WAAoC,IAAaC,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAiBE,YAAA,YAAsBF,EAAA,OAAYE,YAAA,kBAAAC,OAAqCC,IAAMC,EAAQ,QAA6BC,IAAA,SAAlMR,KAAiNS,GAAA,KAAAP,EAAA,OAAwBE,YAAA,sBAAAC,OAAyCC,IAAMC,EAAQ,QAAmCC,IAAA,SAAnUR,KAAkVS,GAAA,KAAAP,EAAA,OAAwBE,YAAA,qBAAAC,OAAwCC,IAAMC,EAAQ,QAAmCC,IAAA,SAAncR,KAAkdS,GAAA,KAAAP,EAAA,OAAwBE,YAAA,uBAAAC,OAA0CC,IAAMC,EAAQ,QAAmCC,IAAA,aCDjaE,GCsBxMC,KAAA,UACAC,UACAC,QADA,WAEA,yDCjBAC,EAAgBC,OAAAC,EAAA,EAAAD,CACdL,EHTF,WAA0B,IAAAO,EAAAjB,KAAaD,EAAAkB,EAAAhB,eAA0BC,EAAAe,EAAAd,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAiBE,YAAA,2BAAqCF,EAAA,OAAYE,YAAA,iBAA2Ba,EAAAC,GAAA,GAAAD,EAAAR,GAAA,KAAAP,EAAA,OAAkCE,YAAA,aAAuBF,EAAA,OAAYE,YAAA,mBAA6Ba,EAAAR,GAAA,WAAAQ,EAAAR,GAAA,KAAAP,EAAA,OAA0CE,YAAA,uBAAiCa,EAAAR,GAAAQ,EAAAE,GAAAF,EAAAJ,YAAAI,EAAAR,GAAA,KAAAP,EAAA,OAAsDE,YAAA,mBAA6Ba,EAAAR,GAAA,yCAAAQ,EAAAR,GAAA,KAAAP,EAAA,eAAgFE,YAAA,wBAAAC,OAA2Ce,GAAA,OAAUH,EAAAR,GAAA,kCGWzjBX,GACF,EACA,KACA,WACA,MAIAgB,EAAAO,QAAAC,OAAA,UACeC,EAAA,QAAAT,+CCpBf,IAAAU,EAAAjB,EAAA,QAAAA,EAAAkB,EAAAD,GAA6e,sBCA7eE,EAAAC,QAAA,0xMCAAD,EAAAC,QAAiBpB,EAAAqB,EAAuB","file":"static/js/chunk-070d.7e10a520.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"wscn-http404-container\"},[_c('div',{staticClass:\"wscn-http404\"},[_vm._m(0),_vm._v(\" \"),_c('div',{staticClass:\"bullshit\"},[_c('div',{staticClass:\"bullshit__oops\"},[_vm._v(\"OOPS!\")]),_vm._v(\" \"),_c('div',{staticClass:\"bullshit__headline\"},[_vm._v(_vm._s(_vm.message))]),_vm._v(\" \"),_c('div',{staticClass:\"bullshit__info\"},[_vm._v(\"Please make sure you URL is correct\")]),_vm._v(\" \"),_c('router-link',{staticClass:\"bullshit__return-home\",attrs:{\"to\":\"/\"}},[_vm._v(\"Go to the home page\")])],1)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pic-404\"},[_c('img',{staticClass:\"pic-404__parent\",attrs:{\"src\":require(\"@/assets/404_images/404.png\"),\"alt\":\"404\"}}),_vm._v(\" \"),_c('img',{staticClass:\"pic-404__child left\",attrs:{\"src\":require(\"@/assets/404_images/404_cloud.png\"),\"alt\":\"404\"}}),_vm._v(\" \"),_c('img',{staticClass:\"pic-404__child mid\",attrs:{\"src\":require(\"@/assets/404_images/404_cloud.png\"),\"alt\":\"404\"}}),_vm._v(\" \"),_c('img',{staticClass:\"pic-404__child right\",attrs:{\"src\":require(\"@/assets/404_images/404_cloud.png\"),\"alt\":\"404\"}})])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./404.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./404.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./404.vue?vue&type=template&id=1d6b2d2a&scoped=true&\"\nimport script from \"./404.vue?vue&type=script&lang=js&\"\nexport * from \"./404.vue?vue&type=script&lang=js&\"\nimport style0 from \"./404.vue?vue&type=style&index=0&id=1d6b2d2a&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1d6b2d2a\",\n null\n \n)\n\ncomponent.options.__file = \"404.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./404.vue?vue&type=style&index=0&id=1d6b2d2a&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./404.vue?vue&type=style&index=0&id=1d6b2d2a&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/img/404.a57b6f3.png\";"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-0778.b17650df.js.map b/priv/static/adminfe/static/js/chunk-0778.b17650df.js.map deleted file mode 100644 index 1f96c3236..000000000 --- a/priv/static/adminfe/static/js/chunk-0778.b17650df.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./src/views/invites/index.vue?8ebd","webpack:///./src/views/invites/index.vue?b523","webpack:///src/views/invites/index.vue","webpack:///./src/views/invites/index.vue","webpack:///./src/views/invites/index.vue?0fc1","webpack:///./src/components/RebootButton/index.vue?8db4","webpack:///./src/components/RebootButton/index.vue?2f45","webpack:///src/components/RebootButton/index.vue","webpack:///./src/components/RebootButton/index.vue"],"names":["views_invitesvue_type_script_lang_js_","components","RebootButton","data","rules","email","validator","this","validateEmail","trigger","newTokenForm","maxUse","expiresAt","inviteUserForm","name","createTokenDialogVisible","inviteUserDialogVisible","computed","objectSpread_default","Object","vuex_esm","getLabelWidth","isDesktop","inviteLink","concat","utils","authHost","newToken","token","$store","state","app","device","loading","invites","tokens","inviteTokens","mounted","dispatch","methods","closeDialogWindow","$data","createToken","inviteUserViaEmail","_inviteUserViaEmail","asyncToGenerator_default","regenerator_default","a","mark","_callee2","_this","wrap","_context2","prev","next","$refs","validate","_ref","_callee","valid","_context","$message","type","message","$t","abrupt","stop","_x","apply","arguments","revokeInviteToken","rule","value","callback","Error","validEmail","test","component","componentNormalizer","_vm","_h","$createElement","_c","_self","staticClass","_v","_s","on","click","$event","attrs","visible","show-close","title","custom-class","update:visible","ref","model","label-width","status-icon","label","min","size","$$v","$set","expression","placeholder","value-format","slot","href","underline","target","_e","prop","autofocus","directives","rawName","default-sort","order","min-width","sortable","align","header-align","scopedSlots","_u","key","fn","scope","row","used","disable-transitions","nativeOn","options","__file","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","components_RebootButtonvue_type_script_lang_js_","needReboot","restartApp","_restartApp","t0","lang","t","content","placement"],"mappings":"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","file":"static/js/chunk-0778.b17650df.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"invites-container\"},[_c('div',{staticClass:\"invites-header-container\"},[_c('h1',[_vm._v(_vm._s(_vm.$t('invites.inviteTokens')))]),_vm._v(\" \"),_c('reboot-button')],1),_vm._v(\" \"),_c('div',{staticClass:\"actions-container\"},[_c('el-button',{staticClass:\"create-invite-token\",on:{\"click\":function($event){_vm.createTokenDialogVisible = true}}},[_c('span',[_c('i',{staticClass:\"icon el-icon-plus\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('invites.createInviteToken'))+\"\\n \")])]),_vm._v(\" \"),_c('el-button',{staticClass:\"invite-via-email\",on:{\"click\":function($event){_vm.inviteUserDialogVisible = true}}},[_c('span',[_c('i',{staticClass:\"icon el-icon-message\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('invites.inviteUserViaEmail'))+\"\\n \")])])],1),_vm._v(\" \"),_c('el-dialog',{attrs:{\"visible\":_vm.createTokenDialogVisible,\"show-close\":false,\"title\":_vm.$t('invites.createInviteToken'),\"custom-class\":\"create-new-token-dialog\"},on:{\"update:visible\":function($event){_vm.createTokenDialogVisible=$event}}},[_c('el-form',{ref:\"newTokenForm\",attrs:{\"model\":_vm.newTokenForm,\"label-width\":_vm.getLabelWidth,\"status-icon\":\"\"}},[_c('el-form-item',{attrs:{\"label\":_vm.$t('invites.maxUse')}},[_c('el-input-number',{attrs:{\"min\":0,\"size\":_vm.isDesktop ? 'medium' : 'small',\"name\":\"maxUse\"},model:{value:(_vm.newTokenForm.maxUse),callback:function ($$v) {_vm.$set(_vm.newTokenForm, \"maxUse\", $$v)},expression:\"newTokenForm.maxUse\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('invites.expiresAt')}},[_c('el-date-picker',{staticClass:\"pick-date\",attrs:{\"placeholder\":_vm.$t('invites.pickDate'),\"type\":\"date\",\"name\":\"date\",\"value-format\":\"yyyy-MM-dd\"},model:{value:(_vm.newTokenForm.expiresAt),callback:function ($$v) {_vm.$set(_vm.newTokenForm, \"expiresAt\", $$v)},expression:\"newTokenForm.expiresAt\"}})],1)],1),_vm._v(\" \"),_c('span',{attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{staticClass:\"invites-close-dialog\",on:{\"click\":_vm.closeDialogWindow}},[_vm._v(_vm._s(_vm.$t('invites.cancel')))]),_vm._v(\" \"),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.createToken}},[_vm._v(_vm._s(_vm.$t('invites.create')))])],1),_vm._v(\" \"),('token' in _vm.newToken)?_c('el-card',[_c('div',{staticClass:\"clearfix\",attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('span',[_vm._v(_vm._s(_vm.$t('invites.tokenCreated')))])]),_vm._v(\" \"),_c('el-form',{staticClass:\"new-token-card\",attrs:{\"label-width\":\"80px\"}},[_c('el-form-item',{attrs:{\"label\":_vm.$t('invites.inviteLink')}},[_c('el-link',{attrs:{\"href\":_vm.inviteLink,\"underline\":false,\"target\":\"_blank\"}},[_vm._v(\"\\n \"+_vm._s(_vm.inviteLink)+\"\\n \")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('invites.token')}},[_vm._v(\"\\n \"+_vm._s(_vm.newToken.token)+\"\\n \")]),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('invites.maxUse')}},[_vm._v(\"\\n \"+_vm._s(_vm.newToken.maxUse)+\"\\n \")]),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('invites.expiresAt')}},[_vm._v(\"\\n \"+_vm._s(_vm.newToken.expiresAt || '(not set)')+\"\\n \")])],1)],1):_vm._e()],1),_vm._v(\" \"),_c('el-dialog',{attrs:{\"visible\":_vm.inviteUserDialogVisible,\"show-close\":false,\"title\":_vm.$t('invites.sendRegistration'),\"custom-class\":\"invite-via-email-dialog\"},on:{\"update:visible\":function($event){_vm.inviteUserDialogVisible=$event}}},[_c('div',[_c('p',{staticClass:\"info\"},[_vm._v(_vm._s(_vm.$t('invites.inviteViaEmailAlert')))]),_vm._v(\" \"),_c('el-form',{ref:\"inviteUserForm\",attrs:{\"model\":_vm.inviteUserForm,\"rules\":_vm.rules,\"label-width\":_vm.getLabelWidth,\"status-icon\":\"\"}},[_c('el-form-item',{attrs:{\"label\":_vm.$t('invites.email'),\"prop\":\"email\"}},[_c('el-input',{attrs:{\"name\":\"email\",\"type\":\"email\",\"autofocus\":\"\"},model:{value:(_vm.inviteUserForm.email),callback:function ($$v) {_vm.$set(_vm.inviteUserForm, \"email\", $$v)},expression:\"inviteUserForm.email\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('invites.name'),\"prop\":\"name\"}},[_c('el-input',{attrs:{\"name\":\"name\"},model:{value:(_vm.inviteUserForm.name),callback:function ($$v) {_vm.$set(_vm.inviteUserForm, \"name\", $$v)},expression:\"inviteUserForm.name\"}})],1)],1)],1),_vm._v(\" \"),_c('span',{attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":_vm.closeDialogWindow}},[_vm._v(_vm._s(_vm.$t('invites.cancel')))]),_vm._v(\" \"),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.inviteUserViaEmail}},[_vm._v(_vm._s(_vm.$t('invites.create')))])],1)]),_vm._v(\" \"),_c('el-table',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],staticClass:\"invite-token-table\",attrs:{\"data\":_vm.tokens,\"default-sort\":{prop: 'used', order: 'ascending'}}},[(_vm.isDesktop)?_c('el-table-column',{attrs:{\"label\":_vm.$t('invites.id'),\"min-width\":\"60\",\"prop\":\"id\",\"sortable\":\"\"}}):_vm._e(),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.$t('invites.token'),\"min-width\":_vm.isDesktop ? 320 : 120,\"prop\":\"token\"}}),_vm._v(\" \"),(_vm.isDesktop)?_c('el-table-column',{attrs:{\"label\":_vm.$t('invites.expiresAt'),\"align\":\"center\",\"header-align\":\"center\",\"min-width\":\"110\",\"prop\":\"expires_at\",\"sortable\":\"\"}}):_vm._e(),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.$t('invites.maxUse'),\"align\":\"center\",\"header-align\":\"center\",\"min-width\":\"60\",\"prop\":\"max_use\",\"sortable\":\"\"}}),_vm._v(\" \"),(_vm.isDesktop)?_c('el-table-column',{attrs:{\"label\":_vm.$t('invites.uses'),\"align\":\"center\",\"header-align\":\"center\",\"min-width\":\"60\",\"prop\":\"uses\"}}):_vm._e(),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.$t('invites.used'),\"min-width\":_vm.isDesktop ? 60 : 50,\"align\":\"center\",\"header-align\":\"center\",\"prop\":\"used\",\"sortable\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-tag',{attrs:{\"type\":scope.row.used ? 'danger' : 'success',\"disable-transitions\":\"\"}},[_vm._v(\"\\n \"+_vm._s(scope.row.used ? _vm.$t('invites.used') : _vm.$t('invites.active'))+\"\\n \")])]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.$t('invites.actions'),\"min-width\":_vm.isDesktop ? 100 : 50,\"align\":\"center\",\"header-align\":\"center\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-button',{attrs:{\"type\":\"text\",\"size\":\"small\"},nativeOn:{\"click\":function($event){return _vm.revokeInviteToken(scope.row.token)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('invites.revoke'))+\"\\n \")])]}}])})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=1ca5df66&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.needReboot)?_c('el-tooltip',{attrs:{\"content\":_vm.$t('settings.restartApp'),\"placement\":\"bottom-end\"}},[_c('el-button',{staticClass:\"reboot-button\",attrs:{\"type\":\"warning\"},on:{\"click\":_vm.restartApp}},[_c('span',[_c('i',{staticClass:\"el-icon-refresh\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.instanceReboot'))+\"\\n \")])])],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=53cfaf1d&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-0cbc.43ff796f.js b/priv/static/adminfe/static/js/chunk-0cbc.43ff796f.js new file mode 100644 index 000000000..232f0d447 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-0cbc.43ff796f.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-0cbc"],{"/Cm6":function(e,t,s){},"53Av":function(e,t,s){"use strict";var r=s("lOBV");s.n(r).a},"6eCR":function(e,t,s){"use strict";var r=s("Jdpf");s.n(r).a},"9/5/":function(e,t,s){(function(t){var s="Expected a function",r=NaN,n="[object Symbol]",i=/^\s+|\s+$/g,o=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,c=/^0o[0-7]+$/i,u=parseInt,l="object"==typeof t&&t&&t.Object===Object&&t,d="object"==typeof self&&self&&self.Object===Object&&self,p=l||d||Function("return this")(),f=Object.prototype.toString,v=Math.max,m=Math.min,h=function(){return p.Date.now()};function g(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function _(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&f.call(e)==n}(e))return r;if(g(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=g(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(i,"");var s=a.test(e);return s||c.test(e)?u(e.slice(2),s?2:8):o.test(e)?r:+e}e.exports=function(e,t,r){var n,i,o,a,c,u,l=0,d=!1,p=!1,f=!0;if("function"!=typeof e)throw new TypeError(s);function w(t){var s=n,r=i;return n=i=void 0,l=t,a=e.apply(r,s)}function $(e){var s=e-u;return void 0===u||s>=t||s<0||p&&e-l>=o}function b(){var e=h();if($(e))return k(e);c=setTimeout(b,function(e){var s=t-(e-u);return p?m(s,o-(e-l)):s}(e))}function k(e){return c=void 0,f&&n?w(e):(n=i=void 0,a)}function y(){var e=h(),s=$(e);if(n=arguments,i=this,u=e,s){if(void 0===c)return function(e){return l=e,c=setTimeout(b,t),d?w(e):a}(u);if(p)return c=setTimeout(b,t),w(u)}return void 0===c&&(c=setTimeout(b,t)),a}return t=_(t)||0,g(r)&&(d=!!r.leading,o=(p="maxWait"in r)?v(_(r.maxWait)||0,t):o,f="trailing"in r?!!r.trailing:f),y.cancel=function(){void 0!==c&&clearTimeout(c),l=0,n=u=i=c=void 0},y.flush=function(){return void 0===c?a:k(h())},y}}).call(this,s("yLpj"))},DPTh:function(e,t,s){"use strict";var r=s("vg5t");s.n(r).a},Jdpf:function(e,t,s){},RGjw:function(e,t,s){"use strict";s.r(t);var r=s("o0o1"),n=s.n(r),i=s("yXPU"),o=s.n(i),a=s("9/5/"),c=s.n(a),u=s("ZhIB"),l=s.n(u),d=s("lSNA"),p=s.n(d),f=s("MVZn"),v=s.n(f),m={data:function(){return{value:[]}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device}},methods:{removeOppositeFilters:function(){var e=Object.keys(this.$store.state.users.filters).length,t=this.$data.value.slice(),s=t.indexOf("local"),r=t.indexOf("external"),n=t.indexOf("active"),i=t.indexOf("deactivated");if(t.length===e)return[];if(s>-1&&r>-1){var o=s>r?r:s;t.splice(o,1)}else if(n>-1&&i>-1){var a=n>i?i:n;t.splice(a,1)}return t},toggleFilters:function(){this.$data.value=this.removeOppositeFilters();var e=this.$data.value.reduce(function(e,t){return v()({},e,p()({},t,!0))},{});this.$store.dispatch("ToggleUsersFilter",e)}}},h=(s("Sq9Q"),s("KHd+")),g=Object(h.a)(m,function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("el-select",{staticClass:"select-field",attrs:{clearable:e.isDesktop,placeholder:e.$t("usersFilter.inputPlaceholder"),multiple:""},on:{change:e.toggleFilters},model:{value:e.value,callback:function(t){e.value=t},expression:"value"}},[s("el-option-group",{attrs:{label:e.$t("usersFilter.byAccountType")}},[s("el-option",{attrs:{value:"local"}},[e._v(e._s(e.$t("usersFilter.local")))]),e._v(" "),s("el-option",{attrs:{value:"external"}},[e._v(e._s(e.$t("usersFilter.external")))])],1),e._v(" "),s("el-option-group",{attrs:{label:e.$t("usersFilter.byStatus")}},[s("el-option",{attrs:{value:"active"}},[e._v(e._s(e.$t("usersFilter.active")))]),e._v(" "),s("el-option",{attrs:{value:"deactivated"}},[e._v(e._s(e.$t("usersFilter.deactivated")))])],1)],1)},[],!1,null,"78fa3c24",null);g.options.__file="UsersFilter.vue";var _=g.exports,w=s("i7Kn"),$={name:"NewAccountDialog",props:{dialogFormVisible:{type:Boolean,default:function(){return!1}}},data:function(){return{newUserForm:{nickname:"",email:"",password:""},rules:{nickname:[{validator:this.validateUsername,trigger:"blur"}],email:[{validator:this.validateEmail,trigger:"blur"}],password:[{validator:this.validatePassword,trigger:"blur"}]}}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device},isVisible:{get:function(){return this.$props.dialogFormVisible},set:function(){this.closeDialogWindow()}},getLabelWidth:function(){return this.isDesktop?"120px":"85px"}},methods:{closeDialogWindow:function(){this.$emit("closeWindow")},resetForm:function(){var e=this;this.$nextTick(function(){e.$refs.newUserForm.resetFields()})},submitForm:function(e){var t=this;this.$refs[e].validate(function(e){if(!e)return t.$message({type:"error",message:t.$t("users.submitFormError")}),!1;t.$emit("createNewAccount",t.$data.newUserForm)})},validateEmail:function(e,t,s){return""===t?s(new Error(this.$t("users.emptyEmailError"))):this.validEmail(t)?s():s(new Error(this.$t("users.invalidEmailError")))},validatePassword:function(e,t,s){return""===t?s(new Error(this.$t("users.emptyPasswordError"))):s()},validateUsername:function(e,t,s){return""===t?s(new Error(this.$t("users.emptyNicknameError"))):this.validNickname(t)?s():s(new Error(this.$t("users.invalidNicknameError")))},validEmail:function(e){return/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(e)},validNickname:function(e){return/^[a-zA-Z\d]+$/.test(e)}}},b=(s("DPTh"),Object(h.a)($,function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("el-dialog",{attrs:{visible:e.isVisible,"show-close":!1,title:e.$t("users.createAccount"),"custom-class":"create-user-dialog"},on:{"update:visible":function(t){e.isVisible=t},open:e.resetForm}},[s("el-form",{ref:"newUserForm",attrs:{model:e.newUserForm,rules:e.rules,"label-width":e.getLabelWidth,"status-icon":""}},[s("el-form-item",{staticClass:"create-account-form-item",attrs:{label:e.$t("users.username"),prop:"nickname"}},[s("el-input",{attrs:{name:"nickname",autofocus:""},model:{value:e.newUserForm.nickname,callback:function(t){e.$set(e.newUserForm,"nickname",t)},expression:"newUserForm.nickname"}})],1),e._v(" "),s("el-form-item",{staticClass:"create-account-form-item",attrs:{label:e.$t("users.email"),prop:"email"}},[s("el-input",{attrs:{name:"email",type:"email"},model:{value:e.newUserForm.email,callback:function(t){e.$set(e.newUserForm,"email",t)},expression:"newUserForm.email"}})],1),e._v(" "),s("el-form-item",{staticClass:"create-account-form-item-without-margin",attrs:{label:e.$t("users.password"),prop:"password"}},[s("el-input",{attrs:{type:"password",name:"password",autocomplete:"off"},model:{value:e.newUserForm.password,callback:function(t){e.$set(e.newUserForm,"password",t)},expression:"newUserForm.password"}})],1)],1),e._v(" "),s("span",{attrs:{slot:"footer"},slot:"footer"},[s("el-button",{on:{click:e.closeDialogWindow}},[e._v(e._s(e.$t("users.cancel")))]),e._v(" "),s("el-button",{attrs:{type:"primary"},on:{click:function(t){return e.submitForm("newUserForm")}}},[e._v(e._s(e.$t("users.create")))])],1)],1)},[],!1,null,null,null));b.options.__file="NewAccountDialog.vue";var k=b.exports,y=s("tPM3"),D=s("rIUS"),C=s("WjBP"),A={name:"Users",components:{NewAccountDialog:k,ModerationDropdown:y.a,MultipleUsersMenu:w.a,RebootButton:D.a,ResetPasswordDialog:C.a,UsersFilter:_},data:function(){return{search:"",selectedUsers:[],createAccountDialogOpen:!1,resetPasswordDialogOpen:!1}},computed:{loading:function(){return this.$store.state.users.loading},normalizedUsersCount:function(){return l()(this.$store.state.users.totalUsersCount).format("0a")},pageSize:function(){return this.$store.state.users.pageSize},currentPage:function(){return this.$store.state.users.currentPage},isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device},users:function(){return this.$store.state.users.fetchedUsers},usersCount:function(){return this.$store.state.users.totalUsersCount},width:function(){return!!this.isMobile&&55}},created:function(){var e=this;this.handleDebounceSearchInput=c()(function(t){e.$store.dispatch("SearchUsers",{query:t,page:1})},500)},mounted:function(){this.$store.dispatch("NeedReboot"),this.$store.dispatch("FetchUsers",{page:1})},destroyed:function(){this.$store.dispatch("ClearUsersState")},methods:{activationIcon:function(e){return e?"el-icon-error":"el-icon-success"},clearSelection:function(){this.$refs.usersTable.clearSelection()},closeResetPasswordDialog:function(){this.resetPasswordDialogOpen=!1,this.$store.dispatch("RemovePasswordToken")},createNewAccount:function(){var e=o()(n.a.mark(function e(t){return n.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.$store.dispatch("CreateNewAccount",t);case 2:this.createAccountDialogOpen=!1;case 3:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}(),getFirstLetter:function(e){return e.charAt(0).toUpperCase()},handlePageChange:function(e){var t=this.$store.state.users.searchQuery;""===t?this.$store.dispatch("FetchUsers",{page:e}):this.$store.dispatch("SearchUsers",{query:t,page:e})},handleRowClick:function(e){e.id&&this.$router.push({name:"UsersShow",params:{id:e.id}})},handleSelectionChange:function(e){this.$data.selectedUsers=e},openResetPasswordDialog:function(){this.resetPasswordDialogOpen=!0},propertyExists:function(e,t){return e[t]},showDeactivatedButton:function(e){return this.$store.state.user.id!==e}}},O=(s("6eCR"),Object(h.a)(A,function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"users-container"},[s("div",{staticClass:"users-header-container"},[s("h1",[e._v("\n "+e._s(e.$t("users.users"))+"\n "),s("span",{staticClass:"user-count"},[e._v("("+e._s(e.normalizedUsersCount)+")")])]),e._v(" "),s("reboot-button")],1),e._v(" "),s("div",{staticClass:"filter-container"},[s("users-filter"),e._v(" "),s("el-input",{staticClass:"search",attrs:{placeholder:e.$t("users.search"),"prefix-icon":"el-icon-search"},on:{input:e.handleDebounceSearchInput},model:{value:e.search,callback:function(t){e.search=t},expression:"search"}})],1),e._v(" "),s("div",{staticClass:"actions-container"},[s("el-button",{staticClass:"actions-button",on:{click:function(t){e.createAccountDialogOpen=!0}}},[s("span",{staticClass:"create-account"},[s("i",{staticClass:"el-icon-plus"}),e._v("\n "+e._s(e.$t("users.createAccount"))+"\n ")])]),e._v(" "),s("multiple-users-menu",{attrs:{"selected-users":e.selectedUsers},on:{"apply-action":e.clearSelection}})],1),e._v(" "),s("new-account-dialog",{attrs:{"dialog-form-visible":e.createAccountDialogOpen},on:{createNewAccount:e.createNewAccount,closeWindow:function(t){e.createAccountDialogOpen=!1}}}),e._v(" "),s("el-table",{directives:[{name:"loading",rawName:"v-loading",value:e.loading,expression:"loading"}],ref:"usersTable",staticStyle:{width:"100%"},attrs:{data:e.users,"row-key":"id"},on:{"row-click":function(t){return e.handleRowClick(t)},"selection-change":e.handleSelectionChange}},[e.isDesktop?s("el-table-column",{attrs:{type:"selection","reserve-selection":"",width:"44",align:"center"}}):e._e(),e._v(" "),s("el-table-column",{attrs:{"min-width":e.width,label:e.$t("users.id"),prop:"id"}}),e._v(" "),s("el-table-column",{attrs:{label:e.$t("users.name"),prop:"nickname"},scopedSlots:e._u([{key:"default",fn:function(t){return[e._v("\n "+e._s(t.row.nickname)+"\n "),e.isDesktop?s("el-tag",{attrs:{type:"info",size:"mini"}},[s("span",[e._v(e._s(t.row.local?e.$t("users.local"):e.$t("users.external")))])]):e._e()]}}])}),e._v(" "),s("el-table-column",{attrs:{"min-width":e.width,label:e.$t("users.status")},scopedSlots:e._u([{key:"default",fn:function(t){return[s("el-tag",{attrs:{type:t.row.deactivated?"danger":"success"}},[e.isDesktop?s("span",[e._v(e._s(t.row.deactivated?e.$t("users.deactivated"):e.$t("users.active")))]):s("i",{class:e.activationIcon(t.row.deactivated)})]),e._v(" "),t.row.roles.admin?s("el-tag",[s("span",[e._v(e._s(e.isDesktop?e.$t("users.admin"):e.getFirstLetter(e.$t("users.admin"))))])]):e._e(),e._v(" "),t.row.roles.moderator?s("el-tag",[s("span",[e._v(e._s(e.isDesktop?e.$t("users.moderator"):e.getFirstLetter(e.$t("users.moderator"))))])]):e._e(),e._v(" "),s("el-tooltip",{attrs:{content:e.$t("users.unconfirmedEmail"),effect:"dark"}},[t.row.confirmation_pending?s("el-tag",{attrs:{type:"info"}},[e._v("\n "+e._s(e.isDesktop?e.$t("users.unconfirmed"):e.getFirstLetter(e.$t("users.unconfirmed")))+"\n ")]):e._e()],1)]}}])}),e._v(" "),s("el-table-column",{attrs:{label:e.$t("users.actions"),fixed:"right"},scopedSlots:e._u([{key:"default",fn:function(t){return[e.propertyExists(t.row,"nickname")?s("moderation-dropdown",{attrs:{user:t.row,page:"users"},on:{"open-reset-token-dialog":e.openResetPasswordDialog}}):s("el-button",{attrs:{type:"text",disabled:""}},[e._v("\n "+e._s(e.$t("users.moderation"))+"\n "),e.isDesktop?s("i",{staticClass:"el-icon-arrow-down el-icon--right"}):e._e()])]}}])})],1),e._v(" "),s("reset-password-dialog",{attrs:{"reset-password-dialog-open":e.resetPasswordDialogOpen},on:{"close-reset-token-dialog":e.closeResetPasswordDialog}}),e._v(" "),e.loading?e._e():s("div",{staticClass:"pagination"},[s("el-pagination",{attrs:{total:e.usersCount,"current-page":e.currentPage,"page-size":e.pageSize,background:"",layout:"prev, pager, next"},on:{"current-change":e.handlePageChange}})],1)],1)},[],!1,null,null,null));O.options.__file="index.vue";t.default=O.exports},Sq9Q:function(e,t,s){"use strict";var r=s("/Cm6");s.n(r).a},WjBP:function(e,t,s){"use strict";var r={name:"ResetPasswordDialog",props:{resetPasswordDialogOpen:{type:Boolean,default:!1}},computed:{dialogOpen:function(){return this.resetPasswordDialogOpen},loading:function(){return this.$store.state.users.loading},passwordResetLink:function(){return this.$store.state.users.passwordResetToken.link},passwordResetToken:function(){return this.$store.state.users.passwordResetToken.token}},methods:{closeResetPasswordDialog:function(){this.$emit("close-reset-token-dialog")}}},n=s("KHd+"),i=Object(n.a)(r,function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("el-dialog",{directives:[{name:"loading",rawName:"v-loading",value:e.loading,expression:"loading"}],attrs:{visible:e.dialogOpen,title:e.$t("users.passwordResetTokenCreated"),"custom-class":"password-reset-token-dialog"},on:{close:e.closeResetPasswordDialog}},[s("div",[s("p",{staticClass:"password-reset-token"},[e._v(e._s(e.$t("users.passwordResetTokenGenerated"))+" "+e._s(e.passwordResetToken))]),e._v(" "),s("p",[e._v(e._s(e.$t("users.linkToResetPassword"))+"\n "),s("a",{staticClass:"reset-password-link",attrs:{href:e.passwordResetLink,target:"_blank"}},[e._v(e._s(e.passwordResetLink))])])])])},[],!1,null,null,null);i.options.__file="ResetPasswordDialog.vue";t.a=i.exports},lOBV:function(e,t,s){},tPM3:function(e,t,s){"use strict";var r={name:"ModerationDropdown",props:{user:{type:Object,default:function(){return{}}},page:{type:String,default:"users"},statusId:{type:String,default:""}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device}},methods:{getPasswordResetToken:function(e){this.$emit("open-reset-token-dialog"),this.$store.dispatch("GetPasswordResetToken",e)},handleConfirmationResend:function(e){this.$store.dispatch("ResendConfirmationEmail",[e])},handleDeletion:function(e){this.$store.dispatch("DeleteUsers",{users:[e],_userId:e.id})},handleEmailConfirmation:function(e){this.$store.dispatch("ConfirmUsersEmail",{users:[e],_userId:e.id,_statusId:this.statusId})},requirePasswordReset:function(e){this.$store.state.user.nodeInfo.metadata.mailerEnabled?this.$store.dispatch("RequirePasswordReset",[e]):this.$alert(this.$t("users.mailerMustBeEnabled"),"Error",{type:"error"})},showAdminAction:function(e){var t=e.local,s=e.id;return t&&this.showDeactivatedButton(s)},showDeactivatedButton:function(e){return this.$store.state.user.id!==e},toggleActivation:function(e){e.deactivated?this.$store.dispatch("ActivateUsers",{users:[e],_userId:e.id}):this.$store.dispatch("DeactivateUsers",{users:[e],_userId:e.id})},toggleTag:function(e,t){e.tags.includes(t)?this.$store.dispatch("RemoveTag",{users:[e],tag:t,_userId:e.id,_statusId:this.statusId}):this.$store.dispatch("AddTag",{users:[e],tag:t,_userId:e.id,_statusId:this.statusId})},toggleUserRight:function(e,t){e.roles[t]?this.$store.dispatch("DeleteRight",{users:[e],right:t,_userId:e.id,_statusId:this.statusId}):this.$store.dispatch("AddRight",{users:[e],right:t,_userId:e.id,_statusId:this.statusId})}}},n=(s("53Av"),s("KHd+")),i=Object(n.a)(r,function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("el-dropdown",{attrs:{"hide-on-click":!1,size:"small",trigger:"click",placement:"top-start"},nativeOn:{click:function(e){e.stopPropagation()}}},[s("div",["users"===e.page?s("el-button",{staticClass:"el-dropdown-link",attrs:{type:"text"}},[e._v("\n "+e._s(e.$t("users.moderation"))+"\n "),e.isDesktop?s("i",{staticClass:"el-icon-arrow-down el-icon--right"}):e._e()]):e._e(),e._v(" "),"userPage"===e.page||"statusPage"===e.page?s("el-button",{staticClass:"moderate-user-button"},[s("span",{staticClass:"moderate-user-button-container"},[s("span",[s("i",{staticClass:"el-icon-edit"}),e._v("\n "+e._s(e.$t("users.moderateUser"))+"\n ")]),e._v(" "),s("i",{staticClass:"el-icon-arrow-down el-icon--right"})])]):e._e()],1),e._v(" "),s("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[e.showAdminAction(e.user)?s("el-dropdown-item",{nativeOn:{click:function(t){return e.toggleUserRight(e.user,"admin")}}},[e._v("\n "+e._s(e.user.roles.admin?e.$t("users.revokeAdmin"):e.$t("users.grantAdmin"))+"\n ")]):e._e(),e._v(" "),e.showAdminAction(e.user)?s("el-dropdown-item",{nativeOn:{click:function(t){return e.toggleUserRight(e.user,"moderator")}}},[e._v("\n "+e._s(e.user.roles.moderator?e.$t("users.revokeModerator"):e.$t("users.grantModerator"))+"\n ")]):e._e(),e._v(" "),e.showDeactivatedButton(e.user.id)&&"statusPage"!==e.page?s("el-dropdown-item",{attrs:{divided:e.showAdminAction(e.user)},nativeOn:{click:function(t){return e.toggleActivation(e.user)}}},[e._v("\n "+e._s(e.user.deactivated?e.$t("users.activateAccount"):e.$t("users.deactivateAccount"))+"\n ")]):e._e(),e._v(" "),e.showDeactivatedButton(e.user.id)&&"statusPage"!==e.page?s("el-dropdown-item",{nativeOn:{click:function(t){return e.handleDeletion(e.user)}}},[e._v("\n "+e._s(e.$t("users.deleteAccount"))+"\n ")]):e._e(),e._v(" "),e.user.local&&e.user.confirmation_pending?s("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(t){return e.handleEmailConfirmation(e.user)}}},[e._v("\n "+e._s(e.$t("users.confirmAccount"))+"\n ")]):e._e(),e._v(" "),e.user.local&&e.user.confirmation_pending?s("el-dropdown-item",{nativeOn:{click:function(t){return e.handleConfirmationResend(e.user)}}},[e._v("\n "+e._s(e.$t("users.resendConfirmation"))+"\n ")]):e._e(),e._v(" "),s("el-dropdown-item",{class:{"active-tag":e.user.tags.includes("force_nsfw")},attrs:{divided:e.showAdminAction(e.user)},nativeOn:{click:function(t){return e.toggleTag(e.user,"force_nsfw")}}},[e._v("\n "+e._s(e.$t("users.forceNsfw"))+"\n "),e.user.tags.includes("force_nsfw")?s("i",{staticClass:"el-icon-check"}):e._e()]),e._v(" "),s("el-dropdown-item",{class:{"active-tag":e.user.tags.includes("strip_media")},nativeOn:{click:function(t){return e.toggleTag(e.user,"strip_media")}}},[e._v("\n "+e._s(e.$t("users.stripMedia"))+"\n "),e.user.tags.includes("strip_media")?s("i",{staticClass:"el-icon-check"}):e._e()]),e._v(" "),s("el-dropdown-item",{class:{"active-tag":e.user.tags.includes("force_unlisted")},nativeOn:{click:function(t){return e.toggleTag(e.user,"force_unlisted")}}},[e._v("\n "+e._s(e.$t("users.forceUnlisted"))+"\n "),e.user.tags.includes("force_unlisted")?s("i",{staticClass:"el-icon-check"}):e._e()]),e._v(" "),s("el-dropdown-item",{class:{"active-tag":e.user.tags.includes("sandbox")},nativeOn:{click:function(t){return e.toggleTag(e.user,"sandbox")}}},[e._v("\n "+e._s(e.$t("users.sandbox"))+"\n "),e.user.tags.includes("sandbox")?s("i",{staticClass:"el-icon-check"}):e._e()]),e._v(" "),e.user.local?s("el-dropdown-item",{class:{"active-tag":e.user.tags.includes("disable_remote_subscription")},nativeOn:{click:function(t){return e.toggleTag(e.user,"disable_remote_subscription")}}},[e._v("\n "+e._s(e.$t("users.disableRemoteSubscription"))+"\n "),e.user.tags.includes("disable_remote_subscription")?s("i",{staticClass:"el-icon-check"}):e._e()]):e._e(),e._v(" "),e.user.local?s("el-dropdown-item",{class:{"active-tag":e.user.tags.includes("disable_any_subscription")},nativeOn:{click:function(t){return e.toggleTag(e.user,"disable_any_subscription")}}},[e._v("\n "+e._s(e.$t("users.disableAnySubscription"))+"\n "),e.user.tags.includes("disable_any_subscription")?s("i",{staticClass:"el-icon-check"}):e._e()]):e._e(),e._v(" "),e.user.local?s("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(t){return e.getPasswordResetToken(e.user.nickname)}}},[e._v("\n "+e._s(e.$t("users.getPasswordResetToken"))+"\n ")]):e._e(),e._v(" "),e.user.local?s("el-dropdown-item",{nativeOn:{click:function(t){return e.requirePasswordReset(e.user)}}},[e._v("\n "+e._s(e.$t("users.requirePasswordReset"))+"\n ")]):e._e()],1)],1)},[],!1,null,null,null);i.options.__file="ModerationDropdown.vue";t.a=i.exports},vg5t:function(e,t,s){}}]); +//# sourceMappingURL=chunk-0cbc.43ff796f.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-0cbc.43ff796f.js.map b/priv/static/adminfe/static/js/chunk-0cbc.43ff796f.js.map new file mode 100644 index 000000000..dbca0ba8e --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-0cbc.43ff796f.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/users/components/ModerationDropdown.vue?e3f0","webpack:///./src/views/users/index.vue?1afe","webpack:///./node_modules/lodash.debounce/index.js","webpack:///./src/views/users/components/NewAccountDialog.vue?d353","webpack:///./src/views/users/index.vue?70f1","webpack:///./src/views/users/components/UsersFilter.vue?6a82","webpack:///src/views/users/components/UsersFilter.vue","webpack:///./src/views/users/components/UsersFilter.vue","webpack:///./src/views/users/components/UsersFilter.vue?5e82","webpack:///./src/views/users/components/NewAccountDialog.vue?9018","webpack:///src/views/users/components/NewAccountDialog.vue","webpack:///./src/views/users/components/NewAccountDialog.vue","webpack:///./src/views/users/components/NewAccountDialog.vue?43a7","webpack:///./src/views/users/index.vue?0a29","webpack:///src/views/users/index.vue","webpack:///./src/views/users/index.vue","webpack:///./src/views/users/components/UsersFilter.vue?f412","webpack:///./src/views/users/components/ResetPasswordDialog.vue?0b2b","webpack:///./src/views/users/components/ResetPasswordDialog.vue?31da","webpack:///src/views/users/components/ResetPasswordDialog.vue","webpack:///./src/views/users/components/ResetPasswordDialog.vue","webpack:///./src/views/users/components/ModerationDropdown.vue?ff75","webpack:///./src/views/users/components/ModerationDropdown.vue?676e","webpack:///src/views/users/components/ModerationDropdown.vue","webpack:///./src/views/users/components/ModerationDropdown.vue"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ModerationDropdown_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","global","FUNC_ERROR_TEXT","NAN","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","freeGlobal","Object","freeSelf","self","root","Function","objectToString","prototype","toString","nativeMax","Math","max","nativeMin","min","now","Date","isObject","value","type","toNumber","isObjectLike","call","isSymbol","other","valueOf","replace","isBinary","test","slice","module","exports","func","wait","options","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","args","thisArg","undefined","apply","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","setTimeout","remainingWait","debounced","isInvoking","arguments","this","leadingEdge","cancel","clearTimeout","flush","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_NewAccountDialog_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","components_UsersFiltervue_type_script_lang_js_","data","computed","isDesktop","$store","state","app","device","methods","removeOppositeFilters","filtersQuantity","keys","users","filters","length","currentFilters","$data","indexOfLocal","indexOf","indexOfExternal","indexOfActive","indexOfDeactivated","filterToRemove","splice","_filterToRemove","toggleFilters","reduce","acc","filter","objectSpread_default","defineProperty_default","dispatch","component","componentNormalizer","_vm","_h","$createElement","_c","_self","staticClass","attrs","clearable","placeholder","$t","multiple","on","change","model","callback","$$v","expression","label","_v","_s","__file","UsersFilter","components_NewAccountDialogvue_type_script_lang_js_","name","props","dialogFormVisible","Boolean","default","newUserForm","nickname","email","password","rules","validator","validateUsername","trigger","validateEmail","validatePassword","isVisible","get","$props","set","closeDialogWindow","getLabelWidth","$emit","resetForm","_this","$nextTick","$refs","resetFields","submitForm","formName","_this2","validate","valid","$message","message","rule","Error","validEmail","validNickname","NewAccountDialog_component","visible","show-close","title","custom-class","update:visible","$event","open","ref","label-width","status-icon","prop","autofocus","$set","autocomplete","slot","click","NewAccountDialog","views_usersvue_type_script_lang_js_","components","ModerationDropdown","MultipleUsersMenu","RebootButton","ResetPasswordDialog","search","selectedUsers","createAccountDialogOpen","resetPasswordDialogOpen","loading","normalizedUsersCount","numeral_default","totalUsersCount","format","pageSize","currentPage","isMobile","fetchedUsers","usersCount","width","created","handleDebounceSearchInput","lodash_debounce_default","query","page","mounted","destroyed","activationIcon","status","clearSelection","usersTable","closeResetPasswordDialog","createNewAccount","_createNewAccount","asyncToGenerator_default","regenerator_default","a","mark","_callee","accountData","wrap","_context","prev","next","stop","_x","getFirstLetter","str","charAt","toUpperCase","handlePageChange","searchQuery","handleRowClick","row","id","$router","push","params","handleSelectionChange","openResetPasswordDialog","propertyExists","account","property","showDeactivatedButton","user","users_component","prefix-icon","input","selected-users","apply-action","dialog-form-visible","closeWindow","directives","rawName","staticStyle","row-key","row-click","selection-change","reserve-selection","align","_e","min-width","scopedSlots","_u","key","fn","scope","size","local","deactivated","class","roles","content","effect","fixed","open-reset-token-dialog","disabled","reset-password-dialog-open","close-reset-token-dialog","total","current-page","page-size","background","layout","current-change","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_UsersFilter_vue_vue_type_style_index_0_id_78fa3c24_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","components_ResetPasswordDialogvue_type_script_lang_js_","dialogOpen","passwordResetLink","passwordResetToken","link","token","close","href","target","components_ModerationDropdownvue_type_script_lang_js_","String","statusId","getPasswordResetToken","handleConfirmationResend","handleDeletion","_userId","handleEmailConfirmation","_statusId","requirePasswordReset","nodeInfo","metadata","mailerEnabled","$alert","showAdminAction","_ref","toggleActivation","toggleTag","tag","tags","includes","toggleUserRight","right","hide-on-click","placement","nativeOn","stopPropagation","admin","moderator","divided","confirmation_pending","active-tag"],"mappings":"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","file":"static/js/chunk-0cbc.43ff796f.js","sourcesContent":["import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewAccountDialog.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewAccountDialog.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"users-container\"},[_c('div',{staticClass:\"users-header-container\"},[_c('h1',[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.users'))+\"\\n \"),_c('span',{staticClass:\"user-count\"},[_vm._v(\"(\"+_vm._s(_vm.normalizedUsersCount)+\")\")])]),_vm._v(\" \"),_c('reboot-button')],1),_vm._v(\" \"),_c('div',{staticClass:\"filter-container\"},[_c('users-filter'),_vm._v(\" \"),_c('el-input',{staticClass:\"search\",attrs:{\"placeholder\":_vm.$t('users.search'),\"prefix-icon\":\"el-icon-search\"},on:{\"input\":_vm.handleDebounceSearchInput},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"actions-container\"},[_c('el-button',{staticClass:\"actions-button\",on:{\"click\":function($event){_vm.createAccountDialogOpen = true}}},[_c('span',{staticClass:\"create-account\"},[_c('i',{staticClass:\"el-icon-plus\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('users.createAccount'))+\"\\n \")])]),_vm._v(\" \"),_c('multiple-users-menu',{attrs:{\"selected-users\":_vm.selectedUsers},on:{\"apply-action\":_vm.clearSelection}})],1),_vm._v(\" \"),_c('new-account-dialog',{attrs:{\"dialog-form-visible\":_vm.createAccountDialogOpen},on:{\"createNewAccount\":_vm.createNewAccount,\"closeWindow\":function($event){_vm.createAccountDialogOpen = false}}}),_vm._v(\" \"),_c('el-table',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],ref:\"usersTable\",staticStyle:{\"width\":\"100%\"},attrs:{\"data\":_vm.users,\"row-key\":\"id\"},on:{\"row-click\":function($event){return _vm.handleRowClick($event)},\"selection-change\":_vm.handleSelectionChange}},[(_vm.isDesktop)?_c('el-table-column',{attrs:{\"type\":\"selection\",\"reserve-selection\":\"\",\"width\":\"44\",\"align\":\"center\"}}):_vm._e(),_vm._v(\" \"),_c('el-table-column',{attrs:{\"min-width\":_vm.width,\"label\":_vm.$t('users.id'),\"prop\":\"id\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.$t('users.name'),\"prop\":\"nickname\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.nickname)+\"\\n \"),(_vm.isDesktop)?_c('el-tag',{attrs:{\"type\":\"info\",\"size\":\"mini\"}},[_c('span',[_vm._v(_vm._s(scope.row.local ? _vm.$t('users.local') : _vm.$t('users.external')))])]):_vm._e()]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"min-width\":_vm.width,\"label\":_vm.$t('users.status')},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-tag',{attrs:{\"type\":scope.row.deactivated ? 'danger' : 'success'}},[(_vm.isDesktop)?_c('span',[_vm._v(_vm._s(scope.row.deactivated ? _vm.$t('users.deactivated') : _vm.$t('users.active')))]):_c('i',{class:_vm.activationIcon(scope.row.deactivated)})]),_vm._v(\" \"),(scope.row.roles.admin)?_c('el-tag',[_c('span',[_vm._v(_vm._s(_vm.isDesktop ? _vm.$t('users.admin') : _vm.getFirstLetter(_vm.$t('users.admin'))))])]):_vm._e(),_vm._v(\" \"),(scope.row.roles.moderator)?_c('el-tag',[_c('span',[_vm._v(_vm._s(_vm.isDesktop ? _vm.$t('users.moderator') : _vm.getFirstLetter(_vm.$t('users.moderator'))))])]):_vm._e(),_vm._v(\" \"),_c('el-tooltip',{attrs:{\"content\":_vm.$t('users.unconfirmedEmail'),\"effect\":\"dark\"}},[(scope.row.confirmation_pending)?_c('el-tag',{attrs:{\"type\":\"info\"}},[_vm._v(\"\\n \"+_vm._s(_vm.isDesktop ? _vm.$t('users.unconfirmed') : _vm.getFirstLetter(_vm.$t('users.unconfirmed')))+\"\\n \")]):_vm._e()],1)]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.$t('users.actions'),\"fixed\":\"right\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(_vm.propertyExists(scope.row, 'nickname'))?_c('moderation-dropdown',{attrs:{\"user\":scope.row,\"page\":'users'},on:{\"open-reset-token-dialog\":_vm.openResetPasswordDialog}}):_c('el-button',{attrs:{\"type\":\"text\",\"disabled\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.moderation'))+\"\\n \"),(_vm.isDesktop)?_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"}):_vm._e()])]}}])})],1),_vm._v(\" \"),_c('reset-password-dialog',{attrs:{\"reset-password-dialog-open\":_vm.resetPasswordDialogOpen},on:{\"close-reset-token-dialog\":_vm.closeResetPasswordDialog}}),_vm._v(\" \"),(!_vm.loading)?_c('div',{staticClass:\"pagination\"},[_c('el-pagination',{attrs:{\"total\":_vm.usersCount,\"current-page\":_vm.currentPage,\"page-size\":_vm.pageSize,\"background\":\"\",\"layout\":\"prev, pager, next\"},on:{\"current-change\":_vm.handlePageChange}})],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UsersFilter.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UsersFilter.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./UsersFilter.vue?vue&type=template&id=78fa3c24&scoped=true&\"\nimport script from \"./UsersFilter.vue?vue&type=script&lang=js&\"\nexport * from \"./UsersFilter.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UsersFilter.vue?vue&type=style&index=0&id=78fa3c24&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"78fa3c24\",\n null\n \n)\n\ncomponent.options.__file = \"UsersFilter.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-select',{staticClass:\"select-field\",attrs:{\"clearable\":_vm.isDesktop,\"placeholder\":_vm.$t('usersFilter.inputPlaceholder'),\"multiple\":\"\"},on:{\"change\":_vm.toggleFilters},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}},[_c('el-option-group',{attrs:{\"label\":_vm.$t('usersFilter.byAccountType')}},[_c('el-option',{attrs:{\"value\":\"local\"}},[_vm._v(_vm._s(_vm.$t('usersFilter.local')))]),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"external\"}},[_vm._v(_vm._s(_vm.$t('usersFilter.external')))])],1),_vm._v(\" \"),_c('el-option-group',{attrs:{\"label\":_vm.$t('usersFilter.byStatus')}},[_c('el-option',{attrs:{\"value\":\"active\"}},[_vm._v(_vm._s(_vm.$t('usersFilter.active')))]),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"deactivated\"}},[_vm._v(_vm._s(_vm.$t('usersFilter.deactivated')))])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewAccountDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewAccountDialog.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./NewAccountDialog.vue?vue&type=template&id=c89e4c22&\"\nimport script from \"./NewAccountDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./NewAccountDialog.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NewAccountDialog.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"NewAccountDialog.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{attrs:{\"visible\":_vm.isVisible,\"show-close\":false,\"title\":_vm.$t('users.createAccount'),\"custom-class\":\"create-user-dialog\"},on:{\"update:visible\":function($event){_vm.isVisible=$event},\"open\":_vm.resetForm}},[_c('el-form',{ref:\"newUserForm\",attrs:{\"model\":_vm.newUserForm,\"rules\":_vm.rules,\"label-width\":_vm.getLabelWidth,\"status-icon\":\"\"}},[_c('el-form-item',{staticClass:\"create-account-form-item\",attrs:{\"label\":_vm.$t('users.username'),\"prop\":\"nickname\"}},[_c('el-input',{attrs:{\"name\":\"nickname\",\"autofocus\":\"\"},model:{value:(_vm.newUserForm.nickname),callback:function ($$v) {_vm.$set(_vm.newUserForm, \"nickname\", $$v)},expression:\"newUserForm.nickname\"}})],1),_vm._v(\" \"),_c('el-form-item',{staticClass:\"create-account-form-item\",attrs:{\"label\":_vm.$t('users.email'),\"prop\":\"email\"}},[_c('el-input',{attrs:{\"name\":\"email\",\"type\":\"email\"},model:{value:(_vm.newUserForm.email),callback:function ($$v) {_vm.$set(_vm.newUserForm, \"email\", $$v)},expression:\"newUserForm.email\"}})],1),_vm._v(\" \"),_c('el-form-item',{staticClass:\"create-account-form-item-without-margin\",attrs:{\"label\":_vm.$t('users.password'),\"prop\":\"password\"}},[_c('el-input',{attrs:{\"type\":\"password\",\"name\":\"password\",\"autocomplete\":\"off\"},model:{value:(_vm.newUserForm.password),callback:function ($$v) {_vm.$set(_vm.newUserForm, \"password\", $$v)},expression:\"newUserForm.password\"}})],1)],1),_vm._v(\" \"),_c('span',{attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":_vm.closeDialogWindow}},[_vm._v(_vm._s(_vm.$t('users.cancel')))]),_vm._v(\" \"),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":function($event){return _vm.submitForm('newUserForm')}}},[_vm._v(_vm._s(_vm.$t('users.create')))])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=189f2583&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UsersFilter.vue?vue&type=style&index=0&id=78fa3c24&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UsersFilter.vue?vue&type=style&index=0&id=78fa3c24&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],attrs:{\"visible\":_vm.dialogOpen,\"title\":_vm.$t('users.passwordResetTokenCreated'),\"custom-class\":\"password-reset-token-dialog\"},on:{\"close\":_vm.closeResetPasswordDialog}},[_c('div',[_c('p',{staticClass:\"password-reset-token\"},[_vm._v(_vm._s(_vm.$t('users.passwordResetTokenGenerated'))+\" \"+_vm._s(_vm.passwordResetToken))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('users.linkToResetPassword'))+\"\\n \"),_c('a',{staticClass:\"reset-password-link\",attrs:{\"href\":_vm.passwordResetLink,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.passwordResetLink))])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPasswordDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPasswordDialog.vue?vue&type=script&lang=js&\"","\n\n\n\n","import { render, staticRenderFns } from \"./ResetPasswordDialog.vue?vue&type=template&id=e7d3eed4&\"\nimport script from \"./ResetPasswordDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./ResetPasswordDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"ResetPasswordDialog.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dropdown',{attrs:{\"hide-on-click\":false,\"size\":\"small\",\"trigger\":\"click\",\"placement\":\"top-start\"},nativeOn:{\"click\":function($event){$event.stopPropagation();}}},[_c('div',[(_vm.page === 'users')?_c('el-button',{staticClass:\"el-dropdown-link\",attrs:{\"type\":\"text\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.moderation'))+\"\\n \"),(_vm.isDesktop)?_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.page === 'userPage' || _vm.page === 'statusPage')?_c('el-button',{staticClass:\"moderate-user-button\"},[_c('span',{staticClass:\"moderate-user-button-container\"},[_c('span',[_c('i',{staticClass:\"el-icon-edit\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('users.moderateUser'))+\"\\n \")]),_vm._v(\" \"),_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"})])]):_vm._e()],1),_vm._v(\" \"),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[(_vm.showAdminAction(_vm.user))?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.toggleUserRight(_vm.user, 'admin')}}},[_vm._v(\"\\n \"+_vm._s(_vm.user.roles.admin ? _vm.$t('users.revokeAdmin') : _vm.$t('users.grantAdmin'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showAdminAction(_vm.user))?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.toggleUserRight(_vm.user, 'moderator')}}},[_vm._v(\"\\n \"+_vm._s(_vm.user.roles.moderator ? _vm.$t('users.revokeModerator') : _vm.$t('users.grantModerator'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showDeactivatedButton(_vm.user.id) && _vm.page !== 'statusPage')?_c('el-dropdown-item',{attrs:{\"divided\":_vm.showAdminAction(_vm.user)},nativeOn:{\"click\":function($event){return _vm.toggleActivation(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.user.deactivated ? _vm.$t('users.activateAccount') : _vm.$t('users.deactivateAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showDeactivatedButton(_vm.user.id) && _vm.page !== 'statusPage')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleDeletion(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.deleteAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.user.confirmation_pending)?_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.handleEmailConfirmation(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.confirmAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.user.confirmation_pending)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleConfirmationResend(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.resendConfirmation'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('force_nsfw') },attrs:{\"divided\":_vm.showAdminAction(_vm.user)},nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'force_nsfw')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.forceNsfw'))+\"\\n \"),(_vm.user.tags.includes('force_nsfw'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('strip_media') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'strip_media')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.stripMedia'))+\"\\n \"),(_vm.user.tags.includes('strip_media'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('force_unlisted') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'force_unlisted')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.forceUnlisted'))+\"\\n \"),(_vm.user.tags.includes('force_unlisted'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('sandbox') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'sandbox')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.sandbox'))+\"\\n \"),(_vm.user.tags.includes('sandbox'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('disable_remote_subscription') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'disable_remote_subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableRemoteSubscription'))+\"\\n \"),(_vm.user.tags.includes('disable_remote_subscription'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('disable_any_subscription') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'disable_any_subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableAnySubscription'))+\"\\n \"),(_vm.user.tags.includes('disable_any_subscription'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.getPasswordResetToken(_vm.user.nickname)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.getPasswordResetToken'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.requirePasswordReset(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.requirePasswordReset'))+\"\\n \")]):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./ModerationDropdown.vue?vue&type=template&id=25dd4f14&\"\nimport script from \"./ModerationDropdown.vue?vue&type=script&lang=js&\"\nexport * from \"./ModerationDropdown.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ModerationDropdown.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"ModerationDropdown.vue\"\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-143c.fc1825bf.js b/priv/static/adminfe/static/js/chunk-143c.fc1825bf.js new file mode 100644 index 000000000..6fbc5b1ed --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-143c.fc1825bf.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-143c"],{DrVa:function(t,e,r){"use strict";var n=r("t7J9");r.n(n).a},i7Kn:function(t,e,r){"use strict";var n=r("o0o1"),s=r.n(n),i=r("yXPU"),a=r.n(i),o={props:{selectedUsers:{type:Array,default:function(){return[]}}},computed:{showDropdownForMultipleUsers:function(){return this.$props.selectedUsers.length>0},isDesktop:function(){return"desktop"===this.$store.state.app.device}},methods:{mappers:function(){var t=this,e=function(){var e=a()(s.a.mark(function e(r,n){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,n(r);case 2:t.$emit("apply-action");case 3:case"end":return e.stop()}},e)}));return function(t,r){return e.apply(this,arguments)}}();return{grantRight:function(r){return function(){var n=function(){var e=a()(s.a.mark(function e(n){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$store.dispatch("AddRight",{users:n,right:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),i=t.selectedUsers.filter(function(e){return t.isLocalUser(e)&&!e.roles[r]&&t.$store.state.user.id!==e.id});e(i,n)}},revokeRight:function(r){return function(){var n=function(){var e=a()(s.a.mark(function e(n){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$store.dispatch("DeleteRight",{users:n,right:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),i=t.selectedUsers.filter(function(e){return t.isLocalUser(e)&&e.roles[r]&&t.$store.state.user.id!==e.id});e(i,n)}},activate:function(){var r=t.selectedUsers.filter(function(e){return e.nickname&&e.deactivated&&t.$store.state.user.id!==e.id});e(r,function(){var e=a()(s.a.mark(function e(r){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$store.dispatch("ActivateUsers",{users:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}())},deactivate:function(){var r=t.selectedUsers.filter(function(e){return e.nickname&&!e.deactivated&&t.$store.state.user.id!==e.id});e(r,function(){var e=a()(s.a.mark(function e(r){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$store.dispatch("DeactivateUsers",{users:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}())},remove:function(){var r=t.selectedUsers.filter(function(e){return e.nickname&&t.$store.state.user.id!==e.id});e(r,function(){var e=a()(s.a.mark(function e(r){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$store.dispatch("DeleteUsers",{users:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}())},addTag:function(r){return function(){var n=t.selectedUsers.filter(function(e){return"disable_remote_subscription"===r||"disable_any_subscription"===r?t.isLocalUser(e)&&!e.tags.includes(r):e.nickname&&!e.tags.includes(r)});e(n,function(){var e=a()(s.a.mark(function e(n){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$store.dispatch("AddTag",{users:n,tag:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}())}},removeTag:function(r){return a()(s.a.mark(function n(){var i;return s.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:i=t.selectedUsers.filter(function(e){return"disable_remote_subscription"===r||"disable_any_subscription"===r?t.isLocalUser(e)&&e.tags.includes(r):e.nickname&&e.tags.includes(r)}),e(i,function(){var e=a()(s.a.mark(function e(n){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$store.dispatch("RemoveTag",{users:n,tag:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}());case 3:case"end":return n.stop()}},n)}))},requirePasswordReset:function(){var r=t.selectedUsers.filter(function(e){return t.isLocalUser(e)});e(r,function(){var e=a()(s.a.mark(function e(r){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$store.dispatch("RequirePasswordReset",r);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}())},confirmAccounts:function(){var r=t.selectedUsers.filter(function(e){return t.isLocalUser(e)&&e.confirmation_pending});e(r,function(){var e=a()(s.a.mark(function e(r){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$store.dispatch("ConfirmUsersEmail",{users:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}())},resendConfirmation:function(){var r=t.selectedUsers.filter(function(e){return t.isLocalUser(e)&&e.confirmation_pending});e(r,function(){var e=a()(s.a.mark(function e(r){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$store.dispatch("ResendConfirmationEmail",r);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}())}}},isLocalUser:function(t){return t.nickname&&t.local},grantRightToMultipleUsers:function(t){var e=this.mappers().grantRight;this.confirmMessage(this.$t("users.grantRightConfirmation",{right:t}),e(t))},revokeRightFromMultipleUsers:function(t){var e=this.mappers().revokeRight;this.confirmMessage(this.$t("users.revokeRightConfirmation",{right:t}),e(t))},activateMultipleUsers:function(){var t=this.mappers().activate;this.confirmMessage(this.$t("users.activateMultipleUsersConfirmation"),t)},deactivateMultipleUsers:function(){var t=this.mappers().deactivate;this.confirmMessage(this.$t("users.deactivateMultipleUsersConfirmation"),t)},deleteMultipleUsers:function(){var t=this.mappers().remove;this.confirmMessage(this.$t("users.deleteMultipleUsersConfirmation"),t)},requirePasswordReset:function(){if(this.$store.state.user.nodeInfo.metadata.mailerEnabled){var t=this.mappers().requirePasswordReset;this.confirmMessage(this.$t("users.requirePasswordResetConfirmation"),t)}else this.$alert(this.$t("users.mailerMustBeEnabled"),"Error",{type:"error"})},addTagForMultipleUsers:function(t){var e=this.mappers().addTag;this.confirmMessage(this.$t("users.addTagForMultipleUsersConfirmation"),e(t))},removeTagFromMultipleUsers:function(t){var e=this.mappers().removeTag;this.confirmMessage(this.$t("users.removeTagFromMultipleUsersConfirmation"),e(t))},confirmAccountsForMultipleUsers:function(){var t=this.mappers().confirmAccounts;this.confirmMessage(this.$t("users.confirmAccountsConfirmation"),t)},resendConfirmationForMultipleUsers:function(){var t=this.mappers().resendConfirmation;this.confirmMessage(this.$t("users.resendEmailConfirmation"),t)},confirmMessage:function(t,e){var r=this;this.$confirm(t,{confirmButtonText:this.$t("users.ok"),cancelButtonText:this.$t("users.cancel"),type:"warning"}).then(function(){e()}).catch(function(){r.$message({type:"info",message:r.$t("users.canceled")})})}}},u=(r("DrVa"),r("KHd+")),c=Object(u.a)(o,function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("el-dropdown",{attrs:{size:"small",trigger:"click",placement:"bottom-start"}},[t.isDesktop?r("el-button",{staticClass:"actions-button"},[r("span",{staticClass:"actions-button-container"},[r("span",[r("i",{staticClass:"el-icon-edit"}),t._v("\n "+t._s(t.$t("users.moderateUsers"))+"\n ")]),t._v(" "),r("i",{staticClass:"el-icon-arrow-down el-icon--right"})])]):t._e(),t._v(" "),t.showDropdownForMultipleUsers?r("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[r("el-dropdown-item",{nativeOn:{click:function(e){return t.grantRightToMultipleUsers("admin")}}},[t._v("\n "+t._s(t.$t("users.grantAdmin"))+"\n ")]),t._v(" "),r("el-dropdown-item",{nativeOn:{click:function(e){return t.revokeRightFromMultipleUsers("admin")}}},[t._v("\n "+t._s(t.$t("users.revokeAdmin"))+"\n ")]),t._v(" "),r("el-dropdown-item",{nativeOn:{click:function(e){return t.grantRightToMultipleUsers("moderator")}}},[t._v("\n "+t._s(t.$t("users.grantModerator"))+"\n ")]),t._v(" "),r("el-dropdown-item",{nativeOn:{click:function(e){return t.revokeRightFromMultipleUsers("moderator")}}},[t._v("\n "+t._s(t.$t("users.revokeModerator"))+"\n ")]),t._v(" "),r("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(e){return t.confirmAccountsForMultipleUsers(e)}}},[t._v("\n "+t._s(t.$t("users.confirmAccounts"))+"\n ")]),t._v(" "),r("el-dropdown-item",{nativeOn:{click:function(e){return t.resendConfirmationForMultipleUsers(e)}}},[t._v("\n "+t._s(t.$t("users.resendConfirmation"))+"\n ")]),t._v(" "),r("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(e){return t.activateMultipleUsers(e)}}},[t._v("\n "+t._s(t.$t("users.activateAccounts"))+"\n ")]),t._v(" "),r("el-dropdown-item",{nativeOn:{click:function(e){return t.deactivateMultipleUsers(e)}}},[t._v("\n "+t._s(t.$t("users.deactivateAccounts"))+"\n ")]),t._v(" "),r("el-dropdown-item",{nativeOn:{click:function(e){return t.deleteMultipleUsers(e)}}},[t._v("\n "+t._s(t.$t("users.deleteAccounts"))+"\n ")]),t._v(" "),r("el-dropdown-item",{nativeOn:{click:function(e){return t.requirePasswordReset(e)}}},[t._v("\n "+t._s(t.$t("users.requirePasswordReset"))+"\n ")]),t._v(" "),r("el-dropdown-item",{staticClass:"no-hover",attrs:{divided:""}},[r("div",{staticClass:"tag-container"},[r("span",{staticClass:"tag-text"},[t._v(t._s(t.$t("users.forceNsfw")))]),t._v(" "),r("el-button-group",{staticClass:"tag-button-group"},[r("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.addTagForMultipleUsers("force_nsfw")}}},[t._v("\n "+t._s(t.$t("users.apply"))+"\n ")]),t._v(" "),r("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.removeTagFromMultipleUsers("force_nsfw")}}},[t._v("\n "+t._s(t.$t("users.remove"))+"\n ")])],1)],1)]),t._v(" "),r("el-dropdown-item",{staticClass:"no-hover"},[r("div",{staticClass:"tag-container"},[r("span",{staticClass:"tag-text"},[t._v(t._s(t.$t("users.stripMedia")))]),t._v(" "),r("el-button-group",{staticClass:"tag-button-group"},[r("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.addTagForMultipleUsers("strip_media")}}},[t._v("\n "+t._s(t.$t("users.apply"))+"\n ")]),t._v(" "),r("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.removeTagFromMultipleUsers("strip_media")}}},[t._v("\n "+t._s(t.$t("users.remove"))+"\n ")])],1)],1)]),t._v(" "),r("el-dropdown-item",{staticClass:"no-hover"},[r("div",{staticClass:"tag-container"},[r("span",{staticClass:"tag-text"},[t._v(t._s(t.$t("users.forceUnlisted")))]),t._v(" "),r("el-button-group",{staticClass:"tag-button-group"},[r("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.addTagForMultipleUsers("force_unlisted")}}},[t._v("\n "+t._s(t.$t("users.apply"))+"\n ")]),t._v(" "),r("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.removeTagFromMultipleUsers("force_unlisted")}}},[t._v("\n "+t._s(t.$t("users.remove"))+"\n ")])],1)],1)]),t._v(" "),r("el-dropdown-item",{staticClass:"no-hover"},[r("div",{staticClass:"tag-container"},[r("span",{staticClass:"tag-text"},[t._v(t._s(t.$t("users.sandbox")))]),t._v(" "),r("el-button-group",{staticClass:"tag-button-group"},[r("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.addTagForMultipleUsers("sandbox")}}},[t._v("\n "+t._s(t.$t("users.apply"))+"\n ")]),t._v(" "),r("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.removeTagFromMultipleUsers("sandbox")}}},[t._v("\n "+t._s(t.$t("users.remove"))+"\n ")])],1)],1)]),t._v(" "),r("el-dropdown-item",{staticClass:"no-hover"},[r("div",{staticClass:"tag-container"},[r("span",{staticClass:"tag-text"},[t._v(t._s(t.$t("users.disableRemoteSubscriptionForMultiple")))]),t._v(" "),r("el-button-group",{staticClass:"tag-button-group"},[r("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.addTagForMultipleUsers("disable_remote_subscription")}}},[t._v("\n "+t._s(t.$t("users.apply"))+"\n ")]),t._v(" "),r("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.removeTagFromMultipleUsers("disable_remote_subscription")}}},[t._v("\n "+t._s(t.$t("users.remove"))+"\n ")])],1)],1)]),t._v(" "),r("el-dropdown-item",{staticClass:"no-hover"},[r("div",{staticClass:"tag-container"},[r("span",{staticClass:"tag-text"},[t._v(t._s(t.$t("users.disableAnySubscriptionForMultiple")))]),t._v(" "),r("el-button-group",{staticClass:"tag-button-group"},[r("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.addTagForMultipleUsers("disable_any_subscription")}}},[t._v("\n "+t._s(t.$t("users.apply"))+"\n ")]),t._v(" "),r("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.removeTagFromMultipleUsers("disable_any_subscription")}}},[t._v("\n "+t._s(t.$t("users.remove"))+"\n ")])],1)],1)])],1):r("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[r("el-dropdown-item",[t._v("\n "+t._s(t.$t("users.selectUsers"))+"\n ")])],1)],1)},[],!1,null,"2d9f3c5e",null);c.options.__file="MultipleUsersMenu.vue";e.a=c.exports},t7J9:function(t,e,r){}}]); +//# sourceMappingURL=chunk-143c.fc1825bf.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-143c.fc1825bf.js.map b/priv/static/adminfe/static/js/chunk-143c.fc1825bf.js.map new file mode 100644 index 000000000..425a7427a --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-143c.fc1825bf.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/users/components/MultipleUsersMenu.vue?cba1","webpack:///./src/views/users/components/MultipleUsersMenu.vue?d017","webpack:///./src/views/users/components/MultipleUsersMenu.vue?56ef","webpack:///src/views/users/components/MultipleUsersMenu.vue","webpack:///./src/views/users/components/MultipleUsersMenu.vue"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_MultipleUsersMenu_vue_vue_type_style_index_0_id_2d9f3c5e_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","components_MultipleUsersMenuvue_type_script_lang_js_","props","selectedUsers","type","Array","default","computed","showDropdownForMultipleUsers","this","$props","length","isDesktop","$store","state","app","device","methods","mappers","_this","applyAction","_ref","asyncToGenerator_default","regenerator_default","a","mark","_callee","users","dispatchAction","wrap","_context","prev","next","$emit","stop","_x","_x2","apply","arguments","grantRight","right","addRightFn","_ref2","_callee2","_context2","dispatch","abrupt","sent","_x3","filtered","filter","user","isLocalUser","roles","id","revokeRight","deleteRightFn","_ref3","_callee3","_context3","_x4","activate","nickname","deactivated","_ref4","_callee4","_context4","_x5","deactivate","_ref5","_callee5","_context5","_x6","remove","_ref6","_callee6","_context6","_x7","addTag","tag","tags","includes","_ref7","_callee7","_context7","_x8","removeTag","_callee9","_context9","_ref9","_callee8","_context8","_x9","requirePasswordReset","_ref10","_callee10","_context10","_x10","confirmAccounts","confirmation_pending","_ref11","_callee11","_context11","_x11","resendConfirmation","_ref12","_callee12","_context12","_x12","local","grantRightToMultipleUsers","confirmMessage","$t","revokeRightFromMultipleUsers","activateMultipleUsers","deactivateMultipleUsers","deleteMultipleUsers","nodeInfo","metadata","mailerEnabled","$alert","addTagForMultipleUsers","removeTagFromMultipleUsers","confirmAccountsForMultipleUsers","resendConfirmationForMultipleUsers","message","_this2","$confirm","confirmButtonText","cancelButtonText","then","catch","$message","component","Object","componentNormalizer","_vm","_h","$createElement","_c","_self","attrs","size","trigger","placement","staticClass","_v","_s","_e","slot","nativeOn","click","$event","divided","options","__file","__webpack_exports__"],"mappings":"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","file":"static/js/chunk-143c.fc1825bf.js","sourcesContent":["import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MultipleUsersMenu.vue?vue&type=style&index=0&id=2d9f3c5e&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MultipleUsersMenu.vue?vue&type=style&index=0&id=2d9f3c5e&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dropdown',{attrs:{\"size\":\"small\",\"trigger\":\"click\",\"placement\":\"bottom-start\"}},[(_vm.isDesktop)?_c('el-button',{staticClass:\"actions-button\"},[_c('span',{staticClass:\"actions-button-container\"},[_c('span',[_c('i',{staticClass:\"el-icon-edit\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('users.moderateUsers'))+\"\\n \")]),_vm._v(\" \"),_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"})])]):_vm._e(),_vm._v(\" \"),(_vm.showDropdownForMultipleUsers)?_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.grantRightToMultipleUsers('admin')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.grantAdmin'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.revokeRightFromMultipleUsers('admin')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.revokeAdmin'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.grantRightToMultipleUsers('moderator')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.grantModerator'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.revokeRightFromMultipleUsers('moderator')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.revokeModerator'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.confirmAccountsForMultipleUsers($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.confirmAccounts'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.resendConfirmationForMultipleUsers($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.resendConfirmation'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.activateMultipleUsers($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.activateAccounts'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.deactivateMultipleUsers($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.deactivateAccounts'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.deleteMultipleUsers($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.deleteAccounts'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.requirePasswordReset($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.requirePasswordReset'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{staticClass:\"no-hover\",attrs:{\"divided\":\"\"}},[_c('div',{staticClass:\"tag-container\"},[_c('span',{staticClass:\"tag-text\"},[_vm._v(_vm._s(_vm.$t('users.forceNsfw')))]),_vm._v(\" \"),_c('el-button-group',{staticClass:\"tag-button-group\"},[_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.addTagForMultipleUsers('force_nsfw')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.apply'))+\"\\n \")]),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.removeTagFromMultipleUsers('force_nsfw')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.remove'))+\"\\n \")])],1)],1)]),_vm._v(\" \"),_c('el-dropdown-item',{staticClass:\"no-hover\"},[_c('div',{staticClass:\"tag-container\"},[_c('span',{staticClass:\"tag-text\"},[_vm._v(_vm._s(_vm.$t('users.stripMedia')))]),_vm._v(\" \"),_c('el-button-group',{staticClass:\"tag-button-group\"},[_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.addTagForMultipleUsers('strip_media')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.apply'))+\"\\n \")]),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.removeTagFromMultipleUsers('strip_media')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.remove'))+\"\\n \")])],1)],1)]),_vm._v(\" \"),_c('el-dropdown-item',{staticClass:\"no-hover\"},[_c('div',{staticClass:\"tag-container\"},[_c('span',{staticClass:\"tag-text\"},[_vm._v(_vm._s(_vm.$t('users.forceUnlisted')))]),_vm._v(\" \"),_c('el-button-group',{staticClass:\"tag-button-group\"},[_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.addTagForMultipleUsers('force_unlisted')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.apply'))+\"\\n \")]),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.removeTagFromMultipleUsers('force_unlisted')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.remove'))+\"\\n \")])],1)],1)]),_vm._v(\" \"),_c('el-dropdown-item',{staticClass:\"no-hover\"},[_c('div',{staticClass:\"tag-container\"},[_c('span',{staticClass:\"tag-text\"},[_vm._v(_vm._s(_vm.$t('users.sandbox')))]),_vm._v(\" \"),_c('el-button-group',{staticClass:\"tag-button-group\"},[_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.addTagForMultipleUsers('sandbox')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.apply'))+\"\\n \")]),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.removeTagFromMultipleUsers('sandbox')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.remove'))+\"\\n \")])],1)],1)]),_vm._v(\" \"),_c('el-dropdown-item',{staticClass:\"no-hover\"},[_c('div',{staticClass:\"tag-container\"},[_c('span',{staticClass:\"tag-text\"},[_vm._v(_vm._s(_vm.$t('users.disableRemoteSubscriptionForMultiple')))]),_vm._v(\" \"),_c('el-button-group',{staticClass:\"tag-button-group\"},[_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.addTagForMultipleUsers('disable_remote_subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.apply'))+\"\\n \")]),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.removeTagFromMultipleUsers('disable_remote_subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.remove'))+\"\\n \")])],1)],1)]),_vm._v(\" \"),_c('el-dropdown-item',{staticClass:\"no-hover\"},[_c('div',{staticClass:\"tag-container\"},[_c('span',{staticClass:\"tag-text\"},[_vm._v(_vm._s(_vm.$t('users.disableAnySubscriptionForMultiple')))]),_vm._v(\" \"),_c('el-button-group',{staticClass:\"tag-button-group\"},[_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.addTagForMultipleUsers('disable_any_subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.apply'))+\"\\n \")]),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.removeTagFromMultipleUsers('disable_any_subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.remove'))+\"\\n \")])],1)],1)])],1):_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[_c('el-dropdown-item',[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.selectUsers'))+\"\\n \")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MultipleUsersMenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MultipleUsersMenu.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./MultipleUsersMenu.vue?vue&type=template&id=2d9f3c5e&scoped=true&\"\nimport script from \"./MultipleUsersMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./MultipleUsersMenu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MultipleUsersMenu.vue?vue&type=style&index=0&id=2d9f3c5e&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2d9f3c5e\",\n null\n \n)\n\ncomponent.options.__file = \"MultipleUsersMenu.vue\"\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-1609.98da6b01.js b/priv/static/adminfe/static/js/chunk-1609.98da6b01.js new file mode 100644 index 000000000..29dbad261 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-1609.98da6b01.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-1609"],{"0M56":function(t,e,s){"use strict";var n=s("JV9I");s.n(n).a},"0tb0":function(t,e,s){"use strict";var n=s("n2GA");s.n(n).a},"9/5/":function(t,e,s){(function(e){var s="Expected a function",n=NaN,r="[object Symbol]",a=/^\s+|\s+$/g,o=/^[-+]0x[0-9a-f]+$/i,i=/^0b[01]+$/i,l=/^0o[0-7]+$/i,c=parseInt,u="object"==typeof e&&e&&e.Object===Object&&e,j="object"==typeof self&&self&&self.Object===Object&&self,d=u||j||Function("return this")(),m=Object.prototype.toString,p=Math.max,f=Math.min,g=function(){return d.Date.now()};function h(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function v(t){if("number"==typeof t)return t;if(function(t){return"symbol"==typeof t||function(t){return!!t&&"object"==typeof t}(t)&&m.call(t)==r}(t))return n;if(h(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=h(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(a,"");var s=i.test(t);return s||l.test(t)?c(t.slice(2),s?2:8):o.test(t)?n:+t}t.exports=function(t,e,n){var r,a,o,i,l,c,u=0,j=!1,d=!1,m=!0;if("function"!=typeof t)throw new TypeError(s);function b(e){var s=r,n=a;return r=a=void 0,u=e,i=t.apply(n,s)}function y(t){var s=t-c;return void 0===c||s>=e||s<0||d&&t-u>=o}function k(){var t=g();if(y(t))return x(t);l=setTimeout(k,function(t){var s=e-(t-c);return d?f(s,o-(t-u)):s}(t))}function x(t){return l=void 0,m&&r?b(t):(r=a=void 0,i)}function z(){var t=g(),s=y(t);if(r=arguments,a=this,c=t,s){if(void 0===l)return function(t){return u=t,l=setTimeout(k,e),j?b(t):i}(c);if(d)return l=setTimeout(k,e),b(c)}return void 0===l&&(l=setTimeout(k,e)),i}return e=v(e)||0,h(n)&&(j=!!n.leading,o=(d="maxWait"in n)?p(v(n.maxWait)||0,e):o,m="trailing"in n?!!n.trailing:m),z.cancel=function(){void 0!==l&&clearTimeout(l),u=0,r=c=a=l=void 0},z.flush=function(){return void 0===l?i:x(g())},z}}).call(this,s("yLpj"))},CmY0:function(t,e,s){"use strict";s.r(e);var n=s("wd/R"),r=s.n(n),a=s("LvDl"),o=s.n(a),i=s("9/5/"),l=s.n(i),c=s("rIUS"),u={name:"LogEntryMessage",props:{actor:{type:Object,required:!0},message:{type:String,required:!0}},computed:{logEntryMessage:function(){return this.message.split(this.actor.nickname)[1]}},methods:{propertyExists:function(t,e){return t[e]}}},j=(s("0tb0"),s("KHd+")),d=Object(j.a)(u,function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("span",[t.propertyExists(t.actor,"id")?s("router-link",{staticClass:"router-link",attrs:{to:{name:"UsersShow",params:{id:t.actor.id}}}},[t.propertyExists(t.actor,"nickname")?s("span",{staticStyle:{"font-weight":"600"}},[t._v("\n @"+t._s(t.actor.nickname)+"\n ")]):t._e()]):t._e(),t._v(" "),s("span",[t._v(t._s(t.logEntryMessage))])],1)},[],!1,null,null,null);d.options.__file="LogEntryMessage.vue";var m=d.exports,p={components:{RebootButton:c.a,LogEntryMessage:m},data:function(){return{dateRange:"",search:"",user:"",currentPage:1}},computed:{isMobile:function(){return"mobile"===this.$store.state.app.device},loading:function(){return this.$store.state.moderationLog.logLoading&&this.$store.state.moderationLog.adminsLoading},log:function(){return this.$store.state.moderationLog.fetchedLog},total:function(){return this.$store.state.moderationLog.logItemsCount},users:function(){return[{label:"Admins",options:this.$store.state.moderationLog.admins.users},{label:"Moderators",options:this.$store.state.moderationLog.moderators.users}]}},created:function(){var t=this;this.handleDebounceSearchInput=l()(function(e){t.fetchLogWithFilters()},500)},mounted:function(){this.$store.dispatch("GetNodeInfo"),this.$store.dispatch("NeedReboot"),this.$store.dispatch("FetchModerationLog"),this.$store.dispatch("FetchAdmins")},methods:{fetchLogWithFilters:function(){var t=o.a.omitBy({start_date:this.dateRange?this.dateRange[0].toISOString():null,end_date:this.dateRange?this.dateRange[1].toISOString():null,user_id:this.user,search:this.search,page:this.currentPage},function(t){return""===t||null===t});this.$store.dispatch("FetchModerationLog",t)},normalizeTimestamp:function(t){return r()(1e3*t).format("YYYY-MM-DD HH:mm")},propertyExists:function(t,e){return t[e]}}},f=(s("0M56"),Object(j.a)(p,function(){var t=this,e=t.$createElement,s=t._self._c||e;return t.loading?t._e():s("div",{staticClass:"moderation-log-container"},[s("div",{staticClass:"moderation-log-header-container"},[s("h1",[t._v(t._s(t.$t("moderationLog.moderationLog")))]),t._v(" "),s("reboot-button")],1),t._v(" "),s("div",{staticClass:"moderation-log-nav-container"},[s("el-select",{staticClass:"moderation-log-user-select",attrs:{clearable:"",placeholder:"Filter by admin/moderator"},on:{change:t.fetchLogWithFilters},model:{value:t.user,callback:function(e){t.user=e},expression:"user"}},t._l(t.users,function(e){return s("el-option-group",{key:e.label,attrs:{label:e.label}},t._l(e.options,function(t){return s("el-option",{key:t.id,attrs:{label:t.nickname,value:t.id}})}),1)}),1),t._v(" "),s("el-input",{staticClass:"moderation-log-search",attrs:{placeholder:"Search logs",clearable:""},on:{input:t.handleDebounceSearchInput},model:{value:t.search,callback:function(e){t.search=e},expression:"search"}})],1),t._v(" "),s("el-date-picker",{staticClass:"moderation-log-date-panel",attrs:{"default-time":["00:00:00","23:59:59"],type:"daterange","start-placeholder":"Start date","end-placeholder":"End date","unlink-panels":""},on:{change:t.fetchLogWithFilters},model:{value:t.dateRange,callback:function(e){t.dateRange=e},expression:"dateRange"}}),t._v(" "),s("el-timeline",t._l(t.log,function(e,n){return s("el-timeline-item",{key:n,attrs:{timestamp:t.normalizeTimestamp(e.time)}},[t.propertyExists(e.data.actor,"nickname")?s("log-entry-message",{attrs:{actor:e.data.actor,message:e.message}}):s("span",[t._v(t._s(e.message))])],1)}),1),t._v(" "),s("div",{staticClass:"pagination"},[s("el-pagination",{attrs:{"current-page":t.currentPage,"hide-on-single-page":!0,"page-size":50,total:t.total,small:t.isMobile,layout:"prev, pager, next"},on:{"update:currentPage":function(e){t.currentPage=e},"update:current-page":function(e){t.currentPage=e},"current-change":t.fetchLogWithFilters}})],1)],1)},[],!1,null,"60b585cf",null));f.options.__file="index.vue";e.default=f.exports},JV9I:function(t,e,s){},RnhZ:function(t,e,s){var n={"./af":"K/tc","./af.js":"K/tc","./ar":"jnO4","./ar-dz":"o1bE","./ar-dz.js":"o1bE","./ar-kw":"Qj4J","./ar-kw.js":"Qj4J","./ar-ly":"HP3h","./ar-ly.js":"HP3h","./ar-ma":"CoRJ","./ar-ma.js":"CoRJ","./ar-sa":"gjCT","./ar-sa.js":"gjCT","./ar-tn":"bYM6","./ar-tn.js":"bYM6","./ar.js":"jnO4","./az":"SFxW","./az.js":"SFxW","./be":"H8ED","./be.js":"H8ED","./bg":"hKrs","./bg.js":"hKrs","./bm":"p/rL","./bm.js":"p/rL","./bn":"kEOa","./bn.js":"kEOa","./bo":"0mo+","./bo.js":"0mo+","./br":"aIdf","./br.js":"aIdf","./bs":"JVSJ","./bs.js":"JVSJ","./ca":"1xZ4","./ca.js":"1xZ4","./cs":"PA2r","./cs.js":"PA2r","./cv":"A+xa","./cv.js":"A+xa","./cy":"l5ep","./cy.js":"l5ep","./da":"DxQv","./da.js":"DxQv","./de":"tGlX","./de-at":"s+uk","./de-at.js":"s+uk","./de-ch":"u3GI","./de-ch.js":"u3GI","./de.js":"tGlX","./dv":"WYrj","./dv.js":"WYrj","./el":"jUeY","./el.js":"jUeY","./en-SG":"zavE","./en-SG.js":"zavE","./en-au":"Dmvi","./en-au.js":"Dmvi","./en-ca":"OIYi","./en-ca.js":"OIYi","./en-gb":"Oaa7","./en-gb.js":"Oaa7","./en-ie":"4dOw","./en-ie.js":"4dOw","./en-il":"czMo","./en-il.js":"czMo","./en-nz":"b1Dy","./en-nz.js":"b1Dy","./eo":"Zduo","./eo.js":"Zduo","./es":"iYuL","./es-do":"CjzT","./es-do.js":"CjzT","./es-us":"Vclq","./es-us.js":"Vclq","./es.js":"iYuL","./et":"7BjC","./et.js":"7BjC","./eu":"D/JM","./eu.js":"D/JM","./fa":"jfSC","./fa.js":"jfSC","./fi":"gekB","./fi.js":"gekB","./fo":"ByF4","./fo.js":"ByF4","./fr":"nyYc","./fr-ca":"2fjn","./fr-ca.js":"2fjn","./fr-ch":"Dkky","./fr-ch.js":"Dkky","./fr.js":"nyYc","./fy":"cRix","./fy.js":"cRix","./ga":"USCx","./ga.js":"USCx","./gd":"9rRi","./gd.js":"9rRi","./gl":"iEDd","./gl.js":"iEDd","./gom-latn":"DKr+","./gom-latn.js":"DKr+","./gu":"4MV3","./gu.js":"4MV3","./he":"x6pH","./he.js":"x6pH","./hi":"3E1r","./hi.js":"3E1r","./hr":"S6ln","./hr.js":"S6ln","./hu":"WxRl","./hu.js":"WxRl","./hy-am":"1rYy","./hy-am.js":"1rYy","./id":"UDhR","./id.js":"UDhR","./is":"BVg3","./is.js":"BVg3","./it":"bpih","./it-ch":"bxKX","./it-ch.js":"bxKX","./it.js":"bpih","./ja":"B55N","./ja.js":"B55N","./jv":"tUCv","./jv.js":"tUCv","./ka":"IBtZ","./ka.js":"IBtZ","./kk":"bXm7","./kk.js":"bXm7","./km":"6B0Y","./km.js":"6B0Y","./kn":"PpIw","./kn.js":"PpIw","./ko":"Ivi+","./ko.js":"Ivi+","./ku":"JCF/","./ku.js":"JCF/","./ky":"lgnt","./ky.js":"lgnt","./lb":"RAwQ","./lb.js":"RAwQ","./lo":"sp3z","./lo.js":"sp3z","./lt":"JvlW","./lt.js":"JvlW","./lv":"uXwI","./lv.js":"uXwI","./me":"KTz0","./me.js":"KTz0","./mi":"aIsn","./mi.js":"aIsn","./mk":"aQkU","./mk.js":"aQkU","./ml":"AvvY","./ml.js":"AvvY","./mn":"lYtQ","./mn.js":"lYtQ","./mr":"Ob0Z","./mr.js":"Ob0Z","./ms":"6+QB","./ms-my":"ZAMP","./ms-my.js":"ZAMP","./ms.js":"6+QB","./mt":"G0Uy","./mt.js":"G0Uy","./my":"honF","./my.js":"honF","./nb":"bOMt","./nb.js":"bOMt","./ne":"OjkT","./ne.js":"OjkT","./nl":"+s0g","./nl-be":"2ykv","./nl-be.js":"2ykv","./nl.js":"+s0g","./nn":"uEye","./nn.js":"uEye","./pa-in":"8/+R","./pa-in.js":"8/+R","./pl":"jVdC","./pl.js":"jVdC","./pt":"8mBD","./pt-br":"0tRk","./pt-br.js":"0tRk","./pt.js":"8mBD","./ro":"lyxo","./ro.js":"lyxo","./ru":"lXzo","./ru.js":"lXzo","./sd":"Z4QM","./sd.js":"Z4QM","./se":"//9w","./se.js":"//9w","./si":"7aV9","./si.js":"7aV9","./sk":"e+ae","./sk.js":"e+ae","./sl":"gVVK","./sl.js":"gVVK","./sq":"yPMs","./sq.js":"yPMs","./sr":"zx6S","./sr-cyrl":"E+lV","./sr-cyrl.js":"E+lV","./sr.js":"zx6S","./ss":"Ur1D","./ss.js":"Ur1D","./sv":"X709","./sv.js":"X709","./sw":"dNwA","./sw.js":"dNwA","./ta":"PeUW","./ta.js":"PeUW","./te":"XLvN","./te.js":"XLvN","./tet":"V2x9","./tet.js":"V2x9","./tg":"Oxv6","./tg.js":"Oxv6","./th":"EOgW","./th.js":"EOgW","./tl-ph":"Dzi0","./tl-ph.js":"Dzi0","./tlh":"z3Vd","./tlh.js":"z3Vd","./tr":"DoHr","./tr.js":"DoHr","./tzl":"z1FC","./tzl.js":"z1FC","./tzm":"wQk9","./tzm-latn":"tT3J","./tzm-latn.js":"tT3J","./tzm.js":"wQk9","./ug-cn":"YRex","./ug-cn.js":"YRex","./uk":"raLr","./uk.js":"raLr","./ur":"UpQW","./ur.js":"UpQW","./uz":"Loxo","./uz-latn":"AQ68","./uz-latn.js":"AQ68","./uz.js":"Loxo","./vi":"KSF8","./vi.js":"KSF8","./x-pseudo":"/X5v","./x-pseudo.js":"/X5v","./yo":"fzPg","./yo.js":"fzPg","./zh-cn":"XDpg","./zh-cn.js":"XDpg","./zh-hk":"SatO","./zh-hk.js":"SatO","./zh-tw":"kOpN","./zh-tw.js":"kOpN"};function r(t){var e=a(t);return s(e)}function a(t){if(!s.o(n,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return n[t]}r.keys=function(){return Object.keys(n)},r.resolve=a,t.exports=r,r.id="RnhZ"},n2GA:function(t,e,s){}}]); +//# sourceMappingURL=chunk-1609.98da6b01.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-1609.98da6b01.js.map b/priv/static/adminfe/static/js/chunk-1609.98da6b01.js.map new file mode 100644 index 000000000..f287a503a --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-1609.98da6b01.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/moderation_log/index.vue?678d","webpack:///./src/views/moderation_log/LogEntryMessage.vue?45d8","webpack:///./node_modules/lodash.debounce/index.js","webpack:///./src/views/moderation_log/index.vue?f0fa","webpack:///./src/views/moderation_log/LogEntryMessage.vue?15ac","webpack:///src/views/moderation_log/LogEntryMessage.vue","webpack:///./src/views/moderation_log/LogEntryMessage.vue","webpack:///./src/views/moderation_log/LogEntryMessage.vue?cbf8","webpack:///./src/views/moderation_log/index.vue?bce9","webpack:///src/views/moderation_log/index.vue","webpack:///./src/views/moderation_log/index.vue","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_60b585cf_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_LogEntryMessage_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","global","FUNC_ERROR_TEXT","NAN","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","freeGlobal","Object","freeSelf","self","root","Function","objectToString","prototype","toString","nativeMax","Math","max","nativeMin","min","now","Date","isObject","value","type","toNumber","isObjectLike","call","isSymbol","other","valueOf","replace","isBinary","test","slice","module","exports","func","wait","options","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","args","thisArg","undefined","apply","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","setTimeout","remainingWait","debounced","isInvoking","arguments","this","leadingEdge","cancel","clearTimeout","flush","moderation_log_LogEntryMessagevue_type_script_lang_js_","name","props","actor","required","message","String","computed","logEntryMessage","split","nickname","methods","propertyExists","account","property","component","componentNormalizer","_vm","_h","$createElement","_c","_self","staticClass","attrs","to","params","id","staticStyle","font-weight","_v","_s","_e","__file","LogEntryMessage","views_moderation_logvue_type_script_lang_js_","components","RebootButton","data","dateRange","search","user","currentPage","isMobile","$store","state","app","device","loading","moderationLog","logLoading","adminsLoading","log","fetchedLog","total","logItemsCount","users","label","admins","moderators","created","_this","handleDebounceSearchInput","lodash_debounce_default","query","fetchLogWithFilters","mounted","dispatch","filters","lodash_default","a","omitBy","start_date","toISOString","end_date","user_id","page","val","normalizeTimestamp","timestamp","moment_default","format","moderation_log_component","$t","clearable","placeholder","on","change","model","callback","$$v","expression","_l","group","key","item","input","default-time","start-placeholder","end-placeholder","unlink-panels","logEntry","index","current-page","hide-on-single-page","page-size","small","layout","update:currentPage","$event","update:current-page","current-change","__webpack_exports__","map","./af","./af.js","./ar","./ar-dz","./ar-dz.js","./ar-kw","./ar-kw.js","./ar-ly","./ar-ly.js","./ar-ma","./ar-ma.js","./ar-sa","./ar-sa.js","./ar-tn","./ar-tn.js","./ar.js","./az","./az.js","./be","./be.js","./bg","./bg.js","./bm","./bm.js","./bn","./bn.js","./bo","./bo.js","./br","./br.js","./bs","./bs.js","./ca","./ca.js","./cs","./cs.js","./cv","./cv.js","./cy","./cy.js","./da","./da.js","./de","./de-at","./de-at.js","./de-ch","./de-ch.js","./de.js","./dv","./dv.js","./el","./el.js","./en-SG","./en-SG.js","./en-au","./en-au.js","./en-ca","./en-ca.js","./en-gb","./en-gb.js","./en-ie","./en-ie.js","./en-il","./en-il.js","./en-nz","./en-nz.js","./eo","./eo.js","./es","./es-do","./es-do.js","./es-us","./es-us.js","./es.js","./et","./et.js","./eu","./eu.js","./fa","./fa.js","./fi","./fi.js","./fo","./fo.js","./fr","./fr-ca","./fr-ca.js","./fr-ch","./fr-ch.js","./fr.js","./fy","./fy.js","./ga","./ga.js","./gd","./gd.js","./gl","./gl.js","./gom-latn","./gom-latn.js","./gu","./gu.js","./he","./he.js","./hi","./hi.js","./hr","./hr.js","./hu","./hu.js","./hy-am","./hy-am.js","./id","./id.js","./is","./is.js","./it","./it-ch","./it-ch.js","./it.js","./ja","./ja.js","./jv","./jv.js","./ka","./ka.js","./kk","./kk.js","./km","./km.js","./kn","./kn.js","./ko","./ko.js","./ku","./ku.js","./ky","./ky.js","./lb","./lb.js","./lo","./lo.js","./lt","./lt.js","./lv","./lv.js","./me","./me.js","./mi","./mi.js","./mk","./mk.js","./ml","./ml.js","./mn","./mn.js","./mr","./mr.js","./ms","./ms-my","./ms-my.js","./ms.js","./mt","./mt.js","./my","./my.js","./nb","./nb.js","./ne","./ne.js","./nl","./nl-be","./nl-be.js","./nl.js","./nn","./nn.js","./pa-in","./pa-in.js","./pl","./pl.js","./pt","./pt-br","./pt-br.js","./pt.js","./ro","./ro.js","./ru","./ru.js","./sd","./sd.js","./se","./se.js","./si","./si.js","./sk","./sk.js","./sl","./sl.js","./sq","./sq.js","./sr","./sr-cyrl","./sr-cyrl.js","./sr.js","./ss","./ss.js","./sv","./sv.js","./sw","./sw.js","./ta","./ta.js","./te","./te.js","./tet","./tet.js","./tg","./tg.js","./th","./th.js","./tl-ph","./tl-ph.js","./tlh","./tlh.js","./tr","./tr.js","./tzl","./tzl.js","./tzm","./tzm-latn","./tzm-latn.js","./tzm.js","./ug-cn","./ug-cn.js","./uk","./uk.js","./ur","./ur.js","./uz","./uz-latn","./uz-latn.js","./uz.js","./vi","./vi.js","./x-pseudo","./x-pseudo.js","./yo","./yo.js","./zh-cn","./zh-cn.js","./zh-hk","./zh-hk.js","./zh-tw","./zh-tw.js","webpackContext","req","webpackContextResolve","o","e","Error","code","keys","resolve"],"mappings":"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,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,YAAA,OACAC,eAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,QAAA,OACAC,WAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,QAAA,OACAC,WAAA,OACAC,OAAA,OACAC,UAAA,OACAC,QAAA,OACAC,WAAA,OACAC,QAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,WAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,YAAA,OACAC,eAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,QAIA,SAAAC,EAAAC,GACA,IAAAtV,EAAAuV,EAAAD,GACA,OAAA9b,EAAAwG,GAEA,SAAAuV,EAAAD,GACA,IAAA9b,EAAAgc,EAAAlQ,EAAAgQ,GAAA,CACA,IAAAG,EAAA,IAAAC,MAAA,uBAAAJ,EAAA,KAEA,MADAG,EAAAE,KAAA,mBACAF,EAEA,OAAAnQ,EAAAgQ,GAEAD,EAAAO,KAAA,WACA,OAAAtb,OAAAsb,KAAAtQ,IAEA+P,EAAAQ,QAAAN,EACArZ,EAAAC,QAAAkZ,EACAA,EAAArV,GAAA","file":"static/js/chunk-1609.98da6b01.js","sourcesContent":["import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=60b585cf&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=60b585cf&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LogEntryMessage.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LogEntryMessage.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"moderation-log-container\"},[_c('div',{staticClass:\"moderation-log-header-container\"},[_c('h1',[_vm._v(_vm._s(_vm.$t('moderationLog.moderationLog')))]),_vm._v(\" \"),_c('reboot-button')],1),_vm._v(\" \"),_c('div',{staticClass:\"moderation-log-nav-container\"},[_c('el-select',{staticClass:\"moderation-log-user-select\",attrs:{\"clearable\":\"\",\"placeholder\":\"Filter by admin/moderator\"},on:{\"change\":_vm.fetchLogWithFilters},model:{value:(_vm.user),callback:function ($$v) {_vm.user=$$v},expression:\"user\"}},_vm._l((_vm.users),function(group){return _c('el-option-group',{key:group.label,attrs:{\"label\":group.label}},_vm._l((group.options),function(item){return _c('el-option',{key:item.id,attrs:{\"label\":item.nickname,\"value\":item.id}})}),1)}),1),_vm._v(\" \"),_c('el-input',{staticClass:\"moderation-log-search\",attrs:{\"placeholder\":\"Search logs\",\"clearable\":\"\"},on:{\"input\":_vm.handleDebounceSearchInput},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1),_vm._v(\" \"),_c('el-date-picker',{staticClass:\"moderation-log-date-panel\",attrs:{\"default-time\":['00:00:00', '23:59:59'],\"type\":\"daterange\",\"start-placeholder\":\"Start date\",\"end-placeholder\":\"End date\",\"unlink-panels\":\"\"},on:{\"change\":_vm.fetchLogWithFilters},model:{value:(_vm.dateRange),callback:function ($$v) {_vm.dateRange=$$v},expression:\"dateRange\"}}),_vm._v(\" \"),_c('el-timeline',_vm._l((_vm.log),function(logEntry,index){return _c('el-timeline-item',{key:index,attrs:{\"timestamp\":_vm.normalizeTimestamp(logEntry.time)}},[(_vm.propertyExists(logEntry.data.actor, 'nickname'))?_c('log-entry-message',{attrs:{\"actor\":logEntry.data.actor,\"message\":logEntry.message}}):_c('span',[_vm._v(_vm._s(logEntry.message))])],1)}),1),_vm._v(\" \"),_c('div',{staticClass:\"pagination\"},[_c('el-pagination',{attrs:{\"current-page\":_vm.currentPage,\"hide-on-single-page\":true,\"page-size\":50,\"total\":_vm.total,\"small\":_vm.isMobile,\"layout\":\"prev, pager, next\"},on:{\"update:currentPage\":function($event){_vm.currentPage=$event},\"update:current-page\":function($event){_vm.currentPage=$event},\"current-change\":_vm.fetchLogWithFilters}})],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LogEntryMessage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LogEntryMessage.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./LogEntryMessage.vue?vue&type=template&id=da9d889c&\"\nimport script from \"./LogEntryMessage.vue?vue&type=script&lang=js&\"\nexport * from \"./LogEntryMessage.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LogEntryMessage.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"LogEntryMessage.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[(_vm.propertyExists(_vm.actor, 'id'))?_c('router-link',{staticClass:\"router-link\",attrs:{\"to\":{ name: 'UsersShow', params: { id: _vm.actor.id }}}},[(_vm.propertyExists(_vm.actor, 'nickname'))?_c('span',{staticStyle:{\"font-weight\":\"600\"}},[_vm._v(\"\\n @\"+_vm._s(_vm.actor.nickname)+\"\\n \")]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.logEntryMessage))])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=60b585cf&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=60b585cf&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"60b585cf\",\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","var map = {\n\t\"./af\": \"K/tc\",\n\t\"./af.js\": \"K/tc\",\n\t\"./ar\": \"jnO4\",\n\t\"./ar-dz\": \"o1bE\",\n\t\"./ar-dz.js\": \"o1bE\",\n\t\"./ar-kw\": \"Qj4J\",\n\t\"./ar-kw.js\": \"Qj4J\",\n\t\"./ar-ly\": \"HP3h\",\n\t\"./ar-ly.js\": \"HP3h\",\n\t\"./ar-ma\": \"CoRJ\",\n\t\"./ar-ma.js\": \"CoRJ\",\n\t\"./ar-sa\": \"gjCT\",\n\t\"./ar-sa.js\": \"gjCT\",\n\t\"./ar-tn\": \"bYM6\",\n\t\"./ar-tn.js\": \"bYM6\",\n\t\"./ar.js\": \"jnO4\",\n\t\"./az\": \"SFxW\",\n\t\"./az.js\": \"SFxW\",\n\t\"./be\": \"H8ED\",\n\t\"./be.js\": \"H8ED\",\n\t\"./bg\": \"hKrs\",\n\t\"./bg.js\": \"hKrs\",\n\t\"./bm\": \"p/rL\",\n\t\"./bm.js\": \"p/rL\",\n\t\"./bn\": \"kEOa\",\n\t\"./bn.js\": \"kEOa\",\n\t\"./bo\": \"0mo+\",\n\t\"./bo.js\": \"0mo+\",\n\t\"./br\": \"aIdf\",\n\t\"./br.js\": \"aIdf\",\n\t\"./bs\": \"JVSJ\",\n\t\"./bs.js\": \"JVSJ\",\n\t\"./ca\": \"1xZ4\",\n\t\"./ca.js\": \"1xZ4\",\n\t\"./cs\": \"PA2r\",\n\t\"./cs.js\": \"PA2r\",\n\t\"./cv\": \"A+xa\",\n\t\"./cv.js\": \"A+xa\",\n\t\"./cy\": \"l5ep\",\n\t\"./cy.js\": \"l5ep\",\n\t\"./da\": \"DxQv\",\n\t\"./da.js\": \"DxQv\",\n\t\"./de\": \"tGlX\",\n\t\"./de-at\": \"s+uk\",\n\t\"./de-at.js\": \"s+uk\",\n\t\"./de-ch\": \"u3GI\",\n\t\"./de-ch.js\": \"u3GI\",\n\t\"./de.js\": \"tGlX\",\n\t\"./dv\": \"WYrj\",\n\t\"./dv.js\": \"WYrj\",\n\t\"./el\": \"jUeY\",\n\t\"./el.js\": \"jUeY\",\n\t\"./en-SG\": \"zavE\",\n\t\"./en-SG.js\": \"zavE\",\n\t\"./en-au\": \"Dmvi\",\n\t\"./en-au.js\": \"Dmvi\",\n\t\"./en-ca\": \"OIYi\",\n\t\"./en-ca.js\": \"OIYi\",\n\t\"./en-gb\": \"Oaa7\",\n\t\"./en-gb.js\": \"Oaa7\",\n\t\"./en-ie\": \"4dOw\",\n\t\"./en-ie.js\": \"4dOw\",\n\t\"./en-il\": \"czMo\",\n\t\"./en-il.js\": \"czMo\",\n\t\"./en-nz\": \"b1Dy\",\n\t\"./en-nz.js\": \"b1Dy\",\n\t\"./eo\": \"Zduo\",\n\t\"./eo.js\": \"Zduo\",\n\t\"./es\": \"iYuL\",\n\t\"./es-do\": \"CjzT\",\n\t\"./es-do.js\": \"CjzT\",\n\t\"./es-us\": \"Vclq\",\n\t\"./es-us.js\": \"Vclq\",\n\t\"./es.js\": \"iYuL\",\n\t\"./et\": \"7BjC\",\n\t\"./et.js\": \"7BjC\",\n\t\"./eu\": \"D/JM\",\n\t\"./eu.js\": \"D/JM\",\n\t\"./fa\": \"jfSC\",\n\t\"./fa.js\": \"jfSC\",\n\t\"./fi\": \"gekB\",\n\t\"./fi.js\": \"gekB\",\n\t\"./fo\": \"ByF4\",\n\t\"./fo.js\": \"ByF4\",\n\t\"./fr\": \"nyYc\",\n\t\"./fr-ca\": \"2fjn\",\n\t\"./fr-ca.js\": \"2fjn\",\n\t\"./fr-ch\": \"Dkky\",\n\t\"./fr-ch.js\": \"Dkky\",\n\t\"./fr.js\": \"nyYc\",\n\t\"./fy\": \"cRix\",\n\t\"./fy.js\": \"cRix\",\n\t\"./ga\": \"USCx\",\n\t\"./ga.js\": \"USCx\",\n\t\"./gd\": \"9rRi\",\n\t\"./gd.js\": \"9rRi\",\n\t\"./gl\": \"iEDd\",\n\t\"./gl.js\": \"iEDd\",\n\t\"./gom-latn\": \"DKr+\",\n\t\"./gom-latn.js\": \"DKr+\",\n\t\"./gu\": \"4MV3\",\n\t\"./gu.js\": \"4MV3\",\n\t\"./he\": \"x6pH\",\n\t\"./he.js\": \"x6pH\",\n\t\"./hi\": \"3E1r\",\n\t\"./hi.js\": \"3E1r\",\n\t\"./hr\": \"S6ln\",\n\t\"./hr.js\": \"S6ln\",\n\t\"./hu\": \"WxRl\",\n\t\"./hu.js\": \"WxRl\",\n\t\"./hy-am\": \"1rYy\",\n\t\"./hy-am.js\": \"1rYy\",\n\t\"./id\": \"UDhR\",\n\t\"./id.js\": \"UDhR\",\n\t\"./is\": \"BVg3\",\n\t\"./is.js\": \"BVg3\",\n\t\"./it\": \"bpih\",\n\t\"./it-ch\": \"bxKX\",\n\t\"./it-ch.js\": \"bxKX\",\n\t\"./it.js\": \"bpih\",\n\t\"./ja\": \"B55N\",\n\t\"./ja.js\": \"B55N\",\n\t\"./jv\": \"tUCv\",\n\t\"./jv.js\": \"tUCv\",\n\t\"./ka\": \"IBtZ\",\n\t\"./ka.js\": \"IBtZ\",\n\t\"./kk\": \"bXm7\",\n\t\"./kk.js\": \"bXm7\",\n\t\"./km\": \"6B0Y\",\n\t\"./km.js\": \"6B0Y\",\n\t\"./kn\": \"PpIw\",\n\t\"./kn.js\": \"PpIw\",\n\t\"./ko\": \"Ivi+\",\n\t\"./ko.js\": \"Ivi+\",\n\t\"./ku\": \"JCF/\",\n\t\"./ku.js\": \"JCF/\",\n\t\"./ky\": \"lgnt\",\n\t\"./ky.js\": \"lgnt\",\n\t\"./lb\": \"RAwQ\",\n\t\"./lb.js\": \"RAwQ\",\n\t\"./lo\": \"sp3z\",\n\t\"./lo.js\": \"sp3z\",\n\t\"./lt\": \"JvlW\",\n\t\"./lt.js\": \"JvlW\",\n\t\"./lv\": \"uXwI\",\n\t\"./lv.js\": \"uXwI\",\n\t\"./me\": \"KTz0\",\n\t\"./me.js\": \"KTz0\",\n\t\"./mi\": \"aIsn\",\n\t\"./mi.js\": \"aIsn\",\n\t\"./mk\": \"aQkU\",\n\t\"./mk.js\": \"aQkU\",\n\t\"./ml\": \"AvvY\",\n\t\"./ml.js\": \"AvvY\",\n\t\"./mn\": \"lYtQ\",\n\t\"./mn.js\": \"lYtQ\",\n\t\"./mr\": \"Ob0Z\",\n\t\"./mr.js\": \"Ob0Z\",\n\t\"./ms\": \"6+QB\",\n\t\"./ms-my\": \"ZAMP\",\n\t\"./ms-my.js\": \"ZAMP\",\n\t\"./ms.js\": \"6+QB\",\n\t\"./mt\": \"G0Uy\",\n\t\"./mt.js\": \"G0Uy\",\n\t\"./my\": \"honF\",\n\t\"./my.js\": \"honF\",\n\t\"./nb\": \"bOMt\",\n\t\"./nb.js\": \"bOMt\",\n\t\"./ne\": \"OjkT\",\n\t\"./ne.js\": \"OjkT\",\n\t\"./nl\": \"+s0g\",\n\t\"./nl-be\": \"2ykv\",\n\t\"./nl-be.js\": \"2ykv\",\n\t\"./nl.js\": \"+s0g\",\n\t\"./nn\": \"uEye\",\n\t\"./nn.js\": \"uEye\",\n\t\"./pa-in\": \"8/+R\",\n\t\"./pa-in.js\": \"8/+R\",\n\t\"./pl\": \"jVdC\",\n\t\"./pl.js\": \"jVdC\",\n\t\"./pt\": \"8mBD\",\n\t\"./pt-br\": \"0tRk\",\n\t\"./pt-br.js\": \"0tRk\",\n\t\"./pt.js\": \"8mBD\",\n\t\"./ro\": \"lyxo\",\n\t\"./ro.js\": \"lyxo\",\n\t\"./ru\": \"lXzo\",\n\t\"./ru.js\": \"lXzo\",\n\t\"./sd\": \"Z4QM\",\n\t\"./sd.js\": \"Z4QM\",\n\t\"./se\": \"//9w\",\n\t\"./se.js\": \"//9w\",\n\t\"./si\": \"7aV9\",\n\t\"./si.js\": \"7aV9\",\n\t\"./sk\": \"e+ae\",\n\t\"./sk.js\": \"e+ae\",\n\t\"./sl\": \"gVVK\",\n\t\"./sl.js\": \"gVVK\",\n\t\"./sq\": \"yPMs\",\n\t\"./sq.js\": \"yPMs\",\n\t\"./sr\": \"zx6S\",\n\t\"./sr-cyrl\": \"E+lV\",\n\t\"./sr-cyrl.js\": \"E+lV\",\n\t\"./sr.js\": \"zx6S\",\n\t\"./ss\": \"Ur1D\",\n\t\"./ss.js\": \"Ur1D\",\n\t\"./sv\": \"X709\",\n\t\"./sv.js\": \"X709\",\n\t\"./sw\": \"dNwA\",\n\t\"./sw.js\": \"dNwA\",\n\t\"./ta\": \"PeUW\",\n\t\"./ta.js\": \"PeUW\",\n\t\"./te\": \"XLvN\",\n\t\"./te.js\": \"XLvN\",\n\t\"./tet\": \"V2x9\",\n\t\"./tet.js\": \"V2x9\",\n\t\"./tg\": \"Oxv6\",\n\t\"./tg.js\": \"Oxv6\",\n\t\"./th\": \"EOgW\",\n\t\"./th.js\": \"EOgW\",\n\t\"./tl-ph\": \"Dzi0\",\n\t\"./tl-ph.js\": \"Dzi0\",\n\t\"./tlh\": \"z3Vd\",\n\t\"./tlh.js\": \"z3Vd\",\n\t\"./tr\": \"DoHr\",\n\t\"./tr.js\": \"DoHr\",\n\t\"./tzl\": \"z1FC\",\n\t\"./tzl.js\": \"z1FC\",\n\t\"./tzm\": \"wQk9\",\n\t\"./tzm-latn\": \"tT3J\",\n\t\"./tzm-latn.js\": \"tT3J\",\n\t\"./tzm.js\": \"wQk9\",\n\t\"./ug-cn\": \"YRex\",\n\t\"./ug-cn.js\": \"YRex\",\n\t\"./uk\": \"raLr\",\n\t\"./uk.js\": \"raLr\",\n\t\"./ur\": \"UpQW\",\n\t\"./ur.js\": \"UpQW\",\n\t\"./uz\": \"Loxo\",\n\t\"./uz-latn\": \"AQ68\",\n\t\"./uz-latn.js\": \"AQ68\",\n\t\"./uz.js\": \"Loxo\",\n\t\"./vi\": \"KSF8\",\n\t\"./vi.js\": \"KSF8\",\n\t\"./x-pseudo\": \"/X5v\",\n\t\"./x-pseudo.js\": \"/X5v\",\n\t\"./yo\": \"fzPg\",\n\t\"./yo.js\": \"fzPg\",\n\t\"./zh-cn\": \"XDpg\",\n\t\"./zh-cn.js\": \"XDpg\",\n\t\"./zh-hk\": \"SatO\",\n\t\"./zh-hk.js\": \"SatO\",\n\t\"./zh-tw\": \"kOpN\",\n\t\"./zh-tw.js\": \"kOpN\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"RnhZ\";"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-176e.c4995511.js b/priv/static/adminfe/static/js/chunk-176e.c4995511.js new file mode 100644 index 000000000..80474b904 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-176e.c4995511.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-176e"],{FtQ1:function(s,t,e){"use strict";e.r(t);var a=e("RIqP"),n=e.n(a),i=e("i7Kn"),o=e("ot3S"),r=e("rIUS"),c=e("ZhIB"),u=e.n(c),l={name:"Statuses",components:{MultipleUsersMenu:i.a,RebootButton:r.a,Status:o.a},data:function(){return{selectedUsers:[]}},computed:{allLoaded:function(){return this.$store.state.status.statusesByInstance.allLoaded},buttonLoading:function(){return this.$store.state.status.statusesByInstance.buttonLoading},currentInstance:function(){return this.selectedInstance===this.$store.state.user.authHost},instances:function(){return[this.$store.state.user.authHost].concat(n()(this.$store.state.peers.fetchedPeers))},isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device},isTablet:function(){return"tablet"===this.$store.state.app.device},loadingPeers:function(){return this.$store.state.peers.loading},page:function(){return this.$store.state.status.statusesByInstance.page},pageSize:function(){return this.$store.state.status.statusesByInstance.pageSize},selectedInstance:{get:function(){return this.$store.state.status.statusesByInstance.selectedInstance},set:function(s){this.$store.dispatch("HandleFilterChange",s)}},showLocal:{get:function(){return this.$store.state.status.statusesByInstance.showLocal},set:function(s){this.$store.dispatch("HandleLocalCheckboxChange",s)}},showPrivate:{get:function(){return this.$store.state.status.statusesByInstance.showPrivate},set:function(s){this.$store.dispatch("HandleGodmodeCheckboxChange",s)}},statuses:function(){return this.$store.state.status.fetchedStatuses},statusVisibility:function(){return this.$store.state.status.statusVisibility}},mounted:function(){this.$store.dispatch("GetNodeInfo"),this.$store.dispatch("NeedReboot"),this.$store.dispatch("FetchPeers"),this.$store.dispatch("FetchStatusesCount")},destroyed:function(){this.clearSelection(),this.$store.dispatch("ClearState")},methods:{clearSelection:function(){this.selectedUsers=[]},handleFilterChange:function(){this.$store.dispatch("HandlePageChange",1),this.$store.dispatch("FetchStatusesByInstance")},handleLoadMore:function(){this.$store.dispatch("HandlePageChange",this.page+1),this.$store.dispatch("FetchStatusesPageByInstance")},handleStatusSelection:function(s){void 0===this.selectedUsers.find(function(t){return s.id===t.id})&&(this.selectedUsers=[].concat(n()(this.selectedUsers),[s]))},normalizedCount:function(s){return u()(s).format("0a")}}},j=(e("QOJ7"),e("KHd+")),h=Object(j.a)(l,function(){var s=this,t=s.$createElement,e=s._self._c||t;return s.loadingPeers?s._e():e("div",{staticClass:"statuses-container"},[e("div",{staticClass:"statuses-header"},[e("h1",[s._v("\n "+s._s(s.$t("statuses.statuses"))+"\n ")]),s._v(" "),e("reboot-button")],1),s._v(" "),e("div",{staticClass:"statuses-header-container"},[e("el-button-group",[e("el-button",{staticClass:"direct-button",attrs:{plain:""}},[s._v("\n "+s._s(s.$t("statuses.direct"))+": "+s._s(s.normalizedCount(s.statusVisibility.direct))+"\n ")]),s._v(" "),e("el-button",{staticClass:"private-button",attrs:{plain:""}},[s._v("\n "+s._s(s.$t("statuses.private"))+": "+s._s(s.normalizedCount(s.statusVisibility.private))+"\n ")]),s._v(" "),e("el-button",{staticClass:"public-button",attrs:{plain:""}},[s._v("\n "+s._s(s.$t("statuses.public"))+": "+s._s(s.normalizedCount(s.statusVisibility.public))+"\n ")]),s._v(" "),e("el-button",{staticClass:"unlisted-button",attrs:{plain:""}},[s._v("\n "+s._s(s.$t("statuses.unlisted"))+": "+s._s(s.normalizedCount(s.statusVisibility.unlisted))+"\n ")])],1)],1),s._v(" "),e("div",{staticClass:"filter-container"},[e("el-select",{staticClass:"select-instance",attrs:{placeholder:s.$t("statuses.instanceFilter"),"no-data-text":s.$t("statuses.noInstances"),filterable:"",clearable:""},on:{change:s.handleFilterChange},model:{value:s.selectedInstance,callback:function(t){s.selectedInstance=t},expression:"selectedInstance"}},s._l(s.instances,function(s,t){return e("el-option",{key:t,attrs:{label:s,value:s}})}),1),s._v(" "),e("multiple-users-menu",{attrs:{"selected-users":s.selectedUsers},on:{"apply-action":s.clearSelection}})],1),s._v(" "),s.currentInstance?e("div",{staticClass:"checkbox-container"},[e("el-checkbox",{staticClass:"show-private-statuses",model:{value:s.showLocal,callback:function(t){s.showLocal=t},expression:"showLocal"}},[s._v("\n "+s._s(s.$t("statuses.onlyLocalStatuses"))+"\n ")]),s._v(" "),e("el-checkbox",{staticClass:"show-private-statuses",model:{value:s.showPrivate,callback:function(t){s.showPrivate=t},expression:"showPrivate"}},[s._v("\n "+s._s(s.$t("statuses.showPrivateStatuses"))+"\n ")])],1):s._e(),s._v(" "),0===s.statuses.length?e("p",{staticClass:"no-statuses"},[s._v(s._s(s.$t("userProfile.noStatuses")))]):s._e(),s._v(" "),s._l(s.statuses,function(t){return e("div",{key:t.id,staticClass:"status-container"},[e("status",{attrs:{status:t,account:t.account,"show-checkbox":s.isDesktop,"fetch-statuses-by-instance":!0},on:{"status-selection":s.handleStatusSelection}})],1)}),s._v(" "),s.statuses.length>0?e("div",{staticClass:"statuses-pagination"},[s.allLoaded?e("el-button",{attrs:{icon:"el-icon-check",circle:""}}):e("el-button",{attrs:{loading:s.buttonLoading},on:{click:s.handleLoadMore}},[s._v(s._s(s.$t("statuses.loadMore")))])],1):s._e()],2)},[],!1,null,null,null);h.options.__file="index.vue";t.default=h.exports},KmHg:function(s,t,e){},QOJ7:function(s,t,e){"use strict";var a=e("KmHg");e.n(a).a},RnhZ:function(s,t,e){var a={"./af":"K/tc","./af.js":"K/tc","./ar":"jnO4","./ar-dz":"o1bE","./ar-dz.js":"o1bE","./ar-kw":"Qj4J","./ar-kw.js":"Qj4J","./ar-ly":"HP3h","./ar-ly.js":"HP3h","./ar-ma":"CoRJ","./ar-ma.js":"CoRJ","./ar-sa":"gjCT","./ar-sa.js":"gjCT","./ar-tn":"bYM6","./ar-tn.js":"bYM6","./ar.js":"jnO4","./az":"SFxW","./az.js":"SFxW","./be":"H8ED","./be.js":"H8ED","./bg":"hKrs","./bg.js":"hKrs","./bm":"p/rL","./bm.js":"p/rL","./bn":"kEOa","./bn.js":"kEOa","./bo":"0mo+","./bo.js":"0mo+","./br":"aIdf","./br.js":"aIdf","./bs":"JVSJ","./bs.js":"JVSJ","./ca":"1xZ4","./ca.js":"1xZ4","./cs":"PA2r","./cs.js":"PA2r","./cv":"A+xa","./cv.js":"A+xa","./cy":"l5ep","./cy.js":"l5ep","./da":"DxQv","./da.js":"DxQv","./de":"tGlX","./de-at":"s+uk","./de-at.js":"s+uk","./de-ch":"u3GI","./de-ch.js":"u3GI","./de.js":"tGlX","./dv":"WYrj","./dv.js":"WYrj","./el":"jUeY","./el.js":"jUeY","./en-SG":"zavE","./en-SG.js":"zavE","./en-au":"Dmvi","./en-au.js":"Dmvi","./en-ca":"OIYi","./en-ca.js":"OIYi","./en-gb":"Oaa7","./en-gb.js":"Oaa7","./en-ie":"4dOw","./en-ie.js":"4dOw","./en-il":"czMo","./en-il.js":"czMo","./en-nz":"b1Dy","./en-nz.js":"b1Dy","./eo":"Zduo","./eo.js":"Zduo","./es":"iYuL","./es-do":"CjzT","./es-do.js":"CjzT","./es-us":"Vclq","./es-us.js":"Vclq","./es.js":"iYuL","./et":"7BjC","./et.js":"7BjC","./eu":"D/JM","./eu.js":"D/JM","./fa":"jfSC","./fa.js":"jfSC","./fi":"gekB","./fi.js":"gekB","./fo":"ByF4","./fo.js":"ByF4","./fr":"nyYc","./fr-ca":"2fjn","./fr-ca.js":"2fjn","./fr-ch":"Dkky","./fr-ch.js":"Dkky","./fr.js":"nyYc","./fy":"cRix","./fy.js":"cRix","./ga":"USCx","./ga.js":"USCx","./gd":"9rRi","./gd.js":"9rRi","./gl":"iEDd","./gl.js":"iEDd","./gom-latn":"DKr+","./gom-latn.js":"DKr+","./gu":"4MV3","./gu.js":"4MV3","./he":"x6pH","./he.js":"x6pH","./hi":"3E1r","./hi.js":"3E1r","./hr":"S6ln","./hr.js":"S6ln","./hu":"WxRl","./hu.js":"WxRl","./hy-am":"1rYy","./hy-am.js":"1rYy","./id":"UDhR","./id.js":"UDhR","./is":"BVg3","./is.js":"BVg3","./it":"bpih","./it-ch":"bxKX","./it-ch.js":"bxKX","./it.js":"bpih","./ja":"B55N","./ja.js":"B55N","./jv":"tUCv","./jv.js":"tUCv","./ka":"IBtZ","./ka.js":"IBtZ","./kk":"bXm7","./kk.js":"bXm7","./km":"6B0Y","./km.js":"6B0Y","./kn":"PpIw","./kn.js":"PpIw","./ko":"Ivi+","./ko.js":"Ivi+","./ku":"JCF/","./ku.js":"JCF/","./ky":"lgnt","./ky.js":"lgnt","./lb":"RAwQ","./lb.js":"RAwQ","./lo":"sp3z","./lo.js":"sp3z","./lt":"JvlW","./lt.js":"JvlW","./lv":"uXwI","./lv.js":"uXwI","./me":"KTz0","./me.js":"KTz0","./mi":"aIsn","./mi.js":"aIsn","./mk":"aQkU","./mk.js":"aQkU","./ml":"AvvY","./ml.js":"AvvY","./mn":"lYtQ","./mn.js":"lYtQ","./mr":"Ob0Z","./mr.js":"Ob0Z","./ms":"6+QB","./ms-my":"ZAMP","./ms-my.js":"ZAMP","./ms.js":"6+QB","./mt":"G0Uy","./mt.js":"G0Uy","./my":"honF","./my.js":"honF","./nb":"bOMt","./nb.js":"bOMt","./ne":"OjkT","./ne.js":"OjkT","./nl":"+s0g","./nl-be":"2ykv","./nl-be.js":"2ykv","./nl.js":"+s0g","./nn":"uEye","./nn.js":"uEye","./pa-in":"8/+R","./pa-in.js":"8/+R","./pl":"jVdC","./pl.js":"jVdC","./pt":"8mBD","./pt-br":"0tRk","./pt-br.js":"0tRk","./pt.js":"8mBD","./ro":"lyxo","./ro.js":"lyxo","./ru":"lXzo","./ru.js":"lXzo","./sd":"Z4QM","./sd.js":"Z4QM","./se":"//9w","./se.js":"//9w","./si":"7aV9","./si.js":"7aV9","./sk":"e+ae","./sk.js":"e+ae","./sl":"gVVK","./sl.js":"gVVK","./sq":"yPMs","./sq.js":"yPMs","./sr":"zx6S","./sr-cyrl":"E+lV","./sr-cyrl.js":"E+lV","./sr.js":"zx6S","./ss":"Ur1D","./ss.js":"Ur1D","./sv":"X709","./sv.js":"X709","./sw":"dNwA","./sw.js":"dNwA","./ta":"PeUW","./ta.js":"PeUW","./te":"XLvN","./te.js":"XLvN","./tet":"V2x9","./tet.js":"V2x9","./tg":"Oxv6","./tg.js":"Oxv6","./th":"EOgW","./th.js":"EOgW","./tl-ph":"Dzi0","./tl-ph.js":"Dzi0","./tlh":"z3Vd","./tlh.js":"z3Vd","./tr":"DoHr","./tr.js":"DoHr","./tzl":"z1FC","./tzl.js":"z1FC","./tzm":"wQk9","./tzm-latn":"tT3J","./tzm-latn.js":"tT3J","./tzm.js":"wQk9","./ug-cn":"YRex","./ug-cn.js":"YRex","./uk":"raLr","./uk.js":"raLr","./ur":"UpQW","./ur.js":"UpQW","./uz":"Loxo","./uz-latn":"AQ68","./uz-latn.js":"AQ68","./uz.js":"Loxo","./vi":"KSF8","./vi.js":"KSF8","./x-pseudo":"/X5v","./x-pseudo.js":"/X5v","./yo":"fzPg","./yo.js":"fzPg","./zh-cn":"XDpg","./zh-cn.js":"XDpg","./zh-hk":"SatO","./zh-hk.js":"SatO","./zh-tw":"kOpN","./zh-tw.js":"kOpN"};function n(s){var t=i(s);return e(t)}function i(s){if(!e.o(a,s)){var t=new Error("Cannot find module '"+s+"'");throw t.code="MODULE_NOT_FOUND",t}return a[s]}n.keys=function(){return Object.keys(a)},n.resolve=i,s.exports=n,n.id="RnhZ"}}]); +//# sourceMappingURL=chunk-176e.c4995511.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-176e.c4995511.js.map b/priv/static/adminfe/static/js/chunk-176e.c4995511.js.map new file mode 100644 index 000000000..f0caa5f62 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-176e.c4995511.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/statuses/index.vue?ffa7","webpack:///./src/views/statuses/index.vue?1423","webpack:///src/views/statuses/index.vue","webpack:///./src/views/statuses/index.vue","webpack:///./src/views/statuses/index.vue?f25c","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$"],"names":["views_statusesvue_type_script_lang_js_","name","components","MultipleUsersMenu","RebootButton","Status","data","selectedUsers","computed","allLoaded","this","$store","state","status","statusesByInstance","buttonLoading","currentInstance","selectedInstance","user","authHost","instances","concat","toConsumableArray_default","peers","fetchedPeers","isDesktop","app","device","isMobile","isTablet","loadingPeers","loading","page","pageSize","get","set","instance","dispatch","showLocal","value","showPrivate","statuses","fetchedStatuses","statusVisibility","mounted","destroyed","clearSelection","methods","handleFilterChange","handleLoadMore","handleStatusSelection","undefined","find","selectedUser","id","normalizedCount","count","numeral_default","format","component","Object","componentNormalizer","_vm","_h","$createElement","_c","_self","_e","staticClass","_v","_s","$t","attrs","plain","direct","private","public","unlisted","placeholder","no-data-text","filterable","clearable","on","change","model","callback","$$v","expression","_l","index","key","label","selected-users","apply-action","length","account","show-checkbox","fetch-statuses-by-instance","status-selection","icon","circle","click","options","__file","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","map","./af","./af.js","./ar","./ar-dz","./ar-dz.js","./ar-kw","./ar-kw.js","./ar-ly","./ar-ly.js","./ar-ma","./ar-ma.js","./ar-sa","./ar-sa.js","./ar-tn","./ar-tn.js","./ar.js","./az","./az.js","./be","./be.js","./bg","./bg.js","./bm","./bm.js","./bn","./bn.js","./bo","./bo.js","./br","./br.js","./bs","./bs.js","./ca","./ca.js","./cs","./cs.js","./cv","./cv.js","./cy","./cy.js","./da","./da.js","./de","./de-at","./de-at.js","./de-ch","./de-ch.js","./de.js","./dv","./dv.js","./el","./el.js","./en-SG","./en-SG.js","./en-au","./en-au.js","./en-ca","./en-ca.js","./en-gb","./en-gb.js","./en-ie","./en-ie.js","./en-il","./en-il.js","./en-nz","./en-nz.js","./eo","./eo.js","./es","./es-do","./es-do.js","./es-us","./es-us.js","./es.js","./et","./et.js","./eu","./eu.js","./fa","./fa.js","./fi","./fi.js","./fo","./fo.js","./fr","./fr-ca","./fr-ca.js","./fr-ch","./fr-ch.js","./fr.js","./fy","./fy.js","./ga","./ga.js","./gd","./gd.js","./gl","./gl.js","./gom-latn","./gom-latn.js","./gu","./gu.js","./he","./he.js","./hi","./hi.js","./hr","./hr.js","./hu","./hu.js","./hy-am","./hy-am.js","./id","./id.js","./is","./is.js","./it","./it-ch","./it-ch.js","./it.js","./ja","./ja.js","./jv","./jv.js","./ka","./ka.js","./kk","./kk.js","./km","./km.js","./kn","./kn.js","./ko","./ko.js","./ku","./ku.js","./ky","./ky.js","./lb","./lb.js","./lo","./lo.js","./lt","./lt.js","./lv","./lv.js","./me","./me.js","./mi","./mi.js","./mk","./mk.js","./ml","./ml.js","./mn","./mn.js","./mr","./mr.js","./ms","./ms-my","./ms-my.js","./ms.js","./mt","./mt.js","./my","./my.js","./nb","./nb.js","./ne","./ne.js","./nl","./nl-be","./nl-be.js","./nl.js","./nn","./nn.js","./pa-in","./pa-in.js","./pl","./pl.js","./pt","./pt-br","./pt-br.js","./pt.js","./ro","./ro.js","./ru","./ru.js","./sd","./sd.js","./se","./se.js","./si","./si.js","./sk","./sk.js","./sl","./sl.js","./sq","./sq.js","./sr","./sr-cyrl","./sr-cyrl.js","./sr.js","./ss","./ss.js","./sv","./sv.js","./sw","./sw.js","./ta","./ta.js","./te","./te.js","./tet","./tet.js","./tg","./tg.js","./th","./th.js","./tl-ph","./tl-ph.js","./tlh","./tlh.js","./tr","./tr.js","./tzl","./tzl.js","./tzm","./tzm-latn","./tzm-latn.js","./tzm.js","./ug-cn","./ug-cn.js","./uk","./uk.js","./ur","./ur.js","./uz","./uz-latn","./uz-latn.js","./uz.js","./vi","./vi.js","./x-pseudo","./x-pseudo.js","./yo","./yo.js","./zh-cn","./zh-cn.js","./zh-hk","./zh-hk.js","./zh-tw","./zh-tw.js","webpackContext","req","webpackContextResolve","o","e","Error","code","keys","resolve","module","exports"],"mappings":"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CAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,YAAA,OACAC,eAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,QAAA,OACAC,WAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,QAAA,OACAC,WAAA,OACAC,OAAA,OACAC,UAAA,OACAC,QAAA,OACAC,WAAA,OACAC,QAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,WAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,YAAA,OACAC,eAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,QAIA,SAAAC,EAAAC,GACA,IAAAtT,EAAAuT,EAAAD,GACA,OAAAlQ,EAAApD,GAEA,SAAAuT,EAAAD,GACA,IAAAlQ,EAAAoQ,EAAAlQ,EAAAgQ,GAAA,CACA,IAAAG,EAAA,IAAAC,MAAA,uBAAAJ,EAAA,KAEA,MADAG,EAAAE,KAAA,mBACAF,EAEA,OAAAnQ,EAAAgQ,GAEAD,EAAAO,KAAA,WACA,OAAAtT,OAAAsT,KAAAtQ,IAEA+P,EAAAQ,QAAAN,EACAO,EAAAC,QAAAV,EACAA,EAAArT,GAAA","file":"static/js/chunk-176e.c4995511.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loadingPeers)?_c('div',{staticClass:\"statuses-container\"},[_c('div',{staticClass:\"statuses-header\"},[_c('h1',[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.statuses'))+\"\\n \")]),_vm._v(\" \"),_c('reboot-button')],1),_vm._v(\" \"),_c('div',{staticClass:\"statuses-header-container\"},[_c('el-button-group',[_c('el-button',{staticClass:\"direct-button\",attrs:{\"plain\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.direct'))+\": \"+_vm._s(_vm.normalizedCount(_vm.statusVisibility.direct))+\"\\n \")]),_vm._v(\" \"),_c('el-button',{staticClass:\"private-button\",attrs:{\"plain\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.private'))+\": \"+_vm._s(_vm.normalizedCount(_vm.statusVisibility.private))+\"\\n \")]),_vm._v(\" \"),_c('el-button',{staticClass:\"public-button\",attrs:{\"plain\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.public'))+\": \"+_vm._s(_vm.normalizedCount(_vm.statusVisibility.public))+\"\\n \")]),_vm._v(\" \"),_c('el-button',{staticClass:\"unlisted-button\",attrs:{\"plain\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.unlisted'))+\": \"+_vm._s(_vm.normalizedCount(_vm.statusVisibility.unlisted))+\"\\n \")])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"filter-container\"},[_c('el-select',{staticClass:\"select-instance\",attrs:{\"placeholder\":_vm.$t('statuses.instanceFilter'),\"no-data-text\":_vm.$t('statuses.noInstances'),\"filterable\":\"\",\"clearable\":\"\"},on:{\"change\":_vm.handleFilterChange},model:{value:(_vm.selectedInstance),callback:function ($$v) {_vm.selectedInstance=$$v},expression:\"selectedInstance\"}},_vm._l((_vm.instances),function(instance,index){return _c('el-option',{key:index,attrs:{\"label\":instance,\"value\":instance}})}),1),_vm._v(\" \"),_c('multiple-users-menu',{attrs:{\"selected-users\":_vm.selectedUsers},on:{\"apply-action\":_vm.clearSelection}})],1),_vm._v(\" \"),(_vm.currentInstance)?_c('div',{staticClass:\"checkbox-container\"},[_c('el-checkbox',{staticClass:\"show-private-statuses\",model:{value:(_vm.showLocal),callback:function ($$v) {_vm.showLocal=$$v},expression:\"showLocal\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.onlyLocalStatuses'))+\"\\n \")]),_vm._v(\" \"),_c('el-checkbox',{staticClass:\"show-private-statuses\",model:{value:(_vm.showPrivate),callback:function ($$v) {_vm.showPrivate=$$v},expression:\"showPrivate\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.showPrivateStatuses'))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),(_vm.statuses.length === 0)?_c('p',{staticClass:\"no-statuses\"},[_vm._v(_vm._s(_vm.$t('userProfile.noStatuses')))]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.statuses),function(status){return _c('div',{key:status.id,staticClass:\"status-container\"},[_c('status',{attrs:{\"status\":status,\"account\":status.account,\"show-checkbox\":_vm.isDesktop,\"fetch-statuses-by-instance\":true},on:{\"status-selection\":_vm.handleStatusSelection}})],1)}),_vm._v(\" \"),(_vm.statuses.length > 0)?_c('div',{staticClass:\"statuses-pagination\"},[(!_vm.allLoaded)?_c('el-button',{attrs:{\"loading\":_vm.buttonLoading},on:{\"click\":_vm.handleLoadMore}},[_vm._v(_vm._s(_vm.$t('statuses.loadMore')))]):_c('el-button',{attrs:{\"icon\":\"el-icon-check\",\"circle\":\"\"}})],1):_vm._e()],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=4ee51084&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var map = {\n\t\"./af\": \"K/tc\",\n\t\"./af.js\": \"K/tc\",\n\t\"./ar\": \"jnO4\",\n\t\"./ar-dz\": \"o1bE\",\n\t\"./ar-dz.js\": \"o1bE\",\n\t\"./ar-kw\": \"Qj4J\",\n\t\"./ar-kw.js\": \"Qj4J\",\n\t\"./ar-ly\": \"HP3h\",\n\t\"./ar-ly.js\": \"HP3h\",\n\t\"./ar-ma\": \"CoRJ\",\n\t\"./ar-ma.js\": \"CoRJ\",\n\t\"./ar-sa\": \"gjCT\",\n\t\"./ar-sa.js\": \"gjCT\",\n\t\"./ar-tn\": \"bYM6\",\n\t\"./ar-tn.js\": \"bYM6\",\n\t\"./ar.js\": \"jnO4\",\n\t\"./az\": \"SFxW\",\n\t\"./az.js\": \"SFxW\",\n\t\"./be\": \"H8ED\",\n\t\"./be.js\": \"H8ED\",\n\t\"./bg\": \"hKrs\",\n\t\"./bg.js\": \"hKrs\",\n\t\"./bm\": \"p/rL\",\n\t\"./bm.js\": \"p/rL\",\n\t\"./bn\": \"kEOa\",\n\t\"./bn.js\": \"kEOa\",\n\t\"./bo\": \"0mo+\",\n\t\"./bo.js\": \"0mo+\",\n\t\"./br\": \"aIdf\",\n\t\"./br.js\": \"aIdf\",\n\t\"./bs\": \"JVSJ\",\n\t\"./bs.js\": \"JVSJ\",\n\t\"./ca\": \"1xZ4\",\n\t\"./ca.js\": \"1xZ4\",\n\t\"./cs\": \"PA2r\",\n\t\"./cs.js\": \"PA2r\",\n\t\"./cv\": \"A+xa\",\n\t\"./cv.js\": \"A+xa\",\n\t\"./cy\": \"l5ep\",\n\t\"./cy.js\": \"l5ep\",\n\t\"./da\": \"DxQv\",\n\t\"./da.js\": \"DxQv\",\n\t\"./de\": \"tGlX\",\n\t\"./de-at\": \"s+uk\",\n\t\"./de-at.js\": \"s+uk\",\n\t\"./de-ch\": \"u3GI\",\n\t\"./de-ch.js\": \"u3GI\",\n\t\"./de.js\": \"tGlX\",\n\t\"./dv\": \"WYrj\",\n\t\"./dv.js\": \"WYrj\",\n\t\"./el\": \"jUeY\",\n\t\"./el.js\": \"jUeY\",\n\t\"./en-SG\": \"zavE\",\n\t\"./en-SG.js\": \"zavE\",\n\t\"./en-au\": \"Dmvi\",\n\t\"./en-au.js\": \"Dmvi\",\n\t\"./en-ca\": \"OIYi\",\n\t\"./en-ca.js\": \"OIYi\",\n\t\"./en-gb\": \"Oaa7\",\n\t\"./en-gb.js\": \"Oaa7\",\n\t\"./en-ie\": \"4dOw\",\n\t\"./en-ie.js\": \"4dOw\",\n\t\"./en-il\": \"czMo\",\n\t\"./en-il.js\": \"czMo\",\n\t\"./en-nz\": \"b1Dy\",\n\t\"./en-nz.js\": \"b1Dy\",\n\t\"./eo\": \"Zduo\",\n\t\"./eo.js\": \"Zduo\",\n\t\"./es\": \"iYuL\",\n\t\"./es-do\": \"CjzT\",\n\t\"./es-do.js\": \"CjzT\",\n\t\"./es-us\": \"Vclq\",\n\t\"./es-us.js\": \"Vclq\",\n\t\"./es.js\": \"iYuL\",\n\t\"./et\": \"7BjC\",\n\t\"./et.js\": \"7BjC\",\n\t\"./eu\": \"D/JM\",\n\t\"./eu.js\": \"D/JM\",\n\t\"./fa\": \"jfSC\",\n\t\"./fa.js\": \"jfSC\",\n\t\"./fi\": \"gekB\",\n\t\"./fi.js\": \"gekB\",\n\t\"./fo\": \"ByF4\",\n\t\"./fo.js\": \"ByF4\",\n\t\"./fr\": \"nyYc\",\n\t\"./fr-ca\": \"2fjn\",\n\t\"./fr-ca.js\": \"2fjn\",\n\t\"./fr-ch\": \"Dkky\",\n\t\"./fr-ch.js\": \"Dkky\",\n\t\"./fr.js\": \"nyYc\",\n\t\"./fy\": \"cRix\",\n\t\"./fy.js\": \"cRix\",\n\t\"./ga\": \"USCx\",\n\t\"./ga.js\": \"USCx\",\n\t\"./gd\": \"9rRi\",\n\t\"./gd.js\": \"9rRi\",\n\t\"./gl\": \"iEDd\",\n\t\"./gl.js\": \"iEDd\",\n\t\"./gom-latn\": \"DKr+\",\n\t\"./gom-latn.js\": \"DKr+\",\n\t\"./gu\": \"4MV3\",\n\t\"./gu.js\": \"4MV3\",\n\t\"./he\": \"x6pH\",\n\t\"./he.js\": \"x6pH\",\n\t\"./hi\": \"3E1r\",\n\t\"./hi.js\": \"3E1r\",\n\t\"./hr\": \"S6ln\",\n\t\"./hr.js\": \"S6ln\",\n\t\"./hu\": \"WxRl\",\n\t\"./hu.js\": \"WxRl\",\n\t\"./hy-am\": \"1rYy\",\n\t\"./hy-am.js\": \"1rYy\",\n\t\"./id\": \"UDhR\",\n\t\"./id.js\": \"UDhR\",\n\t\"./is\": \"BVg3\",\n\t\"./is.js\": \"BVg3\",\n\t\"./it\": \"bpih\",\n\t\"./it-ch\": \"bxKX\",\n\t\"./it-ch.js\": \"bxKX\",\n\t\"./it.js\": \"bpih\",\n\t\"./ja\": \"B55N\",\n\t\"./ja.js\": \"B55N\",\n\t\"./jv\": \"tUCv\",\n\t\"./jv.js\": \"tUCv\",\n\t\"./ka\": \"IBtZ\",\n\t\"./ka.js\": \"IBtZ\",\n\t\"./kk\": \"bXm7\",\n\t\"./kk.js\": \"bXm7\",\n\t\"./km\": \"6B0Y\",\n\t\"./km.js\": \"6B0Y\",\n\t\"./kn\": \"PpIw\",\n\t\"./kn.js\": \"PpIw\",\n\t\"./ko\": \"Ivi+\",\n\t\"./ko.js\": \"Ivi+\",\n\t\"./ku\": \"JCF/\",\n\t\"./ku.js\": \"JCF/\",\n\t\"./ky\": \"lgnt\",\n\t\"./ky.js\": \"lgnt\",\n\t\"./lb\": \"RAwQ\",\n\t\"./lb.js\": \"RAwQ\",\n\t\"./lo\": \"sp3z\",\n\t\"./lo.js\": \"sp3z\",\n\t\"./lt\": \"JvlW\",\n\t\"./lt.js\": \"JvlW\",\n\t\"./lv\": \"uXwI\",\n\t\"./lv.js\": \"uXwI\",\n\t\"./me\": \"KTz0\",\n\t\"./me.js\": \"KTz0\",\n\t\"./mi\": \"aIsn\",\n\t\"./mi.js\": \"aIsn\",\n\t\"./mk\": \"aQkU\",\n\t\"./mk.js\": \"aQkU\",\n\t\"./ml\": \"AvvY\",\n\t\"./ml.js\": \"AvvY\",\n\t\"./mn\": \"lYtQ\",\n\t\"./mn.js\": \"lYtQ\",\n\t\"./mr\": \"Ob0Z\",\n\t\"./mr.js\": \"Ob0Z\",\n\t\"./ms\": \"6+QB\",\n\t\"./ms-my\": \"ZAMP\",\n\t\"./ms-my.js\": \"ZAMP\",\n\t\"./ms.js\": \"6+QB\",\n\t\"./mt\": \"G0Uy\",\n\t\"./mt.js\": \"G0Uy\",\n\t\"./my\": \"honF\",\n\t\"./my.js\": \"honF\",\n\t\"./nb\": \"bOMt\",\n\t\"./nb.js\": \"bOMt\",\n\t\"./ne\": \"OjkT\",\n\t\"./ne.js\": \"OjkT\",\n\t\"./nl\": \"+s0g\",\n\t\"./nl-be\": \"2ykv\",\n\t\"./nl-be.js\": \"2ykv\",\n\t\"./nl.js\": \"+s0g\",\n\t\"./nn\": \"uEye\",\n\t\"./nn.js\": \"uEye\",\n\t\"./pa-in\": \"8/+R\",\n\t\"./pa-in.js\": \"8/+R\",\n\t\"./pl\": \"jVdC\",\n\t\"./pl.js\": \"jVdC\",\n\t\"./pt\": \"8mBD\",\n\t\"./pt-br\": \"0tRk\",\n\t\"./pt-br.js\": \"0tRk\",\n\t\"./pt.js\": \"8mBD\",\n\t\"./ro\": \"lyxo\",\n\t\"./ro.js\": \"lyxo\",\n\t\"./ru\": \"lXzo\",\n\t\"./ru.js\": \"lXzo\",\n\t\"./sd\": \"Z4QM\",\n\t\"./sd.js\": \"Z4QM\",\n\t\"./se\": \"//9w\",\n\t\"./se.js\": \"//9w\",\n\t\"./si\": \"7aV9\",\n\t\"./si.js\": \"7aV9\",\n\t\"./sk\": \"e+ae\",\n\t\"./sk.js\": \"e+ae\",\n\t\"./sl\": \"gVVK\",\n\t\"./sl.js\": \"gVVK\",\n\t\"./sq\": \"yPMs\",\n\t\"./sq.js\": \"yPMs\",\n\t\"./sr\": \"zx6S\",\n\t\"./sr-cyrl\": \"E+lV\",\n\t\"./sr-cyrl.js\": \"E+lV\",\n\t\"./sr.js\": \"zx6S\",\n\t\"./ss\": \"Ur1D\",\n\t\"./ss.js\": \"Ur1D\",\n\t\"./sv\": \"X709\",\n\t\"./sv.js\": \"X709\",\n\t\"./sw\": \"dNwA\",\n\t\"./sw.js\": \"dNwA\",\n\t\"./ta\": \"PeUW\",\n\t\"./ta.js\": \"PeUW\",\n\t\"./te\": \"XLvN\",\n\t\"./te.js\": \"XLvN\",\n\t\"./tet\": \"V2x9\",\n\t\"./tet.js\": \"V2x9\",\n\t\"./tg\": \"Oxv6\",\n\t\"./tg.js\": \"Oxv6\",\n\t\"./th\": \"EOgW\",\n\t\"./th.js\": \"EOgW\",\n\t\"./tl-ph\": \"Dzi0\",\n\t\"./tl-ph.js\": \"Dzi0\",\n\t\"./tlh\": \"z3Vd\",\n\t\"./tlh.js\": \"z3Vd\",\n\t\"./tr\": \"DoHr\",\n\t\"./tr.js\": \"DoHr\",\n\t\"./tzl\": \"z1FC\",\n\t\"./tzl.js\": \"z1FC\",\n\t\"./tzm\": \"wQk9\",\n\t\"./tzm-latn\": \"tT3J\",\n\t\"./tzm-latn.js\": \"tT3J\",\n\t\"./tzm.js\": \"wQk9\",\n\t\"./ug-cn\": \"YRex\",\n\t\"./ug-cn.js\": \"YRex\",\n\t\"./uk\": \"raLr\",\n\t\"./uk.js\": \"raLr\",\n\t\"./ur\": \"UpQW\",\n\t\"./ur.js\": \"UpQW\",\n\t\"./uz\": \"Loxo\",\n\t\"./uz-latn\": \"AQ68\",\n\t\"./uz-latn.js\": \"AQ68\",\n\t\"./uz.js\": \"Loxo\",\n\t\"./vi\": \"KSF8\",\n\t\"./vi.js\": \"KSF8\",\n\t\"./x-pseudo\": \"/X5v\",\n\t\"./x-pseudo.js\": \"/X5v\",\n\t\"./yo\": \"fzPg\",\n\t\"./yo.js\": \"fzPg\",\n\t\"./zh-cn\": \"XDpg\",\n\t\"./zh-cn.js\": \"XDpg\",\n\t\"./zh-hk\": \"SatO\",\n\t\"./zh-hk.js\": \"SatO\",\n\t\"./zh-tw\": \"kOpN\",\n\t\"./zh-tw.js\": \"kOpN\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"RnhZ\";"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-22d2.a0cf7976.js b/priv/static/adminfe/static/js/chunk-22d2.a0cf7976.js deleted file mode 100644 index 903f553b0..000000000 --- a/priv/static/adminfe/static/js/chunk-22d2.a0cf7976.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-22d2"],{"13xp":function(t,s,e){"use strict";var a=e("2r4G");e.n(a).a},"2r4G":function(t,s,e){},"4bFr":function(t,s,e){"use strict";e.r(s);var a=e("ot3S"),i=e("tPM3"),n=e("o0o1"),r=e.n(n),o=e("yXPU"),u=e.n(o),c=e("XJYT"),l={name:"SecuritySettingsModal",props:{visible:{type:Boolean,default:!1},user:{type:Object,default:function(){return{}}}},data:function(){return{securitySettingsForm:{newEmail:"",newPassword:"",isEmailLoading:!1,isPasswordLoading:!1}}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device},getLabelWidth:function(){return this.isDesktop?"120px":"85px"},userCredentials:function(){return this.$store.state.userProfile.userCredentials}},mounted:function(){var t=u()(r.a.mark(function t(){return r.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.$store.dispatch("FetchUserCredentials",{nickname:this.user.nickname});case 2:this.securitySettingsForm.newEmail=this.userCredentials.email;case 3:case"end":return t.stop()}},t,this)}));return function(){return t.apply(this,arguments)}}(),methods:{updateEmail:function(){var t=u()(r.a.mark(function t(){var s;return r.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return s={email:this.securitySettingsForm.newEmail},this.securitySettingsForm.isEmailLoading=!0,t.next=4,this.$store.dispatch("UpdateUserCredentials",{nickname:this.user.nickname,credentials:s});case 4:this.securitySettingsForm.isEmailLoading=!1,Object(c.Message)({message:this.$t("userProfile.securitySettings.emailUpdated"),type:"success",duration:5e3});case 6:case"end":return t.stop()}},t,this)}));return function(){return t.apply(this,arguments)}}(),updatePassword:function(){var t=u()(r.a.mark(function t(){var s;return r.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return s={password:this.securitySettingsForm.newPassword},this.securitySettingsForm.isPasswordLoading=!0,t.next=4,this.$store.dispatch("UpdateUserCredentials",{nickname:this.user.nickname,credentials:s});case 4:this.securitySettingsForm.isPasswordLoading=!1,this.securitySettingsForm.newPassword="",Object(c.Message)({message:this.$t("userProfile.securitySettings.passwordUpdated"),type:"success",duration:5e3});case 7:case"end":return t.stop()}},t,this)}));return function(){return t.apply(this,arguments)}}(),close:function(){this.$emit("close",!0)}}},d=(e("13xp"),e("KHd+")),v=Object(d.a)(l,function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("el-dialog",{staticClass:"security-settings-modal",attrs:{"before-close":t.close,title:t.$t("userProfile.securitySettings.securitySettings"),visible:t.visible}},[e("el-form",{attrs:{model:t.securitySettingsForm,"label-width":t.getLabelWidth}},[e("el-form-item",{attrs:{label:t.$t("userProfile.securitySettings.email")}},[e("el-input",{attrs:{placeholder:t.$t("userProfile.securitySettings.inputNewEmail")},model:{value:t.securitySettingsForm.newEmail,callback:function(s){t.$set(t.securitySettingsForm,"newEmail",s)},expression:"securitySettingsForm.newEmail"}})],1),t._v(" "),e("el-form-item",[e("el-button",{staticClass:"security-settings-submit-button",attrs:{loading:t.securitySettingsForm.isEmailLoading,disabled:!t.securitySettingsForm.newEmail||t.securitySettingsForm.newEmail===t.userCredentials.email,type:"primary"},on:{click:function(s){return t.updateEmail()}}},[t._v("\n "+t._s(t.$t("userProfile.securitySettings.submit"))+"\n ")])],1),t._v(" "),e("el-form-item",{staticClass:"password-input",attrs:{label:t.$t("userProfile.securitySettings.password")}},[e("el-input",{attrs:{placeholder:t.$t("userProfile.securitySettings.inputNewPassword")},model:{value:t.securitySettingsForm.newPassword,callback:function(s){t.$set(t.securitySettingsForm,"newPassword",s)},expression:"securitySettingsForm.newPassword"}}),t._v(" "),e("small",{staticClass:"form-text"},[t._v("\n "+t._s(t.$t("userProfile.securitySettings.passwordLengthNotice",{minLength:8}))+"\n ")])],1),t._v(" "),e("el-alert",{staticClass:"password-alert",attrs:{closable:!1,type:"warning","show-icon":""}},[e("p",[t._v(t._s(t.$t("userProfile.securitySettings.passwordChangeWarning1")))]),t._v(" "),e("p",[t._v(t._s(t.$t("userProfile.securitySettings.passwordChangeWarning2")))])]),t._v(" "),e("el-form-item",[e("el-button",{staticClass:"security-settings-submit-button",attrs:{loading:t.securitySettingsForm.isPasswordLoading,disabled:t.securitySettingsForm.newPassword.length<8,type:"primary"},on:{click:function(s){return t.updatePassword()}}},[t._v("\n "+t._s(t.$t("userProfile.securitySettings.submit"))+"\n ")])],1)],1)],1)},[],!1,null,null,null);v.options.__file="SecuritySettingsModal.vue";var p=v.exports,_=e("rIUS"),g={name:"UsersShow",components:{ModerationDropdown:i.a,RebootButton:_.a,Status:a.a,SecuritySettingsModal:p},data:function(){return{showPrivate:!1,resetPasswordDialogOpen:!1,securitySettingsModalVisible:!1}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device},isTablet:function(){return"tablet"===this.$store.state.app.device},loading:function(){return this.$store.state.users.loading},passwordResetLink:function(){return this.$store.state.users.passwordResetToken.link},passwordResetToken:function(){return this.$store.state.users.passwordResetToken.token},statuses:function(){return this.$store.state.userProfile.statuses},statusesLoading:function(){return this.$store.state.userProfile.statusesLoading},user:function(){return this.$store.state.userProfile.user},userProfileLoading:function(){return this.$store.state.userProfile.userProfileLoading},userCredentials:function(){return this.$store.state.userProfile.userCredentials}},mounted:function(){this.$store.dispatch("NeedReboot"),this.$store.dispatch("GetNodeInfo"),this.$store.dispatch("FetchUserProfile",{userId:this.$route.params.id,godmode:!1})},methods:{closeResetPasswordDialog:function(){this.resetPasswordDialogOpen=!1,this.$store.dispatch("RemovePasswordToken")},onTogglePrivate:function(){this.$store.dispatch("FetchUserProfile",{userId:this.$route.params.id,godmode:this.showPrivate})},openResetPasswordDialog:function(){this.resetPasswordDialogOpen=!0}}},h=(e("tIqt"),Object(d.a)(g,function(){var t=this,s=t.$createElement,e=t._self._c||s;return t.userProfileLoading?t._e():e("main",[t.isDesktop||t.isTablet?e("header",{staticClass:"user-page-header"},[e("div",{staticClass:"avatar-name-container"},[e("el-avatar",{attrs:{src:t.user.avatar,size:"large"}}),t._v(" "),e("h1",[t._v(t._s(t.user.display_name))])],1),t._v(" "),e("div",{staticClass:"left-header-container"},[e("moderation-dropdown",{attrs:{user:t.user,page:"userPage"},on:{"open-reset-token-dialog":t.openResetPasswordDialog}}),t._v(" "),e("reboot-button")],1)]):t._e(),t._v(" "),t.isMobile?e("div",{staticClass:"user-page-header-container"},[e("header",{staticClass:"user-page-header"},[e("div",{staticClass:"avatar-name-container"},[e("el-avatar",{attrs:{src:t.user.avatar,size:"large"}}),t._v(" "),e("h1",[t._v(t._s(t.user.display_name))])],1),t._v(" "),e("reboot-button")],1),t._v(" "),e("moderation-dropdown",{attrs:{user:t.user,page:"userPage"},on:{"open-reset-token-dialog":t.openResetPasswordDialog}})],1):t._e(),t._v(" "),e("el-dialog",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],attrs:{visible:t.resetPasswordDialogOpen,title:t.$t("users.passwordResetTokenCreated"),"custom-class":"password-reset-token-dialog"},on:{"update:visible":function(s){t.resetPasswordDialogOpen=s},close:t.closeResetPasswordDialog}},[e("div",[e("p",{staticClass:"password-reset-token"},[t._v("Password reset token was generated: "+t._s(t.passwordResetToken))]),t._v(" "),e("p",[t._v("You can also use this link to reset password:\n "),e("a",{staticClass:"reset-password-link",attrs:{href:t.passwordResetLink,target:"_blank"}},[t._v(t._s(t.passwordResetLink))])])])]),t._v(" "),e("div",{staticClass:"user-profile-container"},[e("el-card",{staticClass:"user-profile-card"},[e("div",{staticClass:"el-table el-table--fit el-table--enable-row-hover el-table--enable-row-transition el-table--medium"},[e("table",{staticClass:"user-profile-table"},[e("tbody",[e("tr",{staticClass:"el-table__row"},[e("td",[t._v(t._s(t.$t("userProfile.nickname")))]),t._v(" "),e("td",[t._v("\n "+t._s(t.user.nickname)+"\n ")])]),t._v(" "),e("tr",{staticClass:"el-table__row"},[e("td",{staticClass:"name-col"},[t._v("ID")]),t._v(" "),e("td",{staticClass:"value-col"},[t._v("\n "+t._s(t.user.id)+"\n ")])]),t._v(" "),e("tr",{staticClass:"el-table__row"},[e("td",[t._v(t._s(t.$t("userProfile.tags")))]),t._v(" "),e("td",[t._l(t.user.tags,function(s){return e("el-tag",{key:s,staticClass:"user-profile-tag"},[t._v(t._s(s))])}),t._v(" "),0===t.user.tags.length?e("span",[t._v("—")]):t._e()],2)]),t._v(" "),e("tr",{staticClass:"el-table__row"},[e("td",[t._v(t._s(t.$t("userProfile.roles")))]),t._v(" "),e("td",[t.user.roles.admin?e("el-tag",{staticClass:"user-profile-tag"},[t._v("\n "+t._s(t.$t("users.admin"))+"\n ")]):t._e(),t._v(" "),t.user.roles.moderator?e("el-tag",{staticClass:"user-profile-tag"},[t._v("\n "+t._s(t.$t("users.moderator"))+"\n ")]):t._e(),t._v(" "),t.user.roles.moderator||t.user.roles.admin?t._e():e("span",[t._v("—")])],1)]),t._v(" "),e("tr",{staticClass:"el-table__row"},[e("td",[t._v(t._s(t.$t("userProfile.localUppercase")))]),t._v(" "),e("td",[t.user.local?e("el-tag",{attrs:{type:"info"}},[t._v(t._s(t.$t("userProfile.local")))]):t._e(),t._v(" "),t.user.local?t._e():e("el-tag",{attrs:{type:"info"}},[t._v(t._s(t.$t("userProfile.external")))])],1)]),t._v(" "),e("tr",{staticClass:"el-table__row"},[e("td",[t._v(t._s(t.$t("userProfile.activeUppercase")))]),t._v(" "),e("td",[t.user.deactivated?t._e():e("el-tag",{attrs:{type:"success"}},[t._v(t._s(t.$t("userProfile.active")))]),t._v(" "),t.user.deactivated?e("el-tag",{attrs:{type:"danger"}},[t._v(t._s(t.$t("userProfile.deactivated")))]):t._e()],1)])])])]),t._v(" "),e("el-button",{staticClass:"security-setting-button",attrs:{icon:"el-icon-lock"},on:{click:function(s){t.securitySettingsModalVisible=!0}}},[t._v("\n "+t._s(t.$t("userProfile.securitySettings.securitySettings"))+"\n ")]),t._v(" "),e("SecuritySettingsModal",{attrs:{user:t.user,visible:t.securitySettingsModalVisible},on:{close:function(s){t.securitySettingsModalVisible=!1}}})],1),t._v(" "),e("div",{staticClass:"recent-statuses-container"},[e("h2",{staticClass:"recent-statuses"},[t._v(t._s(t.$t("userProfile.recentStatuses")))]),t._v(" "),e("el-checkbox",{staticClass:"show-private-statuses",on:{change:t.onTogglePrivate},model:{value:t.showPrivate,callback:function(s){t.showPrivate=s},expression:"showPrivate"}},[t._v("\n "+t._s(t.$t("statuses.showPrivateStatuses"))+"\n ")]),t._v(" "),t.statusesLoading?t._e():e("el-timeline",{staticClass:"statuses"},[t._l(t.statuses,function(s){return e("el-timeline-item",{key:s.id},[e("status",{attrs:{status:s,account:s.account,"show-checkbox":!1,"user-id":t.user.id,godmode:t.showPrivate}})],1)}),t._v(" "),0===t.statuses.length?e("p",{staticClass:"no-statuses"},[t._v(t._s(t.$t("userProfile.noStatuses")))]):t._e()],2)],1)],1)],1)},[],!1,null,"d4bc7d00",null));h.options.__file="show.vue";s.default=h.exports},"53Av":function(t,s,e){"use strict";var a=e("lOBV");e.n(a).a},Kw8l:function(t,s,e){"use strict";var a=e("cRgN");e.n(a).a},RnhZ:function(t,s,e){var a={"./af":"K/tc","./af.js":"K/tc","./ar":"jnO4","./ar-dz":"o1bE","./ar-dz.js":"o1bE","./ar-kw":"Qj4J","./ar-kw.js":"Qj4J","./ar-ly":"HP3h","./ar-ly.js":"HP3h","./ar-ma":"CoRJ","./ar-ma.js":"CoRJ","./ar-sa":"gjCT","./ar-sa.js":"gjCT","./ar-tn":"bYM6","./ar-tn.js":"bYM6","./ar.js":"jnO4","./az":"SFxW","./az.js":"SFxW","./be":"H8ED","./be.js":"H8ED","./bg":"hKrs","./bg.js":"hKrs","./bm":"p/rL","./bm.js":"p/rL","./bn":"kEOa","./bn.js":"kEOa","./bo":"0mo+","./bo.js":"0mo+","./br":"aIdf","./br.js":"aIdf","./bs":"JVSJ","./bs.js":"JVSJ","./ca":"1xZ4","./ca.js":"1xZ4","./cs":"PA2r","./cs.js":"PA2r","./cv":"A+xa","./cv.js":"A+xa","./cy":"l5ep","./cy.js":"l5ep","./da":"DxQv","./da.js":"DxQv","./de":"tGlX","./de-at":"s+uk","./de-at.js":"s+uk","./de-ch":"u3GI","./de-ch.js":"u3GI","./de.js":"tGlX","./dv":"WYrj","./dv.js":"WYrj","./el":"jUeY","./el.js":"jUeY","./en-SG":"zavE","./en-SG.js":"zavE","./en-au":"Dmvi","./en-au.js":"Dmvi","./en-ca":"OIYi","./en-ca.js":"OIYi","./en-gb":"Oaa7","./en-gb.js":"Oaa7","./en-ie":"4dOw","./en-ie.js":"4dOw","./en-il":"czMo","./en-il.js":"czMo","./en-nz":"b1Dy","./en-nz.js":"b1Dy","./eo":"Zduo","./eo.js":"Zduo","./es":"iYuL","./es-do":"CjzT","./es-do.js":"CjzT","./es-us":"Vclq","./es-us.js":"Vclq","./es.js":"iYuL","./et":"7BjC","./et.js":"7BjC","./eu":"D/JM","./eu.js":"D/JM","./fa":"jfSC","./fa.js":"jfSC","./fi":"gekB","./fi.js":"gekB","./fo":"ByF4","./fo.js":"ByF4","./fr":"nyYc","./fr-ca":"2fjn","./fr-ca.js":"2fjn","./fr-ch":"Dkky","./fr-ch.js":"Dkky","./fr.js":"nyYc","./fy":"cRix","./fy.js":"cRix","./ga":"USCx","./ga.js":"USCx","./gd":"9rRi","./gd.js":"9rRi","./gl":"iEDd","./gl.js":"iEDd","./gom-latn":"DKr+","./gom-latn.js":"DKr+","./gu":"4MV3","./gu.js":"4MV3","./he":"x6pH","./he.js":"x6pH","./hi":"3E1r","./hi.js":"3E1r","./hr":"S6ln","./hr.js":"S6ln","./hu":"WxRl","./hu.js":"WxRl","./hy-am":"1rYy","./hy-am.js":"1rYy","./id":"UDhR","./id.js":"UDhR","./is":"BVg3","./is.js":"BVg3","./it":"bpih","./it-ch":"bxKX","./it-ch.js":"bxKX","./it.js":"bpih","./ja":"B55N","./ja.js":"B55N","./jv":"tUCv","./jv.js":"tUCv","./ka":"IBtZ","./ka.js":"IBtZ","./kk":"bXm7","./kk.js":"bXm7","./km":"6B0Y","./km.js":"6B0Y","./kn":"PpIw","./kn.js":"PpIw","./ko":"Ivi+","./ko.js":"Ivi+","./ku":"JCF/","./ku.js":"JCF/","./ky":"lgnt","./ky.js":"lgnt","./lb":"RAwQ","./lb.js":"RAwQ","./lo":"sp3z","./lo.js":"sp3z","./lt":"JvlW","./lt.js":"JvlW","./lv":"uXwI","./lv.js":"uXwI","./me":"KTz0","./me.js":"KTz0","./mi":"aIsn","./mi.js":"aIsn","./mk":"aQkU","./mk.js":"aQkU","./ml":"AvvY","./ml.js":"AvvY","./mn":"lYtQ","./mn.js":"lYtQ","./mr":"Ob0Z","./mr.js":"Ob0Z","./ms":"6+QB","./ms-my":"ZAMP","./ms-my.js":"ZAMP","./ms.js":"6+QB","./mt":"G0Uy","./mt.js":"G0Uy","./my":"honF","./my.js":"honF","./nb":"bOMt","./nb.js":"bOMt","./ne":"OjkT","./ne.js":"OjkT","./nl":"+s0g","./nl-be":"2ykv","./nl-be.js":"2ykv","./nl.js":"+s0g","./nn":"uEye","./nn.js":"uEye","./pa-in":"8/+R","./pa-in.js":"8/+R","./pl":"jVdC","./pl.js":"jVdC","./pt":"8mBD","./pt-br":"0tRk","./pt-br.js":"0tRk","./pt.js":"8mBD","./ro":"lyxo","./ro.js":"lyxo","./ru":"lXzo","./ru.js":"lXzo","./sd":"Z4QM","./sd.js":"Z4QM","./se":"//9w","./se.js":"//9w","./si":"7aV9","./si.js":"7aV9","./sk":"e+ae","./sk.js":"e+ae","./sl":"gVVK","./sl.js":"gVVK","./sq":"yPMs","./sq.js":"yPMs","./sr":"zx6S","./sr-cyrl":"E+lV","./sr-cyrl.js":"E+lV","./sr.js":"zx6S","./ss":"Ur1D","./ss.js":"Ur1D","./sv":"X709","./sv.js":"X709","./sw":"dNwA","./sw.js":"dNwA","./ta":"PeUW","./ta.js":"PeUW","./te":"XLvN","./te.js":"XLvN","./tet":"V2x9","./tet.js":"V2x9","./tg":"Oxv6","./tg.js":"Oxv6","./th":"EOgW","./th.js":"EOgW","./tl-ph":"Dzi0","./tl-ph.js":"Dzi0","./tlh":"z3Vd","./tlh.js":"z3Vd","./tr":"DoHr","./tr.js":"DoHr","./tzl":"z1FC","./tzl.js":"z1FC","./tzm":"wQk9","./tzm-latn":"tT3J","./tzm-latn.js":"tT3J","./tzm.js":"wQk9","./ug-cn":"YRex","./ug-cn.js":"YRex","./uk":"raLr","./uk.js":"raLr","./ur":"UpQW","./ur.js":"UpQW","./uz":"Loxo","./uz-latn":"AQ68","./uz-latn.js":"AQ68","./uz.js":"Loxo","./vi":"KSF8","./vi.js":"KSF8","./x-pseudo":"/X5v","./x-pseudo.js":"/X5v","./yo":"fzPg","./yo.js":"fzPg","./zh-cn":"XDpg","./zh-cn.js":"XDpg","./zh-hk":"SatO","./zh-hk.js":"SatO","./zh-tw":"kOpN","./zh-tw.js":"kOpN"};function i(t){var s=n(t);return e(s)}function n(t){if(!e.o(a,t)){var s=new Error("Cannot find module '"+t+"'");throw s.code="MODULE_NOT_FOUND",s}return a[t]}i.keys=function(){return Object.keys(a)},i.resolve=n,t.exports=i,i.id="RnhZ"},SMFL:function(t,s,e){},cRgN:function(t,s,e){},lOBV:function(t,s,e){},ot3S:function(t,s,e){"use strict";var a=e("wd/R"),i=e.n(a),n={name:"Status",props:{account:{type:Object,required:!1,default:function(){return{}}},fetchStatusesByInstance:{type:Boolean,required:!1,default:!1},showCheckbox:{type:Boolean,required:!0,default:!1},status:{type:Object,required:!0},page:{type:Number,required:!1,default:0},userId:{type:String,required:!1,default:""},godmode:{type:Boolean,required:!1,default:!1}},data:function(){return{showHiddenStatus:!1}},methods:{capitalizeFirstLetter:function(t){return t.charAt(0).toUpperCase()+t.slice(1)},changeStatus:function(t,s,e){this.$store.dispatch("ChangeStatusScope",{statusId:t,isSensitive:s,visibility:e,reportCurrentPage:this.page,userId:this.userId,godmode:this.godmode,fetchStatusesByInstance:this.fetchStatusesByInstance})},deleteStatus:function(t){var s=this;this.$confirm("Are you sure you want to delete this status?","Warning",{confirmButtonText:"OK",cancelButtonText:"Cancel",type:"warning"}).then(function(){s.$store.dispatch("DeleteStatus",{statusId:t,reportCurrentPage:s.page,userId:s.userId,godmode:s.godmode,fetchStatusesByInstance:s.fetchStatusesByInstance}),s.$message({type:"success",message:"Delete completed"})}).catch(function(){s.$message({type:"info",message:"Delete canceled"})})},optionPercent:function(t,s){var e=t.options.reduce(function(t,s){return t+s.votes_count},0);return 0===e?0:+(s.votes_count/e*100).toFixed(1)},parseTimestamp:function(t){return i()(t).format("YYYY-MM-DD HH:mm")},handleStatusSelection:function(t){this.$emit("status-selection",t)}}},r=(e("Kw8l"),e("KHd+")),o=Object(r.a)(n,function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("div",[t.status.deleted?e("el-card",{staticClass:"status-card"},[e("div",{attrs:{slot:"header"},slot:"header"},[e("div",{staticClass:"status-header"},[e("div",{staticClass:"status-account-container"},[e("div",{staticClass:"status-account"},[e("h4",{staticClass:"status-deleted"},[t._v(t._s(t.$t("reports.statusDeleted")))])])])])]),t._v(" "),e("div",{staticClass:"status-body"},[t.status.content?e("span",{staticClass:"status-content",domProps:{innerHTML:t._s(t.status.content)}}):e("span",{staticClass:"status-without-content"},[t._v("no content")])]),t._v(" "),t.status.created_at?e("a",{staticClass:"account",attrs:{href:t.status.url,target:"_blank"}},[t._v("\n "+t._s(t.parseTimestamp(t.status.created_at))+"\n ")]):t._e()]):e("el-card",{staticClass:"status-card"},[e("div",{attrs:{slot:"header"},slot:"header"},[e("div",{staticClass:"status-header"},[e("div",{staticClass:"status-account-container"},[e("div",{staticClass:"status-account"},[t.showCheckbox?e("el-checkbox",{staticClass:"status-checkbox",on:{change:function(s){return t.handleStatusSelection(t.account)}}}):t._e(),t._v(" "),e("img",{staticClass:"status-avatar-img",attrs:{src:t.account.avatar}}),t._v(" "),t.account.deactivated?e("span",[e("h3",{staticClass:"status-account-name"},[t._v(t._s(t.account.display_name))]),t._v(" "),e("h3",{staticClass:"status-account-name deactivated"},[t._v(" (deactivated)")])]):e("a",{staticClass:"account",attrs:{href:t.account.url,target:"_blank"}},[e("h3",{staticClass:"status-account-name"},[t._v(t._s(t.account.display_name))])])],1)]),t._v(" "),e("div",{staticClass:"status-actions"},[t.status.sensitive?e("el-tag",{attrs:{type:"warning",size:"large"}},[t._v(t._s(t.$t("reports.sensitive")))]):t._e(),t._v(" "),e("el-tag",{attrs:{size:"large"}},[t._v(t._s(t.capitalizeFirstLetter(t.status.visibility)))]),t._v(" "),e("el-dropdown",{attrs:{trigger:"click"}},[e("el-button",{staticClass:"status-actions-button",attrs:{plain:"",size:"small",icon:"el-icon-edit"}},[t._v("\n "+t._s(t.$t("reports.changeScope"))),e("i",{staticClass:"el-icon-arrow-down el-icon--right"})]),t._v(" "),e("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[t.status.sensitive?t._e():e("el-dropdown-item",{nativeOn:{click:function(s){return t.changeStatus(t.status.id,!0,t.status.visibility)}}},[t._v("\n "+t._s(t.$t("reports.addSensitive"))+"\n ")]),t._v(" "),t.status.sensitive?e("el-dropdown-item",{nativeOn:{click:function(s){return t.changeStatus(t.status.id,!1,t.status.visibility)}}},[t._v("\n "+t._s(t.$t("reports.removeSensitive"))+"\n ")]):t._e(),t._v(" "),"public"!==t.status.visibility?e("el-dropdown-item",{nativeOn:{click:function(s){return t.changeStatus(t.status.id,t.status.sensitive,"public")}}},[t._v("\n "+t._s(t.$t("reports.public"))+"\n ")]):t._e(),t._v(" "),"private"!==t.status.visibility?e("el-dropdown-item",{nativeOn:{click:function(s){return t.changeStatus(t.status.id,t.status.sensitive,"private")}}},[t._v("\n "+t._s(t.$t("reports.private"))+"\n ")]):t._e(),t._v(" "),"unlisted"!==t.status.visibility?e("el-dropdown-item",{nativeOn:{click:function(s){return t.changeStatus(t.status.id,t.status.sensitive,"unlisted")}}},[t._v("\n "+t._s(t.$t("reports.unlisted"))+"\n ")]):t._e(),t._v(" "),e("el-dropdown-item",{nativeOn:{click:function(s){return t.deleteStatus(t.status.id)}}},[t._v("\n "+t._s(t.$t("reports.deleteStatus"))+"\n ")])],1)],1)],1)])]),t._v(" "),e("div",{staticClass:"status-body"},[t.status.spoiler_text?e("div",[e("strong",[t._v(t._s(t.status.spoiler_text))]),t._v(" "),t.showHiddenStatus?t._e():e("el-button",{staticClass:"show-more-button",attrs:{size:"mini"},on:{click:function(s){t.showHiddenStatus=!0}}},[t._v("Show more")]),t._v(" "),t.showHiddenStatus?e("el-button",{staticClass:"show-more-button",attrs:{size:"mini"},on:{click:function(s){t.showHiddenStatus=!1}}},[t._v("Show less")]):t._e(),t._v(" "),t.showHiddenStatus?e("div",[e("span",{staticClass:"status-content",domProps:{innerHTML:t._s(t.status.content)}}),t._v(" "),t.status.poll?e("div",{staticClass:"poll"},[e("ul",t._l(t.status.poll.options,function(s,a){return e("li",{key:a},[t._v("\n "+t._s(s.title)+"\n "),e("el-progress",{attrs:{percentage:t.optionPercent(t.status.poll,s)}})],1)}),0)]):t._e(),t._v(" "),t._l(t.status.media_attachments,function(t,s){return e("div",{key:s,staticClass:"image"},[e("img",{attrs:{src:t.preview_url}})])})],2):t._e()],1):t._e(),t._v(" "),t.status.spoiler_text?t._e():e("div",[e("span",{staticClass:"status-content",domProps:{innerHTML:t._s(t.status.content)}}),t._v(" "),t.status.poll?e("div",{staticClass:"poll"},[e("ul",t._l(t.status.poll.options,function(s,a){return e("li",{key:a},[t._v("\n "+t._s(s.title)+"\n "),e("el-progress",{attrs:{percentage:t.optionPercent(t.status.poll,s)}})],1)}),0)]):t._e(),t._v(" "),t._l(t.status.media_attachments,function(t,s){return e("div",{key:s,staticClass:"image"},[e("img",{attrs:{src:t.preview_url}})])})],2),t._v(" "),e("a",{staticClass:"account",attrs:{href:t.status.url,target:"_blank"}},[t._v("\n "+t._s(t.parseTimestamp(t.status.created_at))+"\n ")])])])],1)},[],!1,null,null,null);o.options.__file="index.vue";s.a=o.exports},rIUS:function(t,s,e){"use strict";var a=e("o0o1"),i=e.n(a),n=e("yXPU"),r=e.n(n),o=e("mSNy"),u={name:"RebootButton",computed:{needReboot:function(){return this.$store.state.app.needReboot}},methods:{restartApp:function(){var t=r()(i.a.mark(function t(){return i.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("RestartApplication");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.restartSuccess")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},c=e("KHd+"),l=Object(c.a)(u,function(){var t=this.$createElement,s=this._self._c||t;return this.needReboot?s("el-tooltip",{attrs:{content:this.$t("settings.restartApp"),placement:"bottom-end"}},[s("el-button",{staticClass:"reboot-button",attrs:{type:"warning"},on:{click:this.restartApp}},[s("span",[s("i",{staticClass:"el-icon-refresh"}),this._v("\n "+this._s(this.$t("settings.instanceReboot"))+"\n ")])])],1):this._e()},[],!1,null,null,null);l.options.__file="index.vue";s.a=l.exports},tIqt:function(t,s,e){"use strict";var a=e("SMFL");e.n(a).a},tPM3:function(t,s,e){"use strict";var a={name:"ModerationDropdown",props:{user:{type:Object,default:function(){return{}}},page:{type:String,default:"users"}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device}},methods:{getPasswordResetToken:function(t){this.$emit("open-reset-token-dialog"),this.$store.dispatch("GetPasswordResetToken",t)},handleConfirmationResend:function(t){this.$store.dispatch("ResendConfirmationEmail",[t])},handleDeletion:function(t){this.$store.dispatch("DeleteUsers",{users:[t],_userId:t.id})},handleEmailConfirmation:function(t){this.$store.dispatch("ConfirmUsersEmail",{users:[t],_userId:t.id})},requirePasswordReset:function(t){this.$store.state.user.nodeInfo.metadata.mailerEnabled?this.$store.dispatch("RequirePasswordReset",[t]):this.$alert(this.$t("users.mailerMustBeEnabled"),"Error",{type:"error"})},showAdminAction:function(t){var s=t.local,e=t.id;return s&&this.showDeactivatedButton(e)},showDeactivatedButton:function(t){return this.$store.state.user.id!==t},toggleActivation:function(t){t.deactivated?this.$store.dispatch("ActivateUsers",{users:[t],_userId:t.id}):this.$store.dispatch("DeactivateUsers",{users:[t],_userId:t.id})},toggleTag:function(t,s){t.tags.includes(s)?this.$store.dispatch("RemoveTag",{users:[t],tag:s,_userId:t.id}):this.$store.dispatch("AddTag",{users:[t],tag:s,_userId:t.id})},toggleUserRight:function(t,s){t.roles[s]?this.$store.dispatch("DeleteRight",{users:[t],right:s,_userId:t.id}):this.$store.dispatch("AddRight",{users:[t],right:s,_userId:t.id})}}},i=(e("53Av"),e("KHd+")),n=Object(i.a)(a,function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("el-dropdown",{attrs:{"hide-on-click":!1,size:"small",trigger:"click"}},[e("div",["users"===t.page?e("span",{staticClass:"el-dropdown-link"},[t._v("\n "+t._s(t.$t("users.moderation"))+"\n "),t.isDesktop?e("i",{staticClass:"el-icon-arrow-down el-icon--right"}):t._e()]):t._e(),t._v(" "),"userPage"===t.page?e("el-button",{staticClass:"moderate-user-button"},[e("span",{staticClass:"moderate-user-button-container"},[e("span",[e("i",{staticClass:"el-icon-edit"}),t._v("\n "+t._s(t.$t("users.moderateUser"))+"\n ")]),t._v(" "),e("i",{staticClass:"el-icon-arrow-down el-icon--right"})])]):t._e()],1),t._v(" "),e("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[t.showAdminAction(t.user)?e("el-dropdown-item",{nativeOn:{click:function(s){return t.toggleUserRight(t.user,"admin")}}},[t._v("\n "+t._s(t.user.roles.admin?t.$t("users.revokeAdmin"):t.$t("users.grantAdmin"))+"\n ")]):t._e(),t._v(" "),t.showAdminAction(t.user)?e("el-dropdown-item",{nativeOn:{click:function(s){return t.toggleUserRight(t.user,"moderator")}}},[t._v("\n "+t._s(t.user.roles.moderator?t.$t("users.revokeModerator"):t.$t("users.grantModerator"))+"\n ")]):t._e(),t._v(" "),t.showDeactivatedButton(t.user.id)?e("el-dropdown-item",{attrs:{divided:t.showAdminAction(t.user)},nativeOn:{click:function(s){return t.toggleActivation(t.user)}}},[t._v("\n "+t._s(t.user.deactivated?t.$t("users.activateAccount"):t.$t("users.deactivateAccount"))+"\n ")]):t._e(),t._v(" "),t.showDeactivatedButton(t.user.id)?e("el-dropdown-item",{nativeOn:{click:function(s){return t.handleDeletion(t.user)}}},[t._v("\n "+t._s(t.$t("users.deleteAccount"))+"\n ")]):t._e(),t._v(" "),t.user.local&&t.user.confirmation_pending?e("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(s){return t.handleEmailConfirmation(t.user)}}},[t._v("\n "+t._s(t.$t("users.confirmAccount"))+"\n ")]):t._e(),t._v(" "),t.user.local&&t.user.confirmation_pending?e("el-dropdown-item",{nativeOn:{click:function(s){return t.handleConfirmationResend(t.user)}}},[t._v("\n "+t._s(t.$t("users.resendConfirmation"))+"\n ")]):t._e(),t._v(" "),e("el-dropdown-item",{class:{"active-tag":t.user.tags.includes("force_nsfw")},attrs:{divided:t.showAdminAction(t.user)},nativeOn:{click:function(s){return t.toggleTag(t.user,"force_nsfw")}}},[t._v("\n "+t._s(t.$t("users.forceNsfw"))+"\n "),t.user.tags.includes("force_nsfw")?e("i",{staticClass:"el-icon-check"}):t._e()]),t._v(" "),e("el-dropdown-item",{class:{"active-tag":t.user.tags.includes("strip_media")},nativeOn:{click:function(s){return t.toggleTag(t.user,"strip_media")}}},[t._v("\n "+t._s(t.$t("users.stripMedia"))+"\n "),t.user.tags.includes("strip_media")?e("i",{staticClass:"el-icon-check"}):t._e()]),t._v(" "),e("el-dropdown-item",{class:{"active-tag":t.user.tags.includes("force_unlisted")},nativeOn:{click:function(s){return t.toggleTag(t.user,"force_unlisted")}}},[t._v("\n "+t._s(t.$t("users.forceUnlisted"))+"\n "),t.user.tags.includes("force_unlisted")?e("i",{staticClass:"el-icon-check"}):t._e()]),t._v(" "),e("el-dropdown-item",{class:{"active-tag":t.user.tags.includes("sandbox")},nativeOn:{click:function(s){return t.toggleTag(t.user,"sandbox")}}},[t._v("\n "+t._s(t.$t("users.sandbox"))+"\n "),t.user.tags.includes("sandbox")?e("i",{staticClass:"el-icon-check"}):t._e()]),t._v(" "),t.user.local?e("el-dropdown-item",{class:{"active-tag":t.user.tags.includes("disable_remote_subscription")},nativeOn:{click:function(s){return t.toggleTag(t.user,"disable_remote_subscription")}}},[t._v("\n "+t._s(t.$t("users.disableRemoteSubscription"))+"\n "),t.user.tags.includes("disable_remote_subscription")?e("i",{staticClass:"el-icon-check"}):t._e()]):t._e(),t._v(" "),t.user.local?e("el-dropdown-item",{class:{"active-tag":t.user.tags.includes("disable_any_subscription")},nativeOn:{click:function(s){return t.toggleTag(t.user,"disable_any_subscription")}}},[t._v("\n "+t._s(t.$t("users.disableAnySubscription"))+"\n "),t.user.tags.includes("disable_any_subscription")?e("i",{staticClass:"el-icon-check"}):t._e()]):t._e(),t._v(" "),t.user.local?e("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(s){return t.getPasswordResetToken(t.user.nickname)}}},[t._v("\n "+t._s(t.$t("users.getPasswordResetToken"))+"\n ")]):t._e(),t._v(" "),t.user.local?e("el-dropdown-item",{nativeOn:{click:function(s){return t.requirePasswordReset(t.user)}}},[t._v("\n "+t._s(t.$t("users.requirePasswordReset"))+"\n ")]):t._e()],1)],1)},[],!1,null,null,null);n.options.__file="ModerationDropdown.vue";s.a=n.exports}}]); -//# sourceMappingURL=chunk-22d2.a0cf7976.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-22d2.a0cf7976.js.map b/priv/static/adminfe/static/js/chunk-22d2.a0cf7976.js.map deleted file mode 100644 index 68735ed26..000000000 --- a/priv/static/adminfe/static/js/chunk-22d2.a0cf7976.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./src/views/users/components/SecuritySettingsModal.vue?5147","webpack:///./src/views/users/show.vue?f435","webpack:///./src/views/users/components/SecuritySettingsModal.vue?49db","webpack:///src/views/users/components/SecuritySettingsModal.vue","webpack:///./src/views/users/components/SecuritySettingsModal.vue","webpack:///./src/views/users/components/SecuritySettingsModal.vue?dd3f","webpack:///./src/views/users/show.vue?ac8b","webpack:///src/views/users/show.vue","webpack:///./src/views/users/show.vue","webpack:///./src/views/users/components/ModerationDropdown.vue?e3f0","webpack:///./src/components/Status/index.vue?aecc","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/components/Status/index.vue?f9b2","webpack:///./src/components/Status/index.vue?6071","webpack:///src/components/Status/index.vue","webpack:///./src/components/Status/index.vue","webpack:///./src/components/RebootButton/index.vue?8db4","webpack:///./src/components/RebootButton/index.vue?2f45","webpack:///src/components/RebootButton/index.vue","webpack:///./src/components/RebootButton/index.vue","webpack:///./src/views/users/show.vue?5f99","webpack:///./src/views/users/components/ModerationDropdown.vue?f4d5","webpack:///./src/views/users/components/ModerationDropdown.vue?676e","webpack:///src/views/users/components/ModerationDropdown.vue","webpack:///./src/views/users/components/ModerationDropdown.vue"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_SecuritySettingsModal_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","components_SecuritySettingsModalvue_type_script_lang_js_","name","props","visible","type","Boolean","default","user","Object","data","securitySettingsForm","newEmail","newPassword","isEmailLoading","isPasswordLoading","computed","isDesktop","this","$store","state","app","device","getLabelWidth","userCredentials","userProfile","mounted","_mounted","asyncToGenerator_default","regenerator_default","a","mark","_callee","wrap","_context","prev","next","dispatch","nickname","email","stop","apply","arguments","methods","updateEmail","_updateEmail","_callee2","credentials","_context2","element_ui_common","message","$t","duration","updatePassword","_updatePassword","_callee3","_context3","password","close","$emit","component","componentNormalizer","_vm","_h","$createElement","_c","_self","staticClass","attrs","before-close","title","model","label-width","label","placeholder","value","callback","$$v","$set","expression","_v","loading","disabled","on","click","$event","_s","minLength","closable","show-icon","length","options","__file","SecuritySettingsModal","users_showvue_type_script_lang_js_","components","ModerationDropdown","RebootButton","Status","showPrivate","resetPasswordDialogOpen","securitySettingsModalVisible","isMobile","isTablet","users","passwordResetLink","passwordResetToken","link","token","statuses","statusesLoading","userProfileLoading","userId","$route","params","id","godmode","closeResetPasswordDialog","onTogglePrivate","openResetPasswordDialog","show_component","_e","src","avatar","size","display_name","page","open-reset-token-dialog","directives","rawName","custom-class","update:visible","href","target","_l","tag","key","tags","roles","moderator","admin","local","deactivated","icon","change","status","account","show-checkbox","user-id","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ModerationDropdown_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","map","./af","./af.js","./ar","./ar-dz","./ar-dz.js","./ar-kw","./ar-kw.js","./ar-ly","./ar-ly.js","./ar-ma","./ar-ma.js","./ar-sa","./ar-sa.js","./ar-tn","./ar-tn.js","./ar.js","./az","./az.js","./be","./be.js","./bg","./bg.js","./bm","./bm.js","./bn","./bn.js","./bo","./bo.js","./br","./br.js","./bs","./bs.js","./ca","./ca.js","./cs","./cs.js","./cv","./cv.js","./cy","./cy.js","./da","./da.js","./de","./de-at","./de-at.js","./de-ch","./de-ch.js","./de.js","./dv","./dv.js","./el","./el.js","./en-SG","./en-SG.js","./en-au","./en-au.js","./en-ca","./en-ca.js","./en-gb","./en-gb.js","./en-ie","./en-ie.js","./en-il","./en-il.js","./en-nz","./en-nz.js","./eo","./eo.js","./es","./es-do","./es-do.js","./es-us","./es-us.js","./es.js","./et","./et.js","./eu","./eu.js","./fa","./fa.js","./fi","./fi.js","./fo","./fo.js","./fr","./fr-ca","./fr-ca.js","./fr-ch","./fr-ch.js","./fr.js","./fy","./fy.js","./ga","./ga.js","./gd","./gd.js","./gl","./gl.js","./gom-latn","./gom-latn.js","./gu","./gu.js","./he","./he.js","./hi","./hi.js","./hr","./hr.js","./hu","./hu.js","./hy-am","./hy-am.js","./id","./id.js","./is","./is.js","./it","./it-ch","./it-ch.js","./it.js","./ja","./ja.js","./jv","./jv.js","./ka","./ka.js","./kk","./kk.js","./km","./km.js","./kn","./kn.js","./ko","./ko.js","./ku","./ku.js","./ky","./ky.js","./lb","./lb.js","./lo","./lo.js","./lt","./lt.js","./lv","./lv.js","./me","./me.js","./mi","./mi.js","./mk","./mk.js","./ml","./ml.js","./mn","./mn.js","./mr","./mr.js","./ms","./ms-my","./ms-my.js","./ms.js","./mt","./mt.js","./my","./my.js","./nb","./nb.js","./ne","./ne.js","./nl","./nl-be","./nl-be.js","./nl.js","./nn","./nn.js","./pa-in","./pa-in.js","./pl","./pl.js","./pt","./pt-br","./pt-br.js","./pt.js","./ro","./ro.js","./ru","./ru.js","./sd","./sd.js","./se","./se.js","./si","./si.js","./sk","./sk.js","./sl","./sl.js","./sq","./sq.js","./sr","./sr-cyrl","./sr-cyrl.js","./sr.js","./ss","./ss.js","./sv","./sv.js","./sw","./sw.js","./ta","./ta.js","./te","./te.js","./tet","./tet.js","./tg","./tg.js","./th","./th.js","./tl-ph","./tl-ph.js","./tlh","./tlh.js","./tr","./tr.js","./tzl","./tzl.js","./tzm","./tzm-latn","./tzm-latn.js","./tzm.js","./ug-cn","./ug-cn.js","./uk","./uk.js","./ur","./ur.js","./uz","./uz-latn","./uz-latn.js","./uz.js","./vi","./vi.js","./x-pseudo","./x-pseudo.js","./yo","./yo.js","./zh-cn","./zh-cn.js","./zh-hk","./zh-hk.js","./zh-tw","./zh-tw.js","webpackContext","req","webpackContextResolve","o","e","Error","code","keys","resolve","module","exports","components_Statusvue_type_script_lang_js_","required","fetchStatusesByInstance","showCheckbox","Number","String","showHiddenStatus","capitalizeFirstLetter","str","charAt","toUpperCase","slice","changeStatus","statusId","isSensitive","visibility","reportCurrentPage","deleteStatus","_this","$confirm","confirmButtonText","cancelButtonText","then","$message","catch","optionPercent","poll","pollOption","allVotes","reduce","acc","option","votes_count","toFixed","parseTimestamp","timestamp","moment_default","format","handleStatusSelection","deleted","slot","domProps","innerHTML","content","url","created_at","trigger","plain","sensitive","nativeOn","spoiler_text","index","percentage","attachment","preview_url","components_RebootButtonvue_type_script_lang_js_","needReboot","restartApp","_restartApp","t0","abrupt","lang","t","placement","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_show_vue_vue_type_style_index_0_id_d4bc7d00_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","components_ModerationDropdownvue_type_script_lang_js_","getPasswordResetToken","handleConfirmationResend","handleDeletion","_userId","handleEmailConfirmation","requirePasswordReset","nodeInfo","metadata","mailerEnabled","$alert","showAdminAction","_ref","showDeactivatedButton","toggleActivation","toggleTag","includes","toggleUserRight","right","hide-on-click","divided","confirmation_pending","class","active-tag"],"mappings":"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AA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OA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","file":"static/js/chunk-22d2.a0cf7976.js","sourcesContent":["import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SecuritySettingsModal.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SecuritySettingsModal.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.userProfileLoading)?_c('main',[(_vm.isDesktop || _vm.isTablet)?_c('header',{staticClass:\"user-page-header\"},[_c('div',{staticClass:\"avatar-name-container\"},[_c('el-avatar',{attrs:{\"src\":_vm.user.avatar,\"size\":\"large\"}}),_vm._v(\" \"),_c('h1',[_vm._v(_vm._s(_vm.user.display_name))])],1),_vm._v(\" \"),_c('div',{staticClass:\"left-header-container\"},[_c('moderation-dropdown',{attrs:{\"user\":_vm.user,\"page\":'userPage'},on:{\"open-reset-token-dialog\":_vm.openResetPasswordDialog}}),_vm._v(\" \"),_c('reboot-button')],1)]):_vm._e(),_vm._v(\" \"),(_vm.isMobile)?_c('div',{staticClass:\"user-page-header-container\"},[_c('header',{staticClass:\"user-page-header\"},[_c('div',{staticClass:\"avatar-name-container\"},[_c('el-avatar',{attrs:{\"src\":_vm.user.avatar,\"size\":\"large\"}}),_vm._v(\" \"),_c('h1',[_vm._v(_vm._s(_vm.user.display_name))])],1),_vm._v(\" \"),_c('reboot-button')],1),_vm._v(\" \"),_c('moderation-dropdown',{attrs:{\"user\":_vm.user,\"page\":'userPage'},on:{\"open-reset-token-dialog\":_vm.openResetPasswordDialog}})],1):_vm._e(),_vm._v(\" \"),_c('el-dialog',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],attrs:{\"visible\":_vm.resetPasswordDialogOpen,\"title\":_vm.$t('users.passwordResetTokenCreated'),\"custom-class\":\"password-reset-token-dialog\"},on:{\"update:visible\":function($event){_vm.resetPasswordDialogOpen=$event},\"close\":_vm.closeResetPasswordDialog}},[_c('div',[_c('p',{staticClass:\"password-reset-token\"},[_vm._v(\"Password reset token was generated: \"+_vm._s(_vm.passwordResetToken))]),_vm._v(\" \"),_c('p',[_vm._v(\"You can also use this link to reset password:\\n \"),_c('a',{staticClass:\"reset-password-link\",attrs:{\"href\":_vm.passwordResetLink,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.passwordResetLink))])])])]),_vm._v(\" \"),_c('div',{staticClass:\"user-profile-container\"},[_c('el-card',{staticClass:\"user-profile-card\"},[_c('div',{staticClass:\"el-table el-table--fit el-table--enable-row-hover el-table--enable-row-transition el-table--medium\"},[_c('table',{staticClass:\"user-profile-table\"},[_c('tbody',[_c('tr',{staticClass:\"el-table__row\"},[_c('td',[_vm._v(_vm._s(_vm.$t('userProfile.nickname')))]),_vm._v(\" \"),_c('td',[_vm._v(\"\\n \"+_vm._s(_vm.user.nickname)+\"\\n \")])]),_vm._v(\" \"),_c('tr',{staticClass:\"el-table__row\"},[_c('td',{staticClass:\"name-col\"},[_vm._v(\"ID\")]),_vm._v(\" \"),_c('td',{staticClass:\"value-col\"},[_vm._v(\"\\n \"+_vm._s(_vm.user.id)+\"\\n \")])]),_vm._v(\" \"),_c('tr',{staticClass:\"el-table__row\"},[_c('td',[_vm._v(_vm._s(_vm.$t('userProfile.tags')))]),_vm._v(\" \"),_c('td',[_vm._l((_vm.user.tags),function(tag){return _c('el-tag',{key:tag,staticClass:\"user-profile-tag\"},[_vm._v(_vm._s(tag))])}),_vm._v(\" \"),(_vm.user.tags.length === 0)?_c('span',[_vm._v(\"—\")]):_vm._e()],2)]),_vm._v(\" \"),_c('tr',{staticClass:\"el-table__row\"},[_c('td',[_vm._v(_vm._s(_vm.$t('userProfile.roles')))]),_vm._v(\" \"),_c('td',[(_vm.user.roles.admin)?_c('el-tag',{staticClass:\"user-profile-tag\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.admin'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.roles.moderator)?_c('el-tag',{staticClass:\"user-profile-tag\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.moderator'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(!_vm.user.roles.moderator && !_vm.user.roles.admin)?_c('span',[_vm._v(\"—\")]):_vm._e()],1)]),_vm._v(\" \"),_c('tr',{staticClass:\"el-table__row\"},[_c('td',[_vm._v(_vm._s(_vm.$t('userProfile.localUppercase')))]),_vm._v(\" \"),_c('td',[(_vm.user.local)?_c('el-tag',{attrs:{\"type\":\"info\"}},[_vm._v(_vm._s(_vm.$t('userProfile.local')))]):_vm._e(),_vm._v(\" \"),(!_vm.user.local)?_c('el-tag',{attrs:{\"type\":\"info\"}},[_vm._v(_vm._s(_vm.$t('userProfile.external')))]):_vm._e()],1)]),_vm._v(\" \"),_c('tr',{staticClass:\"el-table__row\"},[_c('td',[_vm._v(_vm._s(_vm.$t('userProfile.activeUppercase')))]),_vm._v(\" \"),_c('td',[(!_vm.user.deactivated)?_c('el-tag',{attrs:{\"type\":\"success\"}},[_vm._v(_vm._s(_vm.$t('userProfile.active')))]):_vm._e(),_vm._v(\" \"),(_vm.user.deactivated)?_c('el-tag',{attrs:{\"type\":\"danger\"}},[_vm._v(_vm._s(_vm.$t('userProfile.deactivated')))]):_vm._e()],1)])])])]),_vm._v(\" \"),_c('el-button',{staticClass:\"security-setting-button\",attrs:{\"icon\":\"el-icon-lock\"},on:{\"click\":function($event){_vm.securitySettingsModalVisible = true}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('userProfile.securitySettings.securitySettings'))+\"\\n \")]),_vm._v(\" \"),_c('SecuritySettingsModal',{attrs:{\"user\":_vm.user,\"visible\":_vm.securitySettingsModalVisible},on:{\"close\":function($event){_vm.securitySettingsModalVisible = false}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"recent-statuses-container\"},[_c('h2',{staticClass:\"recent-statuses\"},[_vm._v(_vm._s(_vm.$t('userProfile.recentStatuses')))]),_vm._v(\" \"),_c('el-checkbox',{staticClass:\"show-private-statuses\",on:{\"change\":_vm.onTogglePrivate},model:{value:(_vm.showPrivate),callback:function ($$v) {_vm.showPrivate=$$v},expression:\"showPrivate\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.showPrivateStatuses'))+\"\\n \")]),_vm._v(\" \"),(!_vm.statusesLoading)?_c('el-timeline',{staticClass:\"statuses\"},[_vm._l((_vm.statuses),function(status){return _c('el-timeline-item',{key:status.id},[_c('status',{attrs:{\"status\":status,\"account\":status.account,\"show-checkbox\":false,\"user-id\":_vm.user.id,\"godmode\":_vm.showPrivate}})],1)}),_vm._v(\" \"),(_vm.statuses.length === 0)?_c('p',{staticClass:\"no-statuses\"},[_vm._v(_vm._s(_vm.$t('userProfile.noStatuses')))]):_vm._e()],2):_vm._e()],1)],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SecuritySettingsModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SecuritySettingsModal.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./SecuritySettingsModal.vue?vue&type=template&id=7fb08478&\"\nimport script from \"./SecuritySettingsModal.vue?vue&type=script&lang=js&\"\nexport * from \"./SecuritySettingsModal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SecuritySettingsModal.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"SecuritySettingsModal.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{staticClass:\"security-settings-modal\",attrs:{\"before-close\":_vm.close,\"title\":_vm.$t('userProfile.securitySettings.securitySettings'),\"visible\":_vm.visible}},[_c('el-form',{attrs:{\"model\":_vm.securitySettingsForm,\"label-width\":_vm.getLabelWidth}},[_c('el-form-item',{attrs:{\"label\":_vm.$t('userProfile.securitySettings.email')}},[_c('el-input',{attrs:{\"placeholder\":_vm.$t('userProfile.securitySettings.inputNewEmail')},model:{value:(_vm.securitySettingsForm.newEmail),callback:function ($$v) {_vm.$set(_vm.securitySettingsForm, \"newEmail\", $$v)},expression:\"securitySettingsForm.newEmail\"}})],1),_vm._v(\" \"),_c('el-form-item',[_c('el-button',{staticClass:\"security-settings-submit-button\",attrs:{\"loading\":_vm.securitySettingsForm.isEmailLoading,\"disabled\":!_vm.securitySettingsForm.newEmail || _vm.securitySettingsForm.newEmail === _vm.userCredentials.email,\"type\":\"primary\"},on:{\"click\":function($event){return _vm.updateEmail()}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('userProfile.securitySettings.submit'))+\"\\n \")])],1),_vm._v(\" \"),_c('el-form-item',{staticClass:\"password-input\",attrs:{\"label\":_vm.$t('userProfile.securitySettings.password')}},[_c('el-input',{attrs:{\"placeholder\":_vm.$t('userProfile.securitySettings.inputNewPassword')},model:{value:(_vm.securitySettingsForm.newPassword),callback:function ($$v) {_vm.$set(_vm.securitySettingsForm, \"newPassword\", $$v)},expression:\"securitySettingsForm.newPassword\"}}),_vm._v(\" \"),_c('small',{staticClass:\"form-text\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('userProfile.securitySettings.passwordLengthNotice', { minLength: 8 }))+\"\\n \")])],1),_vm._v(\" \"),_c('el-alert',{staticClass:\"password-alert\",attrs:{\"closable\":false,\"type\":\"warning\",\"show-icon\":\"\"}},[_c('p',[_vm._v(_vm._s(_vm.$t('userProfile.securitySettings.passwordChangeWarning1')))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('userProfile.securitySettings.passwordChangeWarning2')))])]),_vm._v(\" \"),_c('el-form-item',[_c('el-button',{staticClass:\"security-settings-submit-button\",attrs:{\"loading\":_vm.securitySettingsForm.isPasswordLoading,\"disabled\":_vm.securitySettingsForm.newPassword.length < 8,\"type\":\"primary\"},on:{\"click\":function($event){return _vm.updatePassword()}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('userProfile.securitySettings.submit'))+\"\\n \")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./show.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./show.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./show.vue?vue&type=template&id=d4bc7d00&scoped=true&\"\nimport script from \"./show.vue?vue&type=script&lang=js&\"\nexport * from \"./show.vue?vue&type=script&lang=js&\"\nimport style0 from \"./show.vue?vue&type=style&index=0&id=d4bc7d00&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d4bc7d00\",\n null\n \n)\n\ncomponent.options.__file = \"show.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var map = {\n\t\"./af\": \"K/tc\",\n\t\"./af.js\": \"K/tc\",\n\t\"./ar\": \"jnO4\",\n\t\"./ar-dz\": \"o1bE\",\n\t\"./ar-dz.js\": \"o1bE\",\n\t\"./ar-kw\": \"Qj4J\",\n\t\"./ar-kw.js\": \"Qj4J\",\n\t\"./ar-ly\": \"HP3h\",\n\t\"./ar-ly.js\": \"HP3h\",\n\t\"./ar-ma\": \"CoRJ\",\n\t\"./ar-ma.js\": \"CoRJ\",\n\t\"./ar-sa\": \"gjCT\",\n\t\"./ar-sa.js\": \"gjCT\",\n\t\"./ar-tn\": \"bYM6\",\n\t\"./ar-tn.js\": \"bYM6\",\n\t\"./ar.js\": \"jnO4\",\n\t\"./az\": \"SFxW\",\n\t\"./az.js\": \"SFxW\",\n\t\"./be\": \"H8ED\",\n\t\"./be.js\": \"H8ED\",\n\t\"./bg\": \"hKrs\",\n\t\"./bg.js\": \"hKrs\",\n\t\"./bm\": \"p/rL\",\n\t\"./bm.js\": \"p/rL\",\n\t\"./bn\": \"kEOa\",\n\t\"./bn.js\": \"kEOa\",\n\t\"./bo\": \"0mo+\",\n\t\"./bo.js\": \"0mo+\",\n\t\"./br\": \"aIdf\",\n\t\"./br.js\": \"aIdf\",\n\t\"./bs\": \"JVSJ\",\n\t\"./bs.js\": \"JVSJ\",\n\t\"./ca\": \"1xZ4\",\n\t\"./ca.js\": \"1xZ4\",\n\t\"./cs\": \"PA2r\",\n\t\"./cs.js\": \"PA2r\",\n\t\"./cv\": \"A+xa\",\n\t\"./cv.js\": \"A+xa\",\n\t\"./cy\": \"l5ep\",\n\t\"./cy.js\": \"l5ep\",\n\t\"./da\": \"DxQv\",\n\t\"./da.js\": \"DxQv\",\n\t\"./de\": \"tGlX\",\n\t\"./de-at\": \"s+uk\",\n\t\"./de-at.js\": \"s+uk\",\n\t\"./de-ch\": \"u3GI\",\n\t\"./de-ch.js\": \"u3GI\",\n\t\"./de.js\": \"tGlX\",\n\t\"./dv\": \"WYrj\",\n\t\"./dv.js\": \"WYrj\",\n\t\"./el\": \"jUeY\",\n\t\"./el.js\": \"jUeY\",\n\t\"./en-SG\": \"zavE\",\n\t\"./en-SG.js\": \"zavE\",\n\t\"./en-au\": \"Dmvi\",\n\t\"./en-au.js\": \"Dmvi\",\n\t\"./en-ca\": \"OIYi\",\n\t\"./en-ca.js\": \"OIYi\",\n\t\"./en-gb\": \"Oaa7\",\n\t\"./en-gb.js\": \"Oaa7\",\n\t\"./en-ie\": \"4dOw\",\n\t\"./en-ie.js\": \"4dOw\",\n\t\"./en-il\": \"czMo\",\n\t\"./en-il.js\": \"czMo\",\n\t\"./en-nz\": \"b1Dy\",\n\t\"./en-nz.js\": \"b1Dy\",\n\t\"./eo\": \"Zduo\",\n\t\"./eo.js\": \"Zduo\",\n\t\"./es\": \"iYuL\",\n\t\"./es-do\": \"CjzT\",\n\t\"./es-do.js\": \"CjzT\",\n\t\"./es-us\": \"Vclq\",\n\t\"./es-us.js\": \"Vclq\",\n\t\"./es.js\": \"iYuL\",\n\t\"./et\": \"7BjC\",\n\t\"./et.js\": \"7BjC\",\n\t\"./eu\": \"D/JM\",\n\t\"./eu.js\": \"D/JM\",\n\t\"./fa\": \"jfSC\",\n\t\"./fa.js\": \"jfSC\",\n\t\"./fi\": \"gekB\",\n\t\"./fi.js\": \"gekB\",\n\t\"./fo\": \"ByF4\",\n\t\"./fo.js\": \"ByF4\",\n\t\"./fr\": \"nyYc\",\n\t\"./fr-ca\": \"2fjn\",\n\t\"./fr-ca.js\": \"2fjn\",\n\t\"./fr-ch\": \"Dkky\",\n\t\"./fr-ch.js\": \"Dkky\",\n\t\"./fr.js\": \"nyYc\",\n\t\"./fy\": \"cRix\",\n\t\"./fy.js\": \"cRix\",\n\t\"./ga\": \"USCx\",\n\t\"./ga.js\": \"USCx\",\n\t\"./gd\": \"9rRi\",\n\t\"./gd.js\": \"9rRi\",\n\t\"./gl\": \"iEDd\",\n\t\"./gl.js\": \"iEDd\",\n\t\"./gom-latn\": \"DKr+\",\n\t\"./gom-latn.js\": \"DKr+\",\n\t\"./gu\": \"4MV3\",\n\t\"./gu.js\": \"4MV3\",\n\t\"./he\": \"x6pH\",\n\t\"./he.js\": \"x6pH\",\n\t\"./hi\": \"3E1r\",\n\t\"./hi.js\": \"3E1r\",\n\t\"./hr\": \"S6ln\",\n\t\"./hr.js\": \"S6ln\",\n\t\"./hu\": \"WxRl\",\n\t\"./hu.js\": \"WxRl\",\n\t\"./hy-am\": \"1rYy\",\n\t\"./hy-am.js\": \"1rYy\",\n\t\"./id\": \"UDhR\",\n\t\"./id.js\": \"UDhR\",\n\t\"./is\": \"BVg3\",\n\t\"./is.js\": \"BVg3\",\n\t\"./it\": \"bpih\",\n\t\"./it-ch\": \"bxKX\",\n\t\"./it-ch.js\": \"bxKX\",\n\t\"./it.js\": \"bpih\",\n\t\"./ja\": \"B55N\",\n\t\"./ja.js\": \"B55N\",\n\t\"./jv\": \"tUCv\",\n\t\"./jv.js\": \"tUCv\",\n\t\"./ka\": \"IBtZ\",\n\t\"./ka.js\": \"IBtZ\",\n\t\"./kk\": \"bXm7\",\n\t\"./kk.js\": \"bXm7\",\n\t\"./km\": \"6B0Y\",\n\t\"./km.js\": \"6B0Y\",\n\t\"./kn\": \"PpIw\",\n\t\"./kn.js\": \"PpIw\",\n\t\"./ko\": \"Ivi+\",\n\t\"./ko.js\": \"Ivi+\",\n\t\"./ku\": \"JCF/\",\n\t\"./ku.js\": \"JCF/\",\n\t\"./ky\": \"lgnt\",\n\t\"./ky.js\": \"lgnt\",\n\t\"./lb\": \"RAwQ\",\n\t\"./lb.js\": \"RAwQ\",\n\t\"./lo\": \"sp3z\",\n\t\"./lo.js\": \"sp3z\",\n\t\"./lt\": \"JvlW\",\n\t\"./lt.js\": \"JvlW\",\n\t\"./lv\": \"uXwI\",\n\t\"./lv.js\": \"uXwI\",\n\t\"./me\": \"KTz0\",\n\t\"./me.js\": \"KTz0\",\n\t\"./mi\": \"aIsn\",\n\t\"./mi.js\": \"aIsn\",\n\t\"./mk\": \"aQkU\",\n\t\"./mk.js\": \"aQkU\",\n\t\"./ml\": \"AvvY\",\n\t\"./ml.js\": \"AvvY\",\n\t\"./mn\": \"lYtQ\",\n\t\"./mn.js\": \"lYtQ\",\n\t\"./mr\": \"Ob0Z\",\n\t\"./mr.js\": \"Ob0Z\",\n\t\"./ms\": \"6+QB\",\n\t\"./ms-my\": \"ZAMP\",\n\t\"./ms-my.js\": \"ZAMP\",\n\t\"./ms.js\": \"6+QB\",\n\t\"./mt\": \"G0Uy\",\n\t\"./mt.js\": \"G0Uy\",\n\t\"./my\": \"honF\",\n\t\"./my.js\": \"honF\",\n\t\"./nb\": \"bOMt\",\n\t\"./nb.js\": \"bOMt\",\n\t\"./ne\": \"OjkT\",\n\t\"./ne.js\": \"OjkT\",\n\t\"./nl\": \"+s0g\",\n\t\"./nl-be\": \"2ykv\",\n\t\"./nl-be.js\": \"2ykv\",\n\t\"./nl.js\": \"+s0g\",\n\t\"./nn\": \"uEye\",\n\t\"./nn.js\": \"uEye\",\n\t\"./pa-in\": \"8/+R\",\n\t\"./pa-in.js\": \"8/+R\",\n\t\"./pl\": \"jVdC\",\n\t\"./pl.js\": \"jVdC\",\n\t\"./pt\": \"8mBD\",\n\t\"./pt-br\": \"0tRk\",\n\t\"./pt-br.js\": \"0tRk\",\n\t\"./pt.js\": \"8mBD\",\n\t\"./ro\": \"lyxo\",\n\t\"./ro.js\": \"lyxo\",\n\t\"./ru\": \"lXzo\",\n\t\"./ru.js\": \"lXzo\",\n\t\"./sd\": \"Z4QM\",\n\t\"./sd.js\": \"Z4QM\",\n\t\"./se\": \"//9w\",\n\t\"./se.js\": \"//9w\",\n\t\"./si\": \"7aV9\",\n\t\"./si.js\": \"7aV9\",\n\t\"./sk\": \"e+ae\",\n\t\"./sk.js\": \"e+ae\",\n\t\"./sl\": \"gVVK\",\n\t\"./sl.js\": \"gVVK\",\n\t\"./sq\": \"yPMs\",\n\t\"./sq.js\": \"yPMs\",\n\t\"./sr\": \"zx6S\",\n\t\"./sr-cyrl\": \"E+lV\",\n\t\"./sr-cyrl.js\": \"E+lV\",\n\t\"./sr.js\": \"zx6S\",\n\t\"./ss\": \"Ur1D\",\n\t\"./ss.js\": \"Ur1D\",\n\t\"./sv\": \"X709\",\n\t\"./sv.js\": \"X709\",\n\t\"./sw\": \"dNwA\",\n\t\"./sw.js\": \"dNwA\",\n\t\"./ta\": \"PeUW\",\n\t\"./ta.js\": \"PeUW\",\n\t\"./te\": \"XLvN\",\n\t\"./te.js\": \"XLvN\",\n\t\"./tet\": \"V2x9\",\n\t\"./tet.js\": \"V2x9\",\n\t\"./tg\": \"Oxv6\",\n\t\"./tg.js\": \"Oxv6\",\n\t\"./th\": \"EOgW\",\n\t\"./th.js\": \"EOgW\",\n\t\"./tl-ph\": \"Dzi0\",\n\t\"./tl-ph.js\": \"Dzi0\",\n\t\"./tlh\": \"z3Vd\",\n\t\"./tlh.js\": \"z3Vd\",\n\t\"./tr\": \"DoHr\",\n\t\"./tr.js\": \"DoHr\",\n\t\"./tzl\": \"z1FC\",\n\t\"./tzl.js\": \"z1FC\",\n\t\"./tzm\": \"wQk9\",\n\t\"./tzm-latn\": \"tT3J\",\n\t\"./tzm-latn.js\": \"tT3J\",\n\t\"./tzm.js\": \"wQk9\",\n\t\"./ug-cn\": \"YRex\",\n\t\"./ug-cn.js\": \"YRex\",\n\t\"./uk\": \"raLr\",\n\t\"./uk.js\": \"raLr\",\n\t\"./ur\": \"UpQW\",\n\t\"./ur.js\": \"UpQW\",\n\t\"./uz\": \"Loxo\",\n\t\"./uz-latn\": \"AQ68\",\n\t\"./uz-latn.js\": \"AQ68\",\n\t\"./uz.js\": \"Loxo\",\n\t\"./vi\": \"KSF8\",\n\t\"./vi.js\": \"KSF8\",\n\t\"./x-pseudo\": \"/X5v\",\n\t\"./x-pseudo.js\": \"/X5v\",\n\t\"./yo\": \"fzPg\",\n\t\"./yo.js\": \"fzPg\",\n\t\"./zh-cn\": \"XDpg\",\n\t\"./zh-cn.js\": \"XDpg\",\n\t\"./zh-hk\": \"SatO\",\n\t\"./zh-hk.js\": \"SatO\",\n\t\"./zh-tw\": \"kOpN\",\n\t\"./zh-tw.js\": \"kOpN\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"RnhZ\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(!_vm.status.deleted)?_c('el-card',{staticClass:\"status-card\"},[_c('div',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('div',{staticClass:\"status-header\"},[_c('div',{staticClass:\"status-account-container\"},[_c('div',{staticClass:\"status-account\"},[(_vm.showCheckbox)?_c('el-checkbox',{staticClass:\"status-checkbox\",on:{\"change\":function($event){return _vm.handleStatusSelection(_vm.account)}}}):_vm._e(),_vm._v(\" \"),_c('img',{staticClass:\"status-avatar-img\",attrs:{\"src\":_vm.account.avatar}}),_vm._v(\" \"),(!_vm.account.deactivated)?_c('a',{staticClass:\"account\",attrs:{\"href\":_vm.account.url,\"target\":\"_blank\"}},[_c('h3',{staticClass:\"status-account-name\"},[_vm._v(_vm._s(_vm.account.display_name))])]):_c('span',[_c('h3',{staticClass:\"status-account-name\"},[_vm._v(_vm._s(_vm.account.display_name))]),_vm._v(\" \"),_c('h3',{staticClass:\"status-account-name deactivated\"},[_vm._v(\" (deactivated)\")])])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"status-actions\"},[(_vm.status.sensitive)?_c('el-tag',{attrs:{\"type\":\"warning\",\"size\":\"large\"}},[_vm._v(_vm._s(_vm.$t('reports.sensitive')))]):_vm._e(),_vm._v(\" \"),_c('el-tag',{attrs:{\"size\":\"large\"}},[_vm._v(_vm._s(_vm.capitalizeFirstLetter(_vm.status.visibility)))]),_vm._v(\" \"),_c('el-dropdown',{attrs:{\"trigger\":\"click\"}},[_c('el-button',{staticClass:\"status-actions-button\",attrs:{\"plain\":\"\",\"size\":\"small\",\"icon\":\"el-icon-edit\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.changeScope'))),_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"})]),_vm._v(\" \"),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[(!_vm.status.sensitive)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeStatus(_vm.status.id, true, _vm.status.visibility)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.addSensitive'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.status.sensitive)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeStatus(_vm.status.id, false, _vm.status.visibility)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.removeSensitive'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.status.visibility !== 'public')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeStatus(_vm.status.id, _vm.status.sensitive, 'public')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.public'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.status.visibility !== 'private')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeStatus(_vm.status.id, _vm.status.sensitive, 'private')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.private'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.status.visibility !== 'unlisted')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeStatus(_vm.status.id, _vm.status.sensitive, 'unlisted')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.unlisted'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.deleteStatus(_vm.status.id)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.deleteStatus'))+\"\\n \")])],1)],1)],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"status-body\"},[(_vm.status.spoiler_text)?_c('div',[_c('strong',[_vm._v(_vm._s(_vm.status.spoiler_text))]),_vm._v(\" \"),(!_vm.showHiddenStatus)?_c('el-button',{staticClass:\"show-more-button\",attrs:{\"size\":\"mini\"},on:{\"click\":function($event){_vm.showHiddenStatus = true}}},[_vm._v(\"Show more\")]):_vm._e(),_vm._v(\" \"),(_vm.showHiddenStatus)?_c('el-button',{staticClass:\"show-more-button\",attrs:{\"size\":\"mini\"},on:{\"click\":function($event){_vm.showHiddenStatus = false}}},[_vm._v(\"Show less\")]):_vm._e(),_vm._v(\" \"),(_vm.showHiddenStatus)?_c('div',[_c('span',{staticClass:\"status-content\",domProps:{\"innerHTML\":_vm._s(_vm.status.content)}}),_vm._v(\" \"),(_vm.status.poll)?_c('div',{staticClass:\"poll\"},[_c('ul',_vm._l((_vm.status.poll.options),function(option,index){return _c('li',{key:index},[_vm._v(\"\\n \"+_vm._s(option.title)+\"\\n \"),_c('el-progress',{attrs:{\"percentage\":_vm.optionPercent(_vm.status.poll, option)}})],1)}),0)]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.status.media_attachments),function(attachment,index){return _c('div',{key:index,staticClass:\"image\"},[_c('img',{attrs:{\"src\":attachment.preview_url}})])})],2):_vm._e()],1):_vm._e(),_vm._v(\" \"),(!_vm.status.spoiler_text)?_c('div',[_c('span',{staticClass:\"status-content\",domProps:{\"innerHTML\":_vm._s(_vm.status.content)}}),_vm._v(\" \"),(_vm.status.poll)?_c('div',{staticClass:\"poll\"},[_c('ul',_vm._l((_vm.status.poll.options),function(option,index){return _c('li',{key:index},[_vm._v(\"\\n \"+_vm._s(option.title)+\"\\n \"),_c('el-progress',{attrs:{\"percentage\":_vm.optionPercent(_vm.status.poll, option)}})],1)}),0)]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.status.media_attachments),function(attachment,index){return _c('div',{key:index,staticClass:\"image\"},[_c('img',{attrs:{\"src\":attachment.preview_url}})])})],2):_vm._e(),_vm._v(\" \"),_c('a',{staticClass:\"account\",attrs:{\"href\":_vm.status.url,\"target\":\"_blank\"}},[_vm._v(\"\\n \"+_vm._s(_vm.parseTimestamp(_vm.status.created_at))+\"\\n \")])])]):_c('el-card',{staticClass:\"status-card\"},[_c('div',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('div',{staticClass:\"status-header\"},[_c('div',{staticClass:\"status-account-container\"},[_c('div',{staticClass:\"status-account\"},[_c('h4',{staticClass:\"status-deleted\"},[_vm._v(_vm._s(_vm.$t('reports.statusDeleted')))])])])])]),_vm._v(\" \"),_c('div',{staticClass:\"status-body\"},[(_vm.status.content)?_c('span',{staticClass:\"status-content\",domProps:{\"innerHTML\":_vm._s(_vm.status.content)}}):_c('span',{staticClass:\"status-without-content\"},[_vm._v(\"no content\")])]),_vm._v(\" \"),(_vm.status.created_at)?_c('a',{staticClass:\"account\",attrs:{\"href\":_vm.status.url,\"target\":\"_blank\"}},[_vm._v(\"\\n \"+_vm._s(_vm.parseTimestamp(_vm.status.created_at))+\"\\n \")]):_vm._e()])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=0fdc1bba&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.needReboot)?_c('el-tooltip',{attrs:{\"content\":_vm.$t('settings.restartApp'),\"placement\":\"bottom-end\"}},[_c('el-button',{staticClass:\"reboot-button\",attrs:{\"type\":\"warning\"},on:{\"click\":_vm.restartApp}},[_c('span',[_c('i',{staticClass:\"el-icon-refresh\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.instanceReboot'))+\"\\n \")])])],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=53cfaf1d&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./show.vue?vue&type=style&index=0&id=d4bc7d00&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./show.vue?vue&type=style&index=0&id=d4bc7d00&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dropdown',{attrs:{\"hide-on-click\":false,\"size\":\"small\",\"trigger\":\"click\"}},[_c('div',[(_vm.page === 'users')?_c('span',{staticClass:\"el-dropdown-link\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.moderation'))+\"\\n \"),(_vm.isDesktop)?_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.page === 'userPage')?_c('el-button',{staticClass:\"moderate-user-button\"},[_c('span',{staticClass:\"moderate-user-button-container\"},[_c('span',[_c('i',{staticClass:\"el-icon-edit\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('users.moderateUser'))+\"\\n \")]),_vm._v(\" \"),_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"})])]):_vm._e()],1),_vm._v(\" \"),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[(_vm.showAdminAction(_vm.user))?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.toggleUserRight(_vm.user, 'admin')}}},[_vm._v(\"\\n \"+_vm._s(_vm.user.roles.admin ? _vm.$t('users.revokeAdmin') : _vm.$t('users.grantAdmin'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showAdminAction(_vm.user))?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.toggleUserRight(_vm.user, 'moderator')}}},[_vm._v(\"\\n \"+_vm._s(_vm.user.roles.moderator ? _vm.$t('users.revokeModerator') : _vm.$t('users.grantModerator'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showDeactivatedButton(_vm.user.id))?_c('el-dropdown-item',{attrs:{\"divided\":_vm.showAdminAction(_vm.user)},nativeOn:{\"click\":function($event){return _vm.toggleActivation(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.user.deactivated ? _vm.$t('users.activateAccount') : _vm.$t('users.deactivateAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showDeactivatedButton(_vm.user.id))?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleDeletion(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.deleteAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.user.confirmation_pending)?_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.handleEmailConfirmation(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.confirmAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.user.confirmation_pending)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleConfirmationResend(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.resendConfirmation'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('force_nsfw') },attrs:{\"divided\":_vm.showAdminAction(_vm.user)},nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'force_nsfw')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.forceNsfw'))+\"\\n \"),(_vm.user.tags.includes('force_nsfw'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('strip_media') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'strip_media')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.stripMedia'))+\"\\n \"),(_vm.user.tags.includes('strip_media'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('force_unlisted') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'force_unlisted')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.forceUnlisted'))+\"\\n \"),(_vm.user.tags.includes('force_unlisted'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('sandbox') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'sandbox')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.sandbox'))+\"\\n \"),(_vm.user.tags.includes('sandbox'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('disable_remote_subscription') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'disable_remote_subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableRemoteSubscription'))+\"\\n \"),(_vm.user.tags.includes('disable_remote_subscription'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('disable_any_subscription') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'disable_any_subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableAnySubscription'))+\"\\n \"),(_vm.user.tags.includes('disable_any_subscription'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.getPasswordResetToken(_vm.user.nickname)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.getPasswordResetToken'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.requirePasswordReset(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.requirePasswordReset'))+\"\\n \")]):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./ModerationDropdown.vue?vue&type=template&id=4841469c&\"\nimport script from \"./ModerationDropdown.vue?vue&type=script&lang=js&\"\nexport * from \"./ModerationDropdown.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ModerationDropdown.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"ModerationDropdown.vue\"\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-3384.b2ebeeca.js b/priv/static/adminfe/static/js/chunk-3384.b2ebeeca.js deleted file mode 100644 index 6a161a0c6..000000000 --- a/priv/static/adminfe/static/js/chunk-3384.b2ebeeca.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-3384"],{"26YS":function(e,t,a){"use strict";a.r(t);var o=a("o0o1"),s=a.n(o),i=a("yXPU"),c=a.n(i),n=a("mm8V"),l={props:{host:{type:String,required:!0},packName:{type:String,required:!0},shortcode:{type:String,required:!0},file:{type:String,required:!0},isLocal:{type:Boolean,required:!0}},data:function(){return{newShortcode:null,newFile:null,copyToLocalPackName:null,copyPopoverVisible:!1,copyToShortcode:"",copyToFilename:""}},computed:{emojiName:{get:function(){return null!==this.newShortcode?this.newShortcode:this.shortcode},set:function(e){this.newShortcode=e}},emojiFile:{get:function(){return null!==this.newFile?this.newFile:this.file},set:function(e){this.newFile=e}},isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device},localPacks:function(){return this.$store.state.emojiPacks.localPacks},remoteInstance:function(){return new URL(this.$store.state.emojiPacks.remoteInstance).host}},methods:{update:function(){var e=c()(s.a.mark(function e(){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:e.prev=0,this.$store.dispatch("UpdateEmojiFile",{packName:this.packName,shortcode:this.shortcode,newShortcode:this.emojiName,newFilename:this.emojiFile,force:!0}),e.next=7;break;case 4:return e.prev=4,e.t0=e.catch(0),e.abrupt("return");case 7:this.newShortcode=null,this.newFile=null,this.$store.dispatch("ReloadEmoji");case 10:case"end":return e.stop()}},e,this,[[0,4]])}));return function(){return e.apply(this,arguments)}}(),remove:function(){var e=this;this.$confirm("This will delete the emoji, are you sure?","Warning",{confirmButtonText:"Yes, delete the emoji",cancelButtonText:"No, leave it be",type:"warning"}).then(function(){e.$store.dispatch("DeleteEmojiFile",{packName:e.packName,shortcode:e.shortcode}).then(function(){e.newShortcode=null,e.newFile=null,e.$store.dispatch("ReloadEmoji")})})},copyToLocal:function(){try{this.$store.dispatch("AddNewEmojiFile",{packName:this.copyToLocalPackName,file:this.addressOfEmojiInPack(this.remoteInstance,this.packName,this.file),shortcode:""!==this.copyToShortcode.trim()?this.copyToShortcode.trim():this.shortcode,filename:""!==this.copyToFilename.trim()?this.copyToFilename.trim():this.file})}catch(e){return}this.copyToLocalPackName=null,this.copyToLocalVisible=!1,this.copyToShortcode="",this.copyToFilename="",this.$store.dispatch("ReloadEmoji")},addressOfEmojiInPack:n.b}},r=(a("4ySm"),a("KHd+")),m=Object(r.a)(l,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",[e.isLocal?a("div",{class:e.isMobile?"emoji-container-flex":"emoji-container-grid"},[a("img",{staticClass:"emoji-preview-img",attrs:{src:e.addressOfEmojiInPack(e.host,e.packName,e.file)}}),e._v(" "),a("el-input",{staticClass:"emoji-info",attrs:{placeholder:e.$t("emoji.shortcode")},model:{value:e.emojiName,callback:function(t){e.emojiName=t},expression:"emojiName"}}),e._v(" "),a("el-input",{staticClass:"emoji-info",attrs:{placeholder:e.$t("emoji.file")},model:{value:e.emojiFile,callback:function(t){e.emojiFile=t},expression:"emojiFile"}}),e._v(" "),a("div",{staticClass:"emoji-buttons"},[a("el-button",{attrs:{type:"primary"},on:{click:e.update}},[e._v(e._s(e.$t("emoji.update")))]),e._v(" "),a("el-button",{staticClass:"remove-emoji-button",on:{click:e.remove}},[e._v(e._s(e.$t("emoji.remove")))])],1)],1):e._e(),e._v(" "),e.isLocal?e._e():a("div",{class:e.isMobile?"emoji-container-flex":"remote-emoji-container-grid"},[a("img",{staticClass:"emoji-preview-img",attrs:{src:e.addressOfEmojiInPack(e.remoteInstance,e.packName,e.file)}}),e._v(" "),a("el-input",{staticClass:"emoji-info",attrs:{value:e.emojiName,placeholder:e.$t("emoji.shortcode")}}),e._v(" "),a("el-input",{staticClass:"emoji-info",attrs:{value:e.emojiFile,placeholder:e.$t("emoji.file")}}),e._v(" "),a("el-popover",{staticClass:"copy-pack-container",attrs:{placement:"left-start","popper-class":"copy-popover"},model:{value:e.copyPopoverVisible,callback:function(t){e.copyPopoverVisible=t},expression:"copyPopoverVisible"}},[a("p",[e._v(e._s(e.$t("emoji.selectLocalPack")))]),e._v(" "),a("el-select",{staticClass:"copy-pack-select",attrs:{placeholder:e.$t("emoji.localPack")},model:{value:e.copyToLocalPackName,callback:function(t){e.copyToLocalPackName=t},expression:"copyToLocalPackName"}},e._l(e.localPacks,function(e,t){return a("el-option",{key:t,attrs:{label:t,value:t}})}),1),e._v(" "),a("p",[e._v(e._s(e.$t("emoji.specifyShortcode")))]),e._v(" "),a("el-input",{attrs:{placeholder:e.$t("emoji.leaveEmptyShortcode")},model:{value:e.copyToShortcode,callback:function(t){e.copyToShortcode=t},expression:"copyToShortcode"}}),e._v(" "),a("p",[e._v(e._s(e.$t("emoji.specifyFilename")))]),e._v(" "),a("el-input",{attrs:{placeholder:e.$t("emoji.leaveEmptyFilename")},model:{value:e.copyToFilename,callback:function(t){e.copyToFilename=t},expression:"copyToFilename"}}),e._v(" "),a("el-button",{staticClass:"copy-to-local-pack-button",attrs:{disabled:!e.copyToLocalPackName,type:"primary"},on:{click:e.copyToLocal}},[e._v(e._s(e.$t("emoji.copy")))]),e._v(" "),a("el-button",{staticClass:"emoji-button",attrs:{slot:"reference",type:"primary"},slot:"reference"},[e._v(e._s(e.$t("emoji.copyToLocalPack")))])],1)],1)])},[],!1,null,null,null);m.options.__file="SingleEmojiEditor.vue";var p=m.exports,u={props:{packName:{type:String,required:!0}},data:function(){return{shortcode:"",imageUploadURL:"",customFileName:""}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device}},methods:{uploadEmoji:function(){var e=c()(s.a.mark(function e(t){var a;return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.file,e.prev=1,this.$store.dispatch("AddNewEmojiFile",{packName:this.packName,file:a||this.imageUploadURL,shortcode:this.shortcode,filename:this.customFileName}),e.next=8;break;case 5:return e.prev=5,e.t0=e.catch(1),e.abrupt("return");case 8:this.shortcode="",this.imageUploadURL="",this.customFileName="",this.$store.dispatch("ReloadEmoji");case 12:case"end":return e.stop()}},e,this,[[1,5]])}));return function(t){return e.apply(this,arguments)}}()}},d=(a("IVv3"),Object(r.a)(u,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("el-form",{staticClass:"new-emoji-uploader-form",attrs:{"label-position":e.isMobile?"top":"left","label-width":"130px",size:"small"}},[a("el-form-item",{attrs:{label:e.$t("emoji.shortcode")}},[a("el-input",{attrs:{placeholder:e.$t("emoji.optional")},model:{value:e.shortcode,callback:function(t){e.shortcode=t},expression:"shortcode"}})],1),e._v(" "),a("el-form-item",{attrs:{label:e.$t("emoji.customFilename")}},[a("el-input",{attrs:{placeholder:e.$t("emoji.optional")},model:{value:e.customFileName,callback:function(t){e.customFileName=t},expression:"customFileName"}})],1),e._v(" "),a("el-form-item",{attrs:{label:e.$t("emoji.uploadFile")}},[a("div",{staticClass:"upload-file-url"},[a("el-input",{attrs:{placeholder:e.$t("emoji.url")},model:{value:e.imageUploadURL,callback:function(t){e.imageUploadURL=t},expression:"imageUploadURL"}}),e._v(" "),a("el-button",{staticClass:"upload-button",attrs:{type:"primary"},on:{click:e.uploadEmoji}},[e._v(e._s(e.$t("emoji.upload")))])],1),e._v(" "),a("div",{staticClass:"upload-container"},[a("p",{staticClass:"text"},[e._v("or")]),e._v(" "),a("el-upload",{attrs:{"http-request":e.uploadEmoji,multiple:!1,"show-file-list":!1,action:"add"}},[a("el-button",{attrs:{type:"primary"}},[e._v(e._s(e.$t("emoji.clickToUpload")))])],1)],1)])],1)},[],!1,null,null,null));d.options.__file="NewEmojiUploader.vue";var h={components:{SingleEmojiEditor:p,NewEmojiUploader:d.exports},props:{name:{type:String,required:!0},pack:{type:Object,required:!0},host:{type:String,required:!0},isLocal:{type:Boolean,required:!0}},data:function(){return{showPackContent:[]}},computed:{isMobile:function(){return"mobile"===this.$store.state.app.device},isTablet:function(){return"tablet"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"90px":(this.isTablet,"155px")},share:{get:function(){return this.pack.pack["share-files"]},set:function(e){this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"share-files",value:e})}},homepage:{get:function(){return this.pack.pack.homepage},set:function(e){this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"homepage",value:e})}},description:{get:function(){return this.pack.pack.description},set:function(e){this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"description",value:e})}},license:{get:function(){return this.pack.pack.license},set:function(e){this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"license",value:e})}},fallbackSrc:{get:function(){return this.pack.pack["fallback-src"]},set:function(e){""!==e.trim()?this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"fallback-src",value:e}):(this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"fallback-src",value:null}),this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"fallback-src-sha256",value:null}))}}},methods:{deletePack:function(){var e=this;this.$confirm("This will delete the pack, are you sure?","Warning",{confirmButtonText:"Yes, delete the pack",cancelButtonText:"No, leave it be",type:"warning"}).then(function(){e.$store.dispatch("DeletePack",{name:e.name}).then(function(){return e.$store.dispatch("ReloadEmoji")}).then(function(){return e.$store.dispatch("SetLocalEmojiPacks")})}).catch(function(){})},savePackMetadata:function(){this.$store.dispatch("SavePackMetadata",{packName:this.name})}}},k=(a("LE4i"),Object(r.a)(h,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("el-collapse-item",{staticClass:"has-background",attrs:{title:e.name,name:e.name}},[a("el-form",{staticClass:"emoji-pack-metadata",attrs:{"label-width":e.labelWidth,"label-position":"left",size:"small"}},[a("el-form-item",{attrs:{label:e.$t("emoji.sharePack")}},[a("el-switch",{model:{value:e.share,callback:function(t){e.share=t},expression:"share"}})],1),e._v(" "),a("el-form-item",{attrs:{label:e.$t("emoji.homepage")}},[a("el-input",{model:{value:e.homepage,callback:function(t){e.homepage=t},expression:"homepage"}})],1),e._v(" "),a("el-form-item",{attrs:{label:e.$t("emoji.description")}},[a("el-input",{attrs:{type:"textarea"},model:{value:e.description,callback:function(t){e.description=t},expression:"description"}})],1),e._v(" "),a("el-form-item",{attrs:{label:e.$t("emoji.license")}},[a("el-input",{model:{value:e.license,callback:function(t){e.license=t},expression:"license"}})],1),e._v(" "),a("el-form-item",{attrs:{label:e.$t("emoji.fallbackSrc")}},[a("el-input",{model:{value:e.fallbackSrc,callback:function(t){e.fallbackSrc=t},expression:"fallbackSrc"}})],1),e._v(" "),e.fallbackSrc&&""!==e.fallbackSrc.trim()?a("el-form-item",{attrs:{label:e.$t("emoji.fallbackSrcSha")}},[e._v("\n "+e._s(e.pack.pack["fallback-src-sha256"])+"\n ")]):e._e()],1),e._v(" "),a("div",{staticClass:"pack-button-container"},[a("div",{staticClass:"save-pack-button-container"},[a("el-button",{staticClass:"save-pack-button",attrs:{type:"primary"},on:{click:e.savePackMetadata}},[e._v(e._s(e.$t("emoji.saveMetadata")))]),e._v(" "),a("el-button",{staticClass:"delete-pack-button",on:{click:e.deletePack}},[e._v(e._s(e.$t("emoji.deletePack")))])],1),e._v(" "),a("div",{staticClass:"download-pack-button-container"},[e.pack.pack["can-download"]?a("el-link",{attrs:{href:"//"+e.host+"/api/pleroma/emoji/packs/"+e.name+"/download_shared",underline:!1,type:"primary",target:"_blank"}},[a("el-button",{staticClass:"download-archive"},[e._v(e._s(e.$t("emoji.downloadPackArchive")))])],1):e._e()],1)]),e._v(" "),a("el-collapse",{staticClass:"contents-collapse",model:{value:e.showPackContent,callback:function(t){e.showPackContent=t},expression:"showPackContent"}},[e.isLocal?a("el-collapse-item",{staticClass:"no-background",attrs:{title:e.$t("emoji.addNewEmoji"),name:"addEmoji"}},[a("new-emoji-uploader",{attrs:{"pack-name":e.name}})],1):e._e(),e._v(" "),Object.keys(e.pack.files).length>0?a("el-collapse-item",{staticClass:"no-background",attrs:{title:e.$t("emoji.manageEmoji"),name:"manageEmoji"}},e._l(e.pack.files,function(t,o){return a("single-emoji-editor",{key:o,attrs:{host:e.host,"pack-name":e.name,shortcode:o,file:t,"is-local":e.isLocal}})}),1):e._e()],1)],1)},[],!1,null,null,null));k.options.__file="LocalEmojiPack.vue";var f=k.exports,v={components:{SingleEmojiEditor:p},props:{name:{type:String,required:!0},pack:{type:Object,required:!0},host:{type:String,required:!0},isLocal:{type:Boolean,required:!0}},data:function(){return{showPackContent:[],downloadSharedAs:""}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device},isTablet:function(){return"tablet"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"90px":(this.isTablet,"120px")},loadRemotePack:function(){return this.$store.state.emojiPacks.activeCollapseItems.includes(this.name)},remoteInstanceAddress:function(){return this.$store.state.emojiPacks.remoteInstance},share:{get:function(){return this.pack.pack["share-files"]},set:function(e){this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"share-files",value:e})}},homepage:{get:function(){return this.pack.pack.homepage},set:function(e){this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"homepage",value:e})}},description:{get:function(){return this.pack.pack.description},set:function(e){this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"description",value:e})}},license:{get:function(){return this.pack.pack.license},set:function(e){this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"license",value:e})}},fallbackSrc:{get:function(){return this.pack.pack["fallback-src"]},set:function(e){""!==e.trim()?this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"fallback-src",value:e}):(this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"fallback-src",value:null}),this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"fallback-src-sha256",value:null}))}}},methods:{downloadFromInstance:function(){var e=this;this.$store.dispatch("DownloadFrom",{instanceAddress:this.remoteInstanceAddress,packName:this.name,as:this.downloadSharedAs}).then(function(){return e.$store.dispatch("ReloadEmoji")}).then(function(){return e.$store.dispatch("SetLocalEmojiPacks")})}}},b=(a("Zd0x"),Object(r.a)(v,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("el-collapse-item",{staticClass:"has-background",attrs:{title:e.name,name:e.name}},[e.loadRemotePack?a("div",[a("el-form",{staticClass:"emoji-pack-metadata remote-pack-metadata",attrs:{"label-width":e.labelWidth,"label-position":"left",size:"small"}},[a("el-form-item",{attrs:{label:e.$t("emoji.sharePack")}},[a("el-switch",{attrs:{disabled:""},model:{value:e.share,callback:function(t){e.share=t},expression:"share"}})],1),e._v(" "),e.homepage?a("el-form-item",{attrs:{label:e.$t("emoji.homepage")}},[a("span",[e._v(e._s(e.homepage))])]):e._e(),e._v(" "),e.description?a("el-form-item",{attrs:{label:e.$t("emoji.description")}},[a("span",[e._v(e._s(e.description))])]):e._e(),e._v(" "),e.license?a("el-form-item",{attrs:{label:e.$t("emoji.license")}},[a("span",[e._v(e._s(e.license))])]):e._e(),e._v(" "),e.fallbackSrc?a("el-form-item",{attrs:{label:e.$t("emoji.fallbackSrc")}},[a("span",[e._v(e._s(e.fallbackSrc))])]):e._e(),e._v(" "),e.fallbackSrc&&""!==e.fallbackSrc.trim()?a("el-form-item",{attrs:{label:e.$t("emoji.fallbackSrcSha")}},[e._v("\n "+e._s(e.pack.pack["fallback-src-sha256"])+"\n ")]):e._e(),e._v(" "),a("el-form-item",[e.pack.pack["can-download"]?a("el-link",{attrs:{href:e.pack.pack["fallback-src"],underline:!1,type:"primary",target:"_blank"}},[a("el-button",{staticClass:"download-archive"},[e._v(e._s(e.$t("emoji.downloadPackArchive")))])],1):e._e()],1)],1),e._v(" "),a("el-collapse",{staticClass:"contents-collapse",model:{value:e.showPackContent,callback:function(t){e.showPackContent=t},expression:"showPackContent"}},[Object.keys(e.pack.files).length>0?a("el-collapse-item",{staticClass:"no-background",attrs:{title:e.$t("emoji.manageEmoji"),name:"manageEmoji"}},e._l(e.pack.files,function(t,o){return a("single-emoji-editor",{key:o,attrs:{host:e.host,"pack-name":e.name,shortcode:o,file:t,"is-local":e.isLocal}})}),1):e._e(),e._v(" "),a("el-collapse-item",{staticClass:"no-background",attrs:{title:e.$t("emoji.downloadPack"),name:"downloadPack"}},[a("p",[e._v("\n "+e._s(e.$t("emoji.thisWillDownload"))+' "'+e._s(e.name)+'" '+e._s(e.$t("emoji.downloadToCurrentInstance"))+'\n "'+e._s(""===e.downloadSharedAs.trim()?e.name:e.downloadSharedAs)+'" ('+e._s(e.$t("emoji.canBeChanged"))+").\n "+e._s(e.$t("emoji.willBeUsable"))+".\n ")]),e._v(" "),a("div",{staticClass:"download-shared-pack"},[a("el-input",{attrs:{placeholder:e.$t("emoji.downloadAsOptional")},model:{value:e.downloadSharedAs,callback:function(t){e.downloadSharedAs=t},expression:"downloadSharedAs"}}),e._v(" "),a("el-button",{staticClass:"download-shared-pack-button",attrs:{type:"primary"},on:{click:e.downloadFromInstance}},[e._v("\n "+e._s(e.isDesktop?e.$t("emoji.downloadSharedPack"):e.$t("emoji.downloadSharedPackMobile"))+"\n ")])],1)])],1)],1):e._e()])},[],!1,null,null,null));b.options.__file="RemoteEmojiPack.vue";var j=b.exports,_=a("mSNy"),$={components:{LocalEmojiPack:f,RebootButton:a("rIUS").a,RemoteEmojiPack:j},data:function(){return{newPackName:"",activeLocalPack:[],activeRemotePack:[],fullscreenLoading:!1}},computed:{isMobile:function(){return"mobile"===this.$store.state.app.device},isTablet:function(){return"tablet"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"105px":this.isTablet?"180px":"240px"},localPacks:function(){return this.$store.state.emojiPacks.localPacks},remoteInstanceAddress:{get:function(){return this.$store.state.emojiPacks.remoteInstance},set:function(e){this.$store.dispatch("SetRemoteInstance",e)}},remotePacks:function(){return this.$store.state.emojiPacks.remotePacks}},mounted:function(){this.$store.dispatch("GetNodeInfo"),this.$store.dispatch("NeedReboot"),this.refreshLocalPacks()},methods:{createLocalPack:function(){var e=this;this.$store.dispatch("CreatePack",{name:this.newPackName}).then(function(){e.newPackName="",e.$store.dispatch("SetLocalEmojiPacks"),e.$store.dispatch("ReloadEmoji")})},importFromFS:function(){var e=this;this.$store.dispatch("ImportFromFS").then(function(){e.$store.dispatch("SetLocalEmojiPacks"),e.$store.dispatch("ReloadEmoji")})},refreshLocalPacks:function(){try{this.$store.dispatch("SetLocalEmojiPacks")}catch(e){return}this.$message({type:"success",message:_.a.t("emoji.refreshed")})},refreshRemotePacks:function(){var e=c()(s.a.mark(function e(){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return this.fullscreenLoading=!0,e.next=3,this.$store.dispatch("SetRemoteEmojiPacks",{remoteInstance:this.remoteInstanceAddress});case 3:this.fullscreenLoading=!1;case 4:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}(),reloadEmoji:function(){var e=c()(s.a.mark(function e(){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:e.prev=0,this.$store.dispatch("ReloadEmoji"),e.next=7;break;case 4:return e.prev=4,e.t0=e.catch(0),e.abrupt("return");case 7:this.$message({type:"success",message:_.a.t("emoji.reloaded")});case 8:case"end":return e.stop()}},e,this,[[0,4]])}));return function(){return e.apply(this,arguments)}}(),setActiveCollapseItems:function(e){var t=Array.isArray(e)?e:[e];this.$store.dispatch("SetActiveCollapseItems",t)}}},y=(a("smuD"),Object(r.a)($,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"emoji-packs"},[a("div",{staticClass:"emoji-packs-header"},[a("h1",[e._v(e._s(e.$t("emoji.emojiPacks")))]),e._v(" "),a("reboot-button")],1),e._v(" "),a("div",{staticClass:"emoji-header-container"},[a("div",{staticClass:"emoji-packs-header-button-container"},[a("el-button",{staticClass:"reload-emoji-button",attrs:{type:"primary"},on:{click:e.reloadEmoji}},[e._v(e._s(e.$t("emoji.reloadEmoji")))]),e._v(" "),a("el-tooltip",{staticClass:"import-pack-button",attrs:{content:e.$t("emoji.importEmojiTooltip"),effects:"dark",placement:"bottom"}},[a("el-button",{attrs:{type:"primary"},on:{click:e.importFromFS}},[e._v("\n "+e._s(e.$t("emoji.importPacks"))+"\n ")])],1)],1)]),e._v(" "),a("el-divider",{staticClass:"divider"}),e._v(" "),a("el-form",{staticClass:"emoji-packs-form",attrs:{"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:e.$t("emoji.localPacks")}},[a("el-button",{attrs:{type:"primary"},on:{click:e.refreshLocalPacks}},[e._v(e._s(e.$t("emoji.refreshLocalPacks")))])],1),e._v(" "),a("el-form-item",{attrs:{label:e.$t("emoji.createLocalPack")}},[a("div",{staticClass:"create-pack"},[a("el-input",{attrs:{placeholder:e.$t("users.name")},model:{value:e.newPackName,callback:function(t){e.newPackName=t},expression:"newPackName"}}),e._v(" "),a("el-button",{staticClass:"create-pack-button",attrs:{disabled:""===e.newPackName.trim()},on:{click:e.createLocalPack}},[e._v("\n "+e._s(e.$t("users.create"))+"\n ")])],1)]),e._v(" "),Object.keys(e.localPacks).length>0?a("el-form-item",{attrs:{label:e.$t("emoji.packs")}},e._l(e.localPacks,function(t,o){return a("el-collapse",{key:o,model:{value:e.activeLocalPack,callback:function(t){e.activeLocalPack=t},expression:"activeLocalPack"}},[a("local-emoji-pack",{attrs:{name:o,pack:t,host:e.$store.getters.authHost,"is-local":!0}})],1)}),1):e._e(),e._v(" "),a("el-divider",{staticClass:"divider"}),e._v(" "),a("el-form-item",{attrs:{label:e.$t("emoji.remotePacks")}},[a("div",{staticClass:"create-pack"},[a("el-input",{attrs:{placeholder:e.$t("emoji.remoteInstanceAddress")},model:{value:e.remoteInstanceAddress,callback:function(t){e.remoteInstanceAddress=t},expression:"remoteInstanceAddress"}}),e._v(" "),a("el-button",{directives:[{name:"loading",rawName:"v-loading.fullscreen.lock",value:e.fullscreenLoading,expression:"fullscreenLoading",modifiers:{fullscreen:!0,lock:!0}}],staticClass:"create-pack-button",attrs:{disabled:""===e.remoteInstanceAddress.trim()},on:{click:e.refreshRemotePacks}},[e._v("\n "+e._s(e.$t("emoji.refreshRemote"))+"\n ")])],1)]),e._v(" "),Object.keys(e.remotePacks).length>0?a("el-form-item",{attrs:{label:e.$t("emoji.packs")}},e._l(e.remotePacks,function(t,o){return a("el-collapse",{key:o,on:{change:e.setActiveCollapseItems},model:{value:e.activeRemotePack,callback:function(t){e.activeRemotePack=t},expression:"activeRemotePack"}},[a("remote-emoji-pack",{attrs:{name:o,pack:t,host:e.$store.getters.authHost,"is-local":!1}})],1)}),1):e._e()],1)],1)},[],!1,null,null,null));y.options.__file="index.vue";t.default=y.exports},"4ySm":function(e,t,a){"use strict";var o=a("n6gr");a.n(o).a},"6lYW":function(e,t,a){},HBNe:function(e,t,a){},IVv3:function(e,t,a){"use strict";var o=a("6lYW");a.n(o).a},LE4i:function(e,t,a){"use strict";var o=a("HBNe");a.n(o).a},QZC8:function(e,t,a){},Zd0x:function(e,t,a){"use strict";var o=a("eDOw");a.n(o).a},eDOw:function(e,t,a){},n6gr:function(e,t,a){},rIUS:function(e,t,a){"use strict";var o=a("o0o1"),s=a.n(o),i=a("yXPU"),c=a.n(i),n=a("mSNy"),l={name:"RebootButton",computed:{needReboot:function(){return this.$store.state.app.needReboot}},methods:{restartApp:function(){var e=c()(s.a.mark(function e(){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.$store.dispatch("RestartApplication");case 3:e.next=8;break;case 5:return e.prev=5,e.t0=e.catch(0),e.abrupt("return");case 8:this.$message({type:"success",message:n.a.t("settings.restartSuccess")});case 9:case"end":return e.stop()}},e,this,[[0,5]])}));return function(){return e.apply(this,arguments)}}()}},r=a("KHd+"),m=Object(r.a)(l,function(){var e=this.$createElement,t=this._self._c||e;return this.needReboot?t("el-tooltip",{attrs:{content:this.$t("settings.restartApp"),placement:"bottom-end"}},[t("el-button",{staticClass:"reboot-button",attrs:{type:"warning"},on:{click:this.restartApp}},[t("span",[t("i",{staticClass:"el-icon-refresh"}),this._v("\n "+this._s(this.$t("settings.instanceReboot"))+"\n ")])])],1):this._e()},[],!1,null,null,null);m.options.__file="index.vue";t.a=m.exports},smuD:function(e,t,a){"use strict";var o=a("QZC8");a.n(o).a}}]); -//# sourceMappingURL=chunk-3384.b2ebeeca.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-3384.b2ebeeca.js.map b/priv/static/adminfe/static/js/chunk-3384.b2ebeeca.js.map deleted file mode 100644 index b08db9d6e..000000000 --- a/priv/static/adminfe/static/js/chunk-3384.b2ebeeca.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./src/views/emojiPacks/index.vue?fe9e","webpack:///./src/views/emojiPacks/components/SingleEmojiEditor.vue?5a7e","webpack:///src/views/emojiPacks/components/SingleEmojiEditor.vue","webpack:///./src/views/emojiPacks/components/SingleEmojiEditor.vue","webpack:///./src/views/emojiPacks/components/SingleEmojiEditor.vue?9e34","webpack:///./src/views/emojiPacks/components/NewEmojiUploader.vue?1c09","webpack:///src/views/emojiPacks/components/NewEmojiUploader.vue","webpack:///./src/views/emojiPacks/components/NewEmojiUploader.vue","webpack:///./src/views/emojiPacks/components/NewEmojiUploader.vue?e7aa","webpack:///./src/views/emojiPacks/components/LocalEmojiPack.vue?88cd","webpack:///src/views/emojiPacks/components/LocalEmojiPack.vue","webpack:///./src/views/emojiPacks/components/LocalEmojiPack.vue","webpack:///./src/views/emojiPacks/components/LocalEmojiPack.vue?575e","webpack:///./src/views/emojiPacks/components/RemoteEmojiPack.vue?4c9f","webpack:///src/views/emojiPacks/components/RemoteEmojiPack.vue","webpack:///./src/views/emojiPacks/components/RemoteEmojiPack.vue","webpack:///./src/views/emojiPacks/components/RemoteEmojiPack.vue?1029","webpack:///./src/views/emojiPacks/index.vue?a332","webpack:///src/views/emojiPacks/index.vue","webpack:///./src/views/emojiPacks/index.vue","webpack:///./src/views/emojiPacks/components/SingleEmojiEditor.vue?bc44","webpack:///./src/views/emojiPacks/components/NewEmojiUploader.vue?d98f","webpack:///./src/views/emojiPacks/components/LocalEmojiPack.vue?2a38","webpack:///./src/views/emojiPacks/components/RemoteEmojiPack.vue?118a","webpack:///./src/components/RebootButton/index.vue?8db4","webpack:///./src/components/RebootButton/index.vue?2f45","webpack:///src/components/RebootButton/index.vue","webpack:///./src/components/RebootButton/index.vue","webpack:///./src/views/emojiPacks/index.vue?7b86"],"names":["components_SingleEmojiEditorvue_type_script_lang_js_","props","host","type","String","required","packName","shortcode","file","isLocal","Boolean","data","newShortcode","newFile","copyToLocalPackName","copyPopoverVisible","copyToShortcode","copyToFilename","computed","emojiName","get","this","set","val","emojiFile","isDesktop","$store","state","app","device","isMobile","localPacks","emojiPacks","remoteInstance","URL","methods","update","_update","asyncToGenerator_default","regenerator_default","a","mark","_callee","wrap","_context","prev","next","dispatch","newFilename","force","t0","abrupt","stop","apply","arguments","remove","_this","$confirm","confirmButtonText","cancelButtonText","then","copyToLocal","addressOfEmojiInPack","trim","filename","e","copyToLocalVisible","component","Object","componentNormalizer","_vm","_h","$createElement","_c","_self","class","staticClass","attrs","src","_v","placeholder","$t","model","value","callback","$$v","expression","on","click","_s","_e","placement","popper-class","_l","_pack","name","key","label","disabled","slot","options","__file","SingleEmojiEditor","components_NewEmojiUploadervue_type_script_lang_js_","imageUploadURL","customFileName","uploadEmoji","_uploadEmoji","_ref","_x","NewEmojiUploader_component","label-position","label-width","size","http-request","multiple","show-file-list","action","components_LocalEmojiPackvue_type_script_lang_js_","components","NewEmojiUploader","pack","showPackContent","isTablet","labelWidth","share","homepage","description","license","fallbackSrc","deletePack","catch","savePackMetadata","LocalEmojiPack_component","title","href","underline","target","pack-name","keys","files","length","is-local","LocalEmojiPack","components_RemoteEmojiPackvue_type_script_lang_js_","downloadSharedAs","loadRemotePack","activeCollapseItems","includes","remoteInstanceAddress","downloadFromInstance","instanceAddress","as","RemoteEmojiPack_component","RemoteEmojiPack","views_emojiPacksvue_type_script_lang_js_","RebootButton","newPackName","activeLocalPack","activeRemotePack","fullscreenLoading","instance","remotePacks","mounted","refreshLocalPacks","createLocalPack","importFromFS","_this2","$message","message","lang","t","refreshRemotePacks","_refreshRemotePacks","reloadEmoji","_reloadEmoji","_callee2","_context2","setActiveCollapseItems","activeItems","items","Array","isArray","emojiPacks_component","content","effects","getters","authHost","directives","rawName","modifiers","fullscreen","lock","change","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_SingleEmojiEditor_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_NewEmojiUploader_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_LocalEmojiPack_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_RemoteEmojiPack_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","components_RebootButtonvue_type_script_lang_js_","needReboot","restartApp","_restartApp","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__"],"mappings":"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","file":"static/js/chunk-3384.b2ebeeca.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"emoji-packs\"},[_c('div',{staticClass:\"emoji-packs-header\"},[_c('h1',[_vm._v(_vm._s(_vm.$t('emoji.emojiPacks')))]),_vm._v(\" \"),_c('reboot-button')],1),_vm._v(\" \"),_c('div',{staticClass:\"emoji-header-container\"},[_c('div',{staticClass:\"emoji-packs-header-button-container\"},[_c('el-button',{staticClass:\"reload-emoji-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.reloadEmoji}},[_vm._v(_vm._s(_vm.$t('emoji.reloadEmoji')))]),_vm._v(\" \"),_c('el-tooltip',{staticClass:\"import-pack-button\",attrs:{\"content\":_vm.$t('emoji.importEmojiTooltip'),\"effects\":\"dark\",\"placement\":\"bottom\"}},[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.importFromFS}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('emoji.importPacks'))+\"\\n \")])],1)],1)]),_vm._v(\" \"),_c('el-divider',{staticClass:\"divider\"}),_vm._v(\" \"),_c('el-form',{staticClass:\"emoji-packs-form\",attrs:{\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.localPacks')}},[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.refreshLocalPacks}},[_vm._v(_vm._s(_vm.$t('emoji.refreshLocalPacks')))])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.createLocalPack')}},[_c('div',{staticClass:\"create-pack\"},[_c('el-input',{attrs:{\"placeholder\":_vm.$t('users.name')},model:{value:(_vm.newPackName),callback:function ($$v) {_vm.newPackName=$$v},expression:\"newPackName\"}}),_vm._v(\" \"),_c('el-button',{staticClass:\"create-pack-button\",attrs:{\"disabled\":_vm.newPackName.trim() === ''},on:{\"click\":_vm.createLocalPack}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.create'))+\"\\n \")])],1)]),_vm._v(\" \"),(Object.keys(_vm.localPacks).length > 0)?_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.packs')}},_vm._l((_vm.localPacks),function(pack,name){return _c('el-collapse',{key:name,model:{value:(_vm.activeLocalPack),callback:function ($$v) {_vm.activeLocalPack=$$v},expression:\"activeLocalPack\"}},[_c('local-emoji-pack',{attrs:{\"name\":name,\"pack\":pack,\"host\":_vm.$store.getters.authHost,\"is-local\":true}})],1)}),1):_vm._e(),_vm._v(\" \"),_c('el-divider',{staticClass:\"divider\"}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.remotePacks')}},[_c('div',{staticClass:\"create-pack\"},[_c('el-input',{attrs:{\"placeholder\":_vm.$t('emoji.remoteInstanceAddress')},model:{value:(_vm.remoteInstanceAddress),callback:function ($$v) {_vm.remoteInstanceAddress=$$v},expression:\"remoteInstanceAddress\"}}),_vm._v(\" \"),_c('el-button',{directives:[{name:\"loading\",rawName:\"v-loading.fullscreen.lock\",value:(_vm.fullscreenLoading),expression:\"fullscreenLoading\",modifiers:{\"fullscreen\":true,\"lock\":true}}],staticClass:\"create-pack-button\",attrs:{\"disabled\":_vm.remoteInstanceAddress.trim() === ''},on:{\"click\":_vm.refreshRemotePacks}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('emoji.refreshRemote'))+\"\\n \")])],1)]),_vm._v(\" \"),(Object.keys(_vm.remotePacks).length > 0)?_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.packs')}},_vm._l((_vm.remotePacks),function(pack,name){return _c('el-collapse',{key:name,on:{\"change\":_vm.setActiveCollapseItems},model:{value:(_vm.activeRemotePack),callback:function ($$v) {_vm.activeRemotePack=$$v},expression:\"activeRemotePack\"}},[_c('remote-emoji-pack',{attrs:{\"name\":name,\"pack\":pack,\"host\":_vm.$store.getters.authHost,\"is-local\":false}})],1)}),1):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SingleEmojiEditor.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SingleEmojiEditor.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./SingleEmojiEditor.vue?vue&type=template&id=5d2cbcfa&\"\nimport script from \"./SingleEmojiEditor.vue?vue&type=script&lang=js&\"\nexport * from \"./SingleEmojiEditor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SingleEmojiEditor.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"SingleEmojiEditor.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.isLocal)?_c('div',{class:_vm.isMobile ? 'emoji-container-flex' : 'emoji-container-grid'},[_c('img',{staticClass:\"emoji-preview-img\",attrs:{\"src\":_vm.addressOfEmojiInPack(_vm.host, _vm.packName, _vm.file)}}),_vm._v(\" \"),_c('el-input',{staticClass:\"emoji-info\",attrs:{\"placeholder\":_vm.$t('emoji.shortcode')},model:{value:(_vm.emojiName),callback:function ($$v) {_vm.emojiName=$$v},expression:\"emojiName\"}}),_vm._v(\" \"),_c('el-input',{staticClass:\"emoji-info\",attrs:{\"placeholder\":_vm.$t('emoji.file')},model:{value:(_vm.emojiFile),callback:function ($$v) {_vm.emojiFile=$$v},expression:\"emojiFile\"}}),_vm._v(\" \"),_c('div',{staticClass:\"emoji-buttons\"},[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.update}},[_vm._v(_vm._s(_vm.$t('emoji.update')))]),_vm._v(\" \"),_c('el-button',{staticClass:\"remove-emoji-button\",on:{\"click\":_vm.remove}},[_vm._v(_vm._s(_vm.$t('emoji.remove')))])],1)],1):_vm._e(),_vm._v(\" \"),(!_vm.isLocal)?_c('div',{class:_vm.isMobile ? 'emoji-container-flex' : 'remote-emoji-container-grid'},[_c('img',{staticClass:\"emoji-preview-img\",attrs:{\"src\":_vm.addressOfEmojiInPack(_vm.remoteInstance, _vm.packName, _vm.file)}}),_vm._v(\" \"),_c('el-input',{staticClass:\"emoji-info\",attrs:{\"value\":_vm.emojiName,\"placeholder\":_vm.$t('emoji.shortcode')}}),_vm._v(\" \"),_c('el-input',{staticClass:\"emoji-info\",attrs:{\"value\":_vm.emojiFile,\"placeholder\":_vm.$t('emoji.file')}}),_vm._v(\" \"),_c('el-popover',{staticClass:\"copy-pack-container\",attrs:{\"placement\":\"left-start\",\"popper-class\":\"copy-popover\"},model:{value:(_vm.copyPopoverVisible),callback:function ($$v) {_vm.copyPopoverVisible=$$v},expression:\"copyPopoverVisible\"}},[_c('p',[_vm._v(_vm._s(_vm.$t('emoji.selectLocalPack')))]),_vm._v(\" \"),_c('el-select',{staticClass:\"copy-pack-select\",attrs:{\"placeholder\":_vm.$t('emoji.localPack')},model:{value:(_vm.copyToLocalPackName),callback:function ($$v) {_vm.copyToLocalPackName=$$v},expression:\"copyToLocalPackName\"}},_vm._l((_vm.localPacks),function(_pack,name){return _c('el-option',{key:name,attrs:{\"label\":name,\"value\":name}})}),1),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('emoji.specifyShortcode')))]),_vm._v(\" \"),_c('el-input',{attrs:{\"placeholder\":_vm.$t('emoji.leaveEmptyShortcode')},model:{value:(_vm.copyToShortcode),callback:function ($$v) {_vm.copyToShortcode=$$v},expression:\"copyToShortcode\"}}),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('emoji.specifyFilename')))]),_vm._v(\" \"),_c('el-input',{attrs:{\"placeholder\":_vm.$t('emoji.leaveEmptyFilename')},model:{value:(_vm.copyToFilename),callback:function ($$v) {_vm.copyToFilename=$$v},expression:\"copyToFilename\"}}),_vm._v(\" \"),_c('el-button',{staticClass:\"copy-to-local-pack-button\",attrs:{\"disabled\":!_vm.copyToLocalPackName,\"type\":\"primary\"},on:{\"click\":_vm.copyToLocal}},[_vm._v(_vm._s(_vm.$t('emoji.copy')))]),_vm._v(\" \"),_c('el-button',{staticClass:\"emoji-button\",attrs:{\"slot\":\"reference\",\"type\":\"primary\"},slot:\"reference\"},[_vm._v(_vm._s(_vm.$t('emoji.copyToLocalPack')))])],1)],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewEmojiUploader.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewEmojiUploader.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./NewEmojiUploader.vue?vue&type=template&id=403a380a&\"\nimport script from \"./NewEmojiUploader.vue?vue&type=script&lang=js&\"\nexport * from \"./NewEmojiUploader.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NewEmojiUploader.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"NewEmojiUploader.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-form',{staticClass:\"new-emoji-uploader-form\",attrs:{\"label-position\":_vm.isMobile ? 'top' : 'left',\"label-width\":\"130px\",\"size\":\"small\"}},[_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.shortcode')}},[_c('el-input',{attrs:{\"placeholder\":_vm.$t('emoji.optional')},model:{value:(_vm.shortcode),callback:function ($$v) {_vm.shortcode=$$v},expression:\"shortcode\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.customFilename')}},[_c('el-input',{attrs:{\"placeholder\":_vm.$t('emoji.optional')},model:{value:(_vm.customFileName),callback:function ($$v) {_vm.customFileName=$$v},expression:\"customFileName\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.uploadFile')}},[_c('div',{staticClass:\"upload-file-url\"},[_c('el-input',{attrs:{\"placeholder\":_vm.$t('emoji.url')},model:{value:(_vm.imageUploadURL),callback:function ($$v) {_vm.imageUploadURL=$$v},expression:\"imageUploadURL\"}}),_vm._v(\" \"),_c('el-button',{staticClass:\"upload-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.uploadEmoji}},[_vm._v(_vm._s(_vm.$t('emoji.upload')))])],1),_vm._v(\" \"),_c('div',{staticClass:\"upload-container\"},[_c('p',{staticClass:\"text\"},[_vm._v(\"or\")]),_vm._v(\" \"),_c('el-upload',{attrs:{\"http-request\":_vm.uploadEmoji,\"multiple\":false,\"show-file-list\":false,\"action\":\"add\"}},[_c('el-button',{attrs:{\"type\":\"primary\"}},[_vm._v(_vm._s(_vm.$t('emoji.clickToUpload')))])],1)],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocalEmojiPack.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocalEmojiPack.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./LocalEmojiPack.vue?vue&type=template&id=55568dc6&\"\nimport script from \"./LocalEmojiPack.vue?vue&type=script&lang=js&\"\nexport * from \"./LocalEmojiPack.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LocalEmojiPack.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"LocalEmojiPack.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-collapse-item',{staticClass:\"has-background\",attrs:{\"title\":_vm.name,\"name\":_vm.name}},[_c('el-form',{staticClass:\"emoji-pack-metadata\",attrs:{\"label-width\":_vm.labelWidth,\"label-position\":\"left\",\"size\":\"small\"}},[_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.sharePack')}},[_c('el-switch',{model:{value:(_vm.share),callback:function ($$v) {_vm.share=$$v},expression:\"share\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.homepage')}},[_c('el-input',{model:{value:(_vm.homepage),callback:function ($$v) {_vm.homepage=$$v},expression:\"homepage\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.description')}},[_c('el-input',{attrs:{\"type\":\"textarea\"},model:{value:(_vm.description),callback:function ($$v) {_vm.description=$$v},expression:\"description\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.license')}},[_c('el-input',{model:{value:(_vm.license),callback:function ($$v) {_vm.license=$$v},expression:\"license\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.fallbackSrc')}},[_c('el-input',{model:{value:(_vm.fallbackSrc),callback:function ($$v) {_vm.fallbackSrc=$$v},expression:\"fallbackSrc\"}})],1),_vm._v(\" \"),(_vm.fallbackSrc && _vm.fallbackSrc.trim() !== '')?_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.fallbackSrcSha')}},[_vm._v(\"\\n \"+_vm._s(_vm.pack.pack[\"fallback-src-sha256\"])+\"\\n \")]):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"pack-button-container\"},[_c('div',{staticClass:\"save-pack-button-container\"},[_c('el-button',{staticClass:\"save-pack-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.savePackMetadata}},[_vm._v(_vm._s(_vm.$t('emoji.saveMetadata')))]),_vm._v(\" \"),_c('el-button',{staticClass:\"delete-pack-button\",on:{\"click\":_vm.deletePack}},[_vm._v(_vm._s(_vm.$t('emoji.deletePack')))])],1),_vm._v(\" \"),_c('div',{staticClass:\"download-pack-button-container\"},[(_vm.pack.pack['can-download'])?_c('el-link',{attrs:{\"href\":(\"//\" + _vm.host + \"/api/pleroma/emoji/packs/\" + _vm.name + \"/download_shared\"),\"underline\":false,\"type\":\"primary\",\"target\":\"_blank\"}},[_c('el-button',{staticClass:\"download-archive\"},[_vm._v(_vm._s(_vm.$t('emoji.downloadPackArchive')))])],1):_vm._e()],1)]),_vm._v(\" \"),_c('el-collapse',{staticClass:\"contents-collapse\",model:{value:(_vm.showPackContent),callback:function ($$v) {_vm.showPackContent=$$v},expression:\"showPackContent\"}},[(_vm.isLocal)?_c('el-collapse-item',{staticClass:\"no-background\",attrs:{\"title\":_vm.$t('emoji.addNewEmoji'),\"name\":\"addEmoji\"}},[_c('new-emoji-uploader',{attrs:{\"pack-name\":_vm.name}})],1):_vm._e(),_vm._v(\" \"),(Object.keys(_vm.pack.files).length > 0)?_c('el-collapse-item',{staticClass:\"no-background\",attrs:{\"title\":_vm.$t('emoji.manageEmoji'),\"name\":\"manageEmoji\"}},_vm._l((_vm.pack.files),function(file,shortcode){return _c('single-emoji-editor',{key:shortcode,attrs:{\"host\":_vm.host,\"pack-name\":_vm.name,\"shortcode\":shortcode,\"file\":file,\"is-local\":_vm.isLocal}})}),1):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RemoteEmojiPack.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RemoteEmojiPack.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./RemoteEmojiPack.vue?vue&type=template&id=127f1724&\"\nimport script from \"./RemoteEmojiPack.vue?vue&type=script&lang=js&\"\nexport * from \"./RemoteEmojiPack.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RemoteEmojiPack.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"RemoteEmojiPack.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-collapse-item',{staticClass:\"has-background\",attrs:{\"title\":_vm.name,\"name\":_vm.name}},[(_vm.loadRemotePack)?_c('div',[_c('el-form',{staticClass:\"emoji-pack-metadata remote-pack-metadata\",attrs:{\"label-width\":_vm.labelWidth,\"label-position\":\"left\",\"size\":\"small\"}},[_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.sharePack')}},[_c('el-switch',{attrs:{\"disabled\":\"\"},model:{value:(_vm.share),callback:function ($$v) {_vm.share=$$v},expression:\"share\"}})],1),_vm._v(\" \"),(_vm.homepage)?_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.homepage')}},[_c('span',[_vm._v(_vm._s(_vm.homepage))])]):_vm._e(),_vm._v(\" \"),(_vm.description)?_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.description')}},[_c('span',[_vm._v(_vm._s(_vm.description))])]):_vm._e(),_vm._v(\" \"),(_vm.license)?_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.license')}},[_c('span',[_vm._v(_vm._s(_vm.license))])]):_vm._e(),_vm._v(\" \"),(_vm.fallbackSrc)?_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.fallbackSrc')}},[_c('span',[_vm._v(_vm._s(_vm.fallbackSrc))])]):_vm._e(),_vm._v(\" \"),(_vm.fallbackSrc && _vm.fallbackSrc.trim() !== '')?_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.fallbackSrcSha')}},[_vm._v(\"\\n \"+_vm._s(_vm.pack.pack[\"fallback-src-sha256\"])+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('el-form-item',[(_vm.pack.pack['can-download'])?_c('el-link',{attrs:{\"href\":_vm.pack.pack['fallback-src'],\"underline\":false,\"type\":\"primary\",\"target\":\"_blank\"}},[_c('el-button',{staticClass:\"download-archive\"},[_vm._v(_vm._s(_vm.$t('emoji.downloadPackArchive')))])],1):_vm._e()],1)],1),_vm._v(\" \"),_c('el-collapse',{staticClass:\"contents-collapse\",model:{value:(_vm.showPackContent),callback:function ($$v) {_vm.showPackContent=$$v},expression:\"showPackContent\"}},[(Object.keys(_vm.pack.files).length > 0)?_c('el-collapse-item',{staticClass:\"no-background\",attrs:{\"title\":_vm.$t('emoji.manageEmoji'),\"name\":\"manageEmoji\"}},_vm._l((_vm.pack.files),function(file,shortcode){return _c('single-emoji-editor',{key:shortcode,attrs:{\"host\":_vm.host,\"pack-name\":_vm.name,\"shortcode\":shortcode,\"file\":file,\"is-local\":_vm.isLocal}})}),1):_vm._e(),_vm._v(\" \"),_c('el-collapse-item',{staticClass:\"no-background\",attrs:{\"title\":_vm.$t('emoji.downloadPack'),\"name\":\"downloadPack\"}},[_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.$t('emoji.thisWillDownload'))+\" \\\"\"+_vm._s(_vm.name)+\"\\\" \"+_vm._s(_vm.$t('emoji.downloadToCurrentInstance'))+\"\\n \\\"\"+_vm._s(_vm.downloadSharedAs.trim() === '' ? _vm.name : _vm.downloadSharedAs)+\"\\\" (\"+_vm._s(_vm.$t('emoji.canBeChanged'))+\").\\n \"+_vm._s(_vm.$t('emoji.willBeUsable'))+\".\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"download-shared-pack\"},[_c('el-input',{attrs:{\"placeholder\":_vm.$t('emoji.downloadAsOptional')},model:{value:(_vm.downloadSharedAs),callback:function ($$v) {_vm.downloadSharedAs=$$v},expression:\"downloadSharedAs\"}}),_vm._v(\" \"),_c('el-button',{staticClass:\"download-shared-pack-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.downloadFromInstance}},[_vm._v(\"\\n \"+_vm._s(_vm.isDesktop ? _vm.$t('emoji.downloadSharedPack') : _vm.$t('emoji.downloadSharedPackMobile'))+\"\\n \")])],1)])],1)],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=250c3227&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SingleEmojiEditor.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SingleEmojiEditor.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewEmojiUploader.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewEmojiUploader.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocalEmojiPack.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocalEmojiPack.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RemoteEmojiPack.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RemoteEmojiPack.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.needReboot)?_c('el-tooltip',{attrs:{\"content\":_vm.$t('settings.restartApp'),\"placement\":\"bottom-end\"}},[_c('el-button',{staticClass:\"reboot-button\",attrs:{\"type\":\"warning\"},on:{\"click\":_vm.restartApp}},[_c('span',[_c('i',{staticClass:\"el-icon-refresh\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.instanceReboot'))+\"\\n \")])])],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=53cfaf1d&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\""],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-43ca.3debeff7.js b/priv/static/adminfe/static/js/chunk-43ca.3debeff7.js new file mode 100644 index 000000000..6d653cf62 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-43ca.3debeff7.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-43ca"],{"+2nY":function(t,e,i){"use strict";var s=i("ld6V");i.n(s).a},"+qaP":function(t,e,i){"use strict";var s=i("60OA");i.n(s).a},"0ods":function(t,e,i){},"2q6O":function(t,e,i){"use strict";var s=i("Scsy");i.n(s).a},"3IoU":function(t,e,i){"use strict";var s=i("6V7o");i.n(s).a},"4NUT":function(t,e,i){},"4b9x":function(t,e,i){"use strict";var s=i("wgcy");i.n(s).a},"60OA":function(t,e,i){},"6V7o":function(t,e,i){},"77pt":function(t,e,i){},"9Hof":function(t,e,i){"use strict";var s=i("ncj/");i.n(s).a},"9p49":function(t,e,i){},DPt0:function(t,e,i){"use strict";var s=i("x6RV");i.n(s).a},Ezi3:function(t,e,i){"use strict";var s=i("MNl6");i.n(s).a},FCne:function(t,e,i){"use strict";var s=i("OCuP");i.n(s).a},"J7+w":function(t,e,i){"use strict";var s=i("fyIw");i.n(s).a},JqY8:function(t,e,i){},KFE3:function(t,e,i){"use strict";var s=i("mSK5");i.n(s).a},LHUV:function(t,e,i){"use strict";var s=i("0ods");i.n(s).a},MNl6:function(t,e,i){},NiUD:function(t,e,i){},OCuP:function(t,e,i){},PYLh:function(t,e,i){},PjrB:function(t,e,i){},Px65:function(t,e,i){},PygS:function(t,e,i){"use strict";var s=i("TtMh");i.n(s).a},RSJF:function(t,e,i){},SFMd:function(t,e,i){"use strict";var s=i("PjrB");i.n(s).a},Scsy:function(t,e,i){},TOIk:function(t,e,i){},TRR9:function(t,e,i){},TtMh:function(t,e,i){},TudB:function(t,e,i){},"UbP/":function(t,e,i){},UdS4:function(t,e,i){"use strict";var s=i("WwJU");i.n(s).a},UqcT:function(t,e,i){"use strict";var s=i("RSJF");i.n(s).a},UtFC:function(t,e,i){},"WvM+":function(t,e,i){"use strict";var s=i("TRR9");i.n(s).a},WwJU:function(t,e,i){},YKHE:function(t,e,i){},YcIK:function(t,e,i){"use strict";i.r(e);var s=i("o0o1"),n=i.n(s),a=i("yXPU"),r=i.n(a),o=i("mSNy"),l={"activity-pub":{label:"settings.activityPub",settings:[":activitypub",":user"]},authentication:{label:"settings.auth",settings:[":auth",":ldap",":oauth2","Pleroma.Web.Auth.Authenticator"]},"auto-linker":{label:"settings.autoLinker",settings:[":opts"]},esshd:{label:"settings.esshd",settings:[":esshd"]},captcha:{label:"settings.captcha",settings:["Pleroma.Captcha","Pleroma.Captcha.Kocaptcha"]},frontend:{label:"settings.frontend",settings:[":assets",":chat",":emoji",":frontend_configurations",":markup",":static_fe"]},gopher:{label:"settings.gopher",settings:[":gopher"]},http:{label:"settings.http",settings:[":cors_plug",":http",":http_security",":web_cache_ttl"]},instance:{label:"settings.instance",settings:[":admin_token",":instance",":manifest","Pleroma.User","Pleroma.ScheduledActivity",":uri_schemes",":feed",":streamer"]},"job-queue":{label:"settings.jobQueue",settings:["Pleroma.ActivityExpiration","Oban",":workers"]},logger:{label:"settings.logger",settings:[":console",":ex_syslogger",":quack",":logger"]},mailer:{label:"settings.mailer",settings:[":email_notifications","Pleroma.Emails.Mailer","Pleroma.Emails.UserEmail",":swoosh","Pleroma.Emails.NewUsersDigestEmail"]},"media-proxy":{label:"settings.mediaProxy",settings:[":media_proxy"]},metadata:{label:"settings.metadata",settings:["Pleroma.Web.Metadata",":rich_media"]},mrf:{label:"settings.mrf",settings:[":mrf_simple",":mrf_rejectnonpublic",":mrf_hellthread",":mrf_keyword",":mrf_subchain",":mrf_mention",":mrf_normalize_markup",":mrf_vocabulary",":mrf_object_age",":modules"]},"rate-limiters":{label:"settings.rateLimiters",settings:[":rate_limit"]},relays:{label:"settings.relays",settings:["relays"]},"web-push":{label:"settings.webPush",settings:[":vapid_details"]},upload:{label:"settings.upload",settings:["Pleroma.Upload.Filter.AnonymizeFilename","Pleroma.Upload.Filter.Mogrify","Pleroma.Uploaders.S3","Pleroma.Uploaders.Local","Pleroma.Upload"]},other:{label:"settings.other",settings:[":mime","Pleroma.Plugs.RemoteIp"]}},u=i("MVZn"),c=i.n(u),p=i("L2JU"),d=i("lSNA"),g=i.n(d),h={name:"AutoLinkerInput",props:{data:{type:[Object,Array],default:function(){return{}}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}}},methods:{autoLinkerBooleanValue:function(t){var e=this.data[this.setting.key];return"string"==typeof e||"number"==typeof e},autoLinkerIntegerValue:function(t){return this.data[this.setting.key]||0},autoLinkerStringValue:function(t){return this.data[this.setting.key]||""},processTwoTypeValue:function(t,e){if(!0===t){var i=":truncate"===e?0:"";this.updateSetting(i,this.settingGroup.group,this.settingGroup.key,e,this.setting.type)}else this.updateSetting(t,this.settingGroup.group,this.settingGroup.key,e,this.setting.type)},updateSetting:function(t,e,i,s,n){this.$store.dispatch("UpdateSettings",{group:e,key:i,input:s,value:t,type:n}),this.$store.dispatch("UpdateState",{group:e,key:i,input:s,value:t})}}},m=(i("LHUV"),i("KHd+")),f=Object(m.a)(h,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",[":class"===t.setting.key||":rel"===t.setting.key?i("div",{attrs:{"data-search":t.setting.key||t.setting.group}},[i("el-switch",{attrs:{value:t.autoLinkerBooleanValue(t.setting.key)},on:{change:function(e){return t.processTwoTypeValue(e,t.setting.key)}}}),t._v(" "),t.autoLinkerBooleanValue(t.setting.key)?i("el-input",{attrs:{value:t.autoLinkerStringValue(t.setting.key)},on:{input:function(e){return t.processTwoTypeValue(e,t.setting.key)}}}):t._e()],1):t._e(),t._v(" "),":truncate"===t.setting.key?i("div",{attrs:{"data-search":t.setting.key||t.setting.group}},[i("el-switch",{attrs:{value:t.autoLinkerBooleanValue(t.setting.key)},on:{change:function(e){return t.processTwoTypeValue(e,t.setting.key)}}}),t._v(" "),t.autoLinkerBooleanValue(t.setting.key)?i("el-input-number",{attrs:{value:t.autoLinkerIntegerValue(t.setting.key)},on:{input:function(e){return t.processTwoTypeValue(e,t.setting.key)}}}):t._e()],1):t._e()])},[],!1,null,null,null);f.options.__file="AutoLinkerInput.vue";var b=f.exports,v=i("RIqP"),y=i.n(v),_={name:"EditableKeywordInput",props:{data:{type:Array,default:function(){return{}}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}}},computed:{editableKeywordWithInteger:function(){return Array.isArray(this.setting.type)&&this.setting.type.includes("keyword")&&this.setting.type.includes("integer")},isDesktop:function(){return"desktop"===this.$store.state.app.device}},methods:{addRowToEditableKeyword:function(){var t=[].concat(y()(this.data),[{"":{value:"",id:this.generateID()}}]);this.updateSetting(t,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},deleteEditableKeywordRow:function(t){var e=this.getId(t),i=this.data.filter(function(t){return Object.values(t)[0].id!==e});this.updateSetting(i,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},generateID:function(){return"f".concat((~~(1e8*Math.random())).toString(16))},getKey:function(t){return Object.keys(t)[0]},getId:function(t){return Object.values(t)[0].id},getValue:function(t){return Object.values(t)[0].value},parseEditableKeyword:function(t,e,i){var s=this,n=this.getId(i),a=this.data.map(function(i,a){return Object.values(i)[0].id===n?"key"===e?g()({},t,Object.values(s.data[a])[0]):g()({},Object.keys(i)[0],c()({},Object.values(s.data[a])[0],{value:t})):i});this.updateSetting(a,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},updateSetting:function(t,e,i,s,n){var a=this.wrapUpdatedSettings(t,s,n);this.$store.dispatch("UpdateSettings",{group:e,key:i,input:s,value:a,type:n}),this.$store.dispatch("UpdateState",{group:e,key:i,input:s,value:t})},wrapUpdatedSettings:function(t,e,i){return"map"===i?t.reduce(function(t,e){return c()({},t,g()({},Object.keys(e)[0],Object.values(e)[0].value))},{}):t.reduce(function(t,e){return c()({},t,g()({},Object.keys(e)[0],["list",Object.values(e)[0].value]))},{})}}},k=(i("nKzF"),Object(m.a)(_,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"editable-keyword-container"},[":replace"===t.setting.key?i("div",{attrs:{"data-search":t.setting.key||t.setting.group}},[t._l(t.data,function(e){return i("div",{key:t.getId(e),staticClass:"setting-input"},[i("el-input",{staticClass:"name-input",attrs:{value:t.getKey(e),placeholder:"pattern"},on:{input:function(i){return t.parseEditableKeyword(i,"key",e)}}}),t._v(" :\n "),i("el-input",{staticClass:"value-input",attrs:{value:t.getValue(e),placeholder:"replacement"},on:{input:function(i){return t.parseEditableKeyword(i,"value",e)}}}),t._v(" "),i("el-button",{staticClass:"icon-minus-button",attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-minus",circle:""},on:{click:function(i){return t.deleteEditableKeywordRow(e)}}})],1)}),t._v(" "),i("el-button",{attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-plus",circle:""},on:{click:t.addRowToEditableKeyword}})],2):t.editableKeywordWithInteger?i("div",{attrs:{"data-search":t.setting.key||t.setting.group}},[t._l(t.data,function(e){return i("div",{key:t.getId(e),staticClass:"setting-input"},[i("el-input",{staticClass:"name-input",attrs:{value:t.getKey(e),placeholder:"key"},on:{input:function(i){return t.parseEditableKeyword(i,"key",e)}}}),t._v(" :\n "),i("el-input-number",{staticClass:"value-input",attrs:{value:t.getValue(e),min:0,size:"large"},on:{change:function(i){return t.parseEditableKeyword(i,"value",e)}}}),t._v(" "),i("el-button",{staticClass:"icon-minus-button",attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-minus",circle:""},on:{click:function(i){return t.deleteEditableKeywordRow(e)}}})],1)}),t._v(" "),i("el-button",{attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-plus",circle:""},on:{click:t.addRowToEditableKeyword}})],2):i("div",{attrs:{"data-search":t.setting.key||t.setting.group}},[t._l(t.data,function(e){return i("div",{key:t.getId(e),staticClass:"setting-input"},[i("el-input",{staticClass:"name-input",attrs:{value:t.getKey(e),placeholder:"key"},on:{input:function(i){return t.parseEditableKeyword(i,"key",e)}}}),t._v(" :\n "),i("el-select",{staticClass:"value-input",attrs:{value:t.getValue(e),multiple:"",filterable:"","allow-create":""},on:{change:function(i){return t.parseEditableKeyword(i,"value",e)}}}),t._v(" "),i("el-button",{staticClass:"icon-minus-button",attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-minus",circle:""},on:{click:function(i){return t.deleteEditableKeywordRow(e)}}})],1)}),t._v(" "),i("el-button",{attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-plus",circle:""},on:{click:t.addRowToEditableKeyword}})],2)])},[],!1,null,null,null));k.options.__file="EditableKeywordInput.vue";var S=k.exports,D={name:"CrontabInput",props:{data:{type:Object,default:function(){return{}}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device},isTablet:function(){return"tablet"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100%":"380px"},workers:function(){return this.setting.suggestions.map(function(t){return t[1]})}},methods:{getSuggestion:function(t){return this.setting.suggestions.find(function(e){return e[1]===t})[0]},update:function(t,e){var i=this.$store.state.settings.settings[this.settingGroup.group][this.settingGroup.key][this.setting.key],s=c()({},i,g()({},e,t)),n=Object.keys(i).reduce(function(s,n){return n===e?c()({},s,g()({},n,["reversed_tuple",t])):c()({},s,g()({},n,["reversed_tuple",i[n]]))},{});this.$store.dispatch("UpdateSettings",{group:this.settingGroup.group,key:this.settingGroup.key,input:this.setting.key,value:n,type:this.setting.type}),this.$store.dispatch("UpdateState",{group:this.settingGroup.group,key:this.settingGroup.key,input:this.setting.key,value:s})}}},w=(i("mstB"),Object(m.a)(D,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("el-form",{staticClass:"crontab",attrs:{"label-width":t.labelWidth,"label-position":t.isMobile?"top":"right"}},t._l(t.workers,function(e){return i("el-form-item",{key:e,staticClass:"crontab-container",attrs:{label:e,"data-search":t.setting.key}},[i("el-input",{staticClass:"input setting-input",attrs:{value:t.data[e],placeholder:t.getSuggestion(e)||null},on:{input:function(i){return t.update(i,e)}}})],1)}),1)},[],!1,null,null,null));w.options.__file="CrontabInput.vue";var x=w.exports,C={name:"EditableKeywordInput",props:{data:{type:Array,default:function(){return{}}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device}},methods:{addIconToIcons:function(){var t=[].concat(y()(this.data),[[{key:"",value:"",id:this.generateID()}]]);this.updateSetting(t,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},addValueToIcons:function(t){var e=this,i=this.data.map(function(i,s){return s===t?[].concat(y()(i),[{key:"",value:"",id:e.generateID()}]):i});this.updateSetting(i,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},deleteIcondRow:function(t){var e=this.data.filter(function(e,i){return i!==t});this.updateSetting(e,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},generateID:function(){return"f".concat((~~(1e8*Math.random())).toString(16))},parseIcons:function(t,e,i,s){var n=this.data.map(function(n,a){return a===i?n.map(function(i){return i.id===s?"key"===e?c()({},i,{key:t}):c()({},i,{value:t}):i}):n});this.updateSetting(n,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},updateSetting:function(t,e,i,s,n){var a=t.map(function(t){return t.reduce(function(t,e){var i=e.key,s=e.value;return c()({},t,g()({},i,s))},{})},{});this.$store.dispatch("UpdateSettings",{group:e,key:i,input:s,value:a,type:n}),this.$store.dispatch("UpdateState",{group:e,key:i,input:s,value:t})}}},$=(i("rdar"),Object(m.a)(C,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"mascot-container",attrs:{"data-search":t.setting.key||t.setting.group}},[t._l(t.data,function(e,s){return i("div",{key:s,staticClass:"mascot"},[i("div",{staticClass:"icons-container"},[i("div",{staticClass:"icon-container"},t._l(e,function(e){var n=e.key,a=e.value,r=e.id;return i("div",{key:r,staticClass:"icon-values-container"},[i("el-input",{staticClass:"icon-key-input",attrs:{value:n,placeholder:"key"},on:{input:function(e){return t.parseIcons(e,"key",s,r)}}}),t._v(" :\n "),i("el-input",{staticClass:"icon-value-input",attrs:{value:a,placeholder:"value"},on:{input:function(e){return t.parseIcons(e,"value",s,r)}}})],1)}),0),t._v(" "),i("el-button",{staticClass:"icon-minus-button",attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-minus",circle:""},on:{click:function(e){return t.deleteIcondRow(s)}}})],1),t._v(" "),i("div",{staticClass:"icons-button-container"},[i("el-button",{attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-plus",circle:""},on:{click:function(e){return t.addValueToIcons(s)}}}),t._v(" "),i("span",{staticClass:"icons-button-desc"},[t._v("Add another `key - value` pair to this icon")])],1),t._v(" "),i("el-divider",{staticClass:"divider"})],1)}),t._v(" "),i("div",{staticClass:"icons-button-container"},[i("el-button",{attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-plus",circle:""},on:{click:t.addIconToIcons}}),t._v(" "),i("span",{staticClass:"icons-button-desc"},[t._v("Add another icon configuration")])],1)],2)},[],!1,null,null,null));$.options.__file="IconsInput.vue";var P=$.exports,O=i("QILm"),U=i.n(O),M=i("J4zp"),j=i.n(M),T={name:"MascotsInput",props:{data:{type:Array,default:function(){return{}}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device}},methods:{addRowToMascots:function(){var t=[].concat(y()(this.data),[{"":{":url":"",":mime_type":"",id:this.generateID()}}]);this.updateSetting(t,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},deleteMascotsRow:function(t){var e=this.getId(t),i=this.data.filter(function(t){return Object.values(t)[0].id!==e});this.updateSetting(i,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},generateID:function(){return"f".concat((~~(1e8*Math.random())).toString(16))},getId:function(t){return Object.values(t)[0].id},getName:function(t){return Object.keys(t)[0]},getUrl:function(t){var e=Object.values(t);return j()(e,1)[0][":url"]},getMimeType:function(t){var e=Object.values(t);return j()(e,1)[0][":mime_type"]},parseMascots:function(t,e,i){var s=this,n=this.getId(i),a=this.data.map(function(i,a){return Object.values(i)[0].id===n?"name"===e?g()({},t,Object.values(s.data[a])[0]):"url"===e?g()({},Object.keys(i)[0],c()({},Object.values(s.data[a])[0],{":url":t})):g()({},Object.keys(i)[0],c()({},Object.values(s.data[a])[0],{":mime_type":t})):i});this.updateSetting(a,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},updateSetting:function(t,e,i,s,n){var a=t.reduce(function(t,e){var i=Object.values(e)[0],s=(i.id,U()(i,["id"]));return c()({},t,g()({},Object.keys(e)[0],["",s]))},{});this.$store.dispatch("UpdateSettings",{group:e,key:i,input:s,value:a,type:n}),this.$store.dispatch("UpdateState",{group:e,key:i,input:s,value:t})}}},A=(i("+2nY"),Object(m.a)(T,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"mascot-container",attrs:{"data-search":t.setting.key||t.setting.group}},[t._l(t.data,function(e){return i("div",{key:t.getId(e),staticClass:"mascot"},[i("el-form-item",{staticClass:"mascot-form-item",attrs:{label:"Name","label-width":"85px"}},[i("div",{staticClass:"mascot-name-container"},[i("el-input",{staticClass:"mascot-name-input",attrs:{value:t.getName(e),placeholder:"Name"},on:{input:function(i){return t.parseMascots(i,"name",e)}}}),t._v(" "),i("el-button",{staticClass:"icon-minus-button",attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-minus",circle:""},on:{click:function(i){return t.deleteMascotsRow(e)}}})],1)]),t._v(" "),i("el-form-item",{staticClass:"mascot-form-item",attrs:{label:"URL","label-width":"85px"}},[i("el-input",{staticClass:"mascot-input",attrs:{value:t.getUrl(e),placeholder:"URL"},on:{input:function(i){return t.parseMascots(i,"url",e)}}})],1),t._v(" "),i("el-form-item",{staticClass:"mascot-form-item",attrs:{label:"Mime type","label-width":"85px"}},[i("el-input",{staticClass:"mascot-input",attrs:{value:t.getMimeType(e),placeholder:"Mime type"},on:{input:function(i){return t.parseMascots(i,"mimeType",e)}}})],1)],1)}),t._v(" "),i("el-button",{attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-plus",circle:""},on:{click:t.addRowToMascots}})],2)},[],!1,null,null,null));A.options.__file="MascotsInput.vue";var G=A.exports,W=i("h74u"),L={name:"ProxyUrlInput",props:{data:{type:[Object,Array],default:function(){return{}}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}},parents:{type:Array,default:function(){return[]},required:!1}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device},settings:function(){return this.$store.state.settings.settings},updatedSettings:function(){return this.$store.state.settings.updatedSettings},proxyUrlData:function(){return 0===Object.keys(this.data).length?{socks5:!1,host:null,port:null}:this.data}},methods:{updateProxyUrl:function(t,e){var i;i="socks5"===e?c()({},this.proxyUrlData,{socks5:t}):"host"===e?c()({},this.proxyUrlData,{host:t}):c()({},this.proxyUrlData,{port:t}),this.updateSetting(i,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},updateSetting:function(t,e,i,s,n){var a=t.socks5?[":socks5",t.host,t.port]:"".concat(t.host,":").concat(t.port);if(this.parents.length>0){var r=Object(W.f)(t,a,e,i,this.parents.reverse(),this.settings,this.updatedSettings),o=r.valueForState,l=r.valueForUpdatedSettings,u=r.setting;this.$store.dispatch("UpdateSettings",{group:e,key:i,input:u.key,value:l,type:u.type}),this.$store.dispatch("UpdateState",{group:e,key:i,input:u.key,value:o})}else this.$store.dispatch("UpdateSettings",{group:e,key:i,input:s,value:a,type:n}),this.$store.dispatch("UpdateState",{group:e,key:i,input:s,value:t})}}},E=(i("mGnP"),Object(m.a)(L,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"proxy-url-input",attrs:{"data-search":t.setting.key||t.setting.group}},[i("el-input",{staticClass:"proxy-url-host-input",attrs:{value:t.proxyUrlData.host,placeholder:"host (e.g. localhost or 127.0.0.1)"},on:{input:function(e){return t.updateProxyUrl(e,"host")}}}),t._v(" "),t.isDesktop?i("span",[t._v(":")]):t._e(),t._v(" "),i("el-input",{staticClass:"proxy-url-value-input",attrs:{value:t.proxyUrlData.port,placeholder:"port (e.g 9020 or 3090)"},on:{input:function(e){return t.updateProxyUrl(e,"port")}}}),t._v(" "),i("div",{staticClass:"socks5-checkbox-container"},[i("el-checkbox",{attrs:{value:t.proxyUrlData.socks5},on:{change:function(e){return t.updateProxyUrl(e,"socks5")}}}),t._v(" "),i("span",{staticClass:"socks5-checkbox"},[t._v("Socks5")])],1)],1)},[],!1,null,null,null));E.options.__file="ProxyUrlInput.vue";var I=E.exports,R={name:"PruneInput",props:{data:{type:[Object,Array],default:function(){return{}}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}}},computed:{prune:{get:function(){return this.data[0]},set:function(t){this.updateRadioInput(t)}}},methods:{updateIntInput:function(t,e){this.updateSetting([e,t],this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},updateSetting:function(t,e,i,s,n){var a=t.includes(":disabled")?":disabled":t;this.$store.dispatch("UpdateSettings",{group:e,key:i,input:s,value:a,type:n}),this.$store.dispatch("UpdateState",{group:e,key:i,input:s,value:t})},updateRadioInput:function(t){var e=":disabled"===t?[t]:[t,0];this.updateSetting(e,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)}}},F=(i("Ezi3"),Object(m.a)(R,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{attrs:{"data-search":t.setting.key||t.setting.group}},[i("el-radio-group",{staticClass:"prune-options",model:{value:t.prune,callback:function(e){t.prune=e},expression:"prune"}},[i("el-radio",{attrs:{label:":disabled"}},[t._v("Disabled")]),t._v(" "),i("el-radio",{attrs:{label:":maxlen"}},[t._v("Limit-based")]),t._v(" "),i("el-radio",{attrs:{label:":maxage"}},[t._v("Time-based")])],1),t._v(" "),":maxlen"===t.prune?i("el-form-item",{attrs:{label:"max length","label-width":"100","label-position":"left"}},[i("el-input-number",{staticClass:"top-margin",attrs:{value:t.data[1],min:0,placeholder:"1500",size:"large"},on:{change:function(e){return t.updateIntInput(e,":maxlen")}}})],1):t._e(),t._v(" "),":maxage"===t.prune?i("el-form-item",{attrs:{label:"max age","label-width":"100","label-position":"left"}},[i("el-input-number",{staticClass:"top-margin",attrs:{value:t.data[1],min:0,placeholder:"3600",size:"large"},on:{change:function(e){return t.updateIntInput(e,":maxage")}}})],1):t._e()],1)},[],!1,null,null,null));F.options.__file="PruneInput.vue";var K=F.exports,V={name:"RateLimitInput",props:{data:{type:[Object,Array],default:function(){return{}}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device},rateLimitAllUsers:function(){return this.data[this.setting.key]?this.data[this.setting.key]:["",""]},rateLimitAuthUsers:function(){return!(!this.data[this.setting.key]||!Array.isArray(this.data[this.setting.key][0]))&&this.data[this.setting.key][1]},rateLimitUnauthUsers:function(){return!(!this.data[this.setting.key]||!Array.isArray(this.data[this.setting.key][1]))&&this.data[this.setting.key][0]}},methods:{parseRateLimiter:function(t,e,i,s,n){var a;"oneLimit"===s?a="scale"===i?[t,n[1]]:[n[0],t]:"unauthUsersLimit"===s?a="scale"===i?[[t,n[0][1]],[n[1][0],n[1][1]]]:[[n[0][0],t],[n[1][0],n[1][1]]]:"authUserslimit"===s&&(a="scale"===i?[[n[0][0],n[0][1]],[t,n[1][1]]]:[[n[0][0],n[0][1]],[n[1][0],t]]),this.updateSetting(a,this.settingGroup.group,this.settingGroup.key,e,this.setting.type)},toggleLimits:function(t,e){this.updateSetting(t,this.settingGroup.group,this.settingGroup.key,e)},updateSetting:function(t,e,i,s,n){var a=Array.isArray(t[0])?t.map(function(t){return{tuple:t}}):{tuple:t};this.$store.dispatch("UpdateSettings",{group:e,key:i,input:s,value:a,type:n}),this.$store.dispatch("UpdateState",{group:e,key:i,input:s,value:t})}}},z=(i("irif"),Object(m.a)(V,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"rate-limit-container",attrs:{"data-search":t.setting.key||t.setting.group}},[t.rateLimitAuthUsers?t._e():i("div",[i("el-input",{staticClass:"scale-input",attrs:{value:t.rateLimitAllUsers[0],placeholder:"scale"},on:{input:function(e){return t.parseRateLimiter(e,t.setting.key,"scale","oneLimit",t.rateLimitAllUsers)}}}),t._v(" "),i("span",[t._v(":")]),t._v(" "),i("el-input",{staticClass:"limit-input",attrs:{value:t.rateLimitAllUsers[1],placeholder:"limit"},on:{input:function(e){return t.parseRateLimiter(e,t.setting.key,"limit","oneLimit",t.rateLimitAllUsers)}}}),t._v(" "),i("div",{staticClass:"limit-button-container"},[i("el-button",{attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-plus",circle:""},on:{click:function(e){return t.toggleLimits([["",""],["",""]],t.setting.key)}}}),t._v(" "),i("p",{staticClass:"expl limit-expl"},[t._v("Set different limits for unauthenticated and authenticated users")])],1)],1),t._v(" "),t.rateLimitAuthUsers?i("div",[i("el-form-item",{staticClass:"rate-limit"},[i("div",{staticClass:"rate-limit-label-container"},[i("span",{staticClass:"rate-limit-label"},[t._v("\n Unauthenticated users:\n ")])]),t._v(" "),i("div",{staticClass:"rate-limit-content"},[i("el-input",{staticClass:"scale-input",attrs:{value:t.rateLimitUnauthUsers[0],placeholder:"scale"},on:{input:function(e){return t.parseRateLimiter(e,t.setting.key,"scale","unauthUsersLimit",[t.rateLimitUnauthUsers,t.rateLimitAuthUsers])}}}),t._v(" "),i("span",[t._v(":")]),t._v(" "),i("el-input",{staticClass:"limit-input",attrs:{value:t.rateLimitUnauthUsers[1],placeholder:"limit"},on:{input:function(e){return t.parseRateLimiter(e,t.setting.key,"limit","unauthUsersLimit",[t.rateLimitUnauthUsers,t.rateLimitAuthUsers])}}})],1)]),t._v(" "),i("el-form-item",{staticClass:"rate-limit"},[i("div",{staticClass:"rate-limit-label-container"},[i("span",{staticClass:"rate-limit-label"},[t._v("\n Authenticated users:\n ")])]),t._v(" "),i("div",{staticClass:"rate-limit-content"},[i("el-input",{staticClass:"scale-input",attrs:{value:t.rateLimitAuthUsers[0],placeholder:"scale"},on:{input:function(e){return t.parseRateLimiter(e,t.setting.key,"scale","authUserslimit",[t.rateLimitUnauthUsers,t.rateLimitAuthUsers])}}}),t._v(" "),i("span",[t._v(":")]),t._v(" "),i("el-input",{staticClass:"limit-input",attrs:{value:t.rateLimitAuthUsers[1],placeholder:"limit"},on:{input:function(e){return t.parseRateLimiter(e,t.setting.key,"limit","authUserslimit",[t.rateLimitUnauthUsers,t.rateLimitAuthUsers])}}})],1)]),t._v(" "),i("div",{staticClass:"limit-button-container"},[i("el-button",{staticClass:"icon-minus-button",attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-minus",circle:""},on:{click:function(e){return t.toggleLimits(["",""],t.setting.key)}}}),t._v(" "),i("p",{staticClass:"expl limit-expl"},[t._v("Set limit for all users")])],1)],1):t._e()])},[],!1,null,null,null));z.options.__file="RateLimitInput.vue";var q=z.exports,N={name:"RegInvitesInput",props:{data:{type:[Object,Array],default:function(){return{}}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}}},methods:{updateSetting:function(t,e,i,s,n){var a=this,r=this.$store.state.settings.settings[e][i][":registrations_open"],o=this.$store.state.settings.settings[e][i][":invites_enabled"];":registrations_open"===s&&t&&o?this.$confirm("Enabling this setting requires invites to be disabled. Are you sure you want to open registrations?","Warning",{confirmButtonText:"OK",cancelButtonText:"Cancel",type:"warning"}).then(function(){a.$store.dispatch("UpdateSettings",{group:e,key:i,input:s,value:t,type:n}),a.$store.dispatch("UpdateSettings",{group:e,key:i,input:":invites_enabled",value:!1,type:n}),a.$store.dispatch("UpdateState",{group:e,key:i,input:s,value:t}),a.$store.dispatch("UpdateState",{group:e,key:i,input:":invites_enabled",value:!1})}):":invites_enabled"===s&&t&&r?this.$confirm("Enabling this setting requires registrations to be disabled. Are you sure you want to enable invitations?","Warning",{confirmButtonText:"OK",cancelButtonText:"Cancel",type:"warning"}).then(function(){a.$store.dispatch("UpdateSettings",{group:e,key:i,input:s,value:t,type:n}),a.$store.dispatch("UpdateSettings",{group:e,key:i,input:":registrations_open",value:!1,type:n}),a.$store.dispatch("UpdateState",{group:e,key:i,input:s,value:t}),a.$store.dispatch("UpdateState",{group:e,key:i,input:":registrations_open",value:!1})}):(this.$store.dispatch("UpdateSettings",{group:e,key:i,input:s,value:t,type:n}),this.$store.dispatch("UpdateState",{group:e,key:i,input:s,value:t}))}}},B=(i("9Hof"),Object(m.a)(N,function(){var t=this,e=t.$createElement;return(t._self._c||e)("el-switch",{staticClass:"switch-input",attrs:{value:t.data[t.setting.key],"data-search":t.setting.key},on:{change:function(e){return t.updateSetting(e,t.settingGroup.group,t.settingGroup.key,t.setting.key,t.setting.type)}}})},[],!1,null,null,null));B.options.__file="RegInvitesInput.vue";var H=B.exports,Q={name:"SelectInputWithReducedLabels",props:{data:{type:[Array,Object],default:function(){return{}}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}}},computed:{inputValue:function(){return"Pleroma.Web.Auth.Authenticator"===this.setting.key?this.data.value:":rewrite_policy"===this.setting.key&&"string"==typeof this.data[this.setting.key]?[this.data[this.setting.key]]:this.data[this.setting.key]},isMobile:function(){return"mobile"===this.$store.state.app.device}},methods:{options:function(t){var e=this,i={":rewrite_policy":"Pleroma.Web.ActivityPub.MRF.","Pleroma.Web.Auth.Authenticator":"Pleroma.Web.Auth.",":method":"Pleroma.Captcha.",":adapter":"Swoosh.Adapters.",":providers":"Pleroma.Web.Metadata.Providers.",":parsers":"Pleroma.Web.RichMedia.Parsers.",":ttl_setters":"Pleroma.Web.RichMedia.Parser.",":scrub_policy":"Pleroma.HTML.",":federation_publisher_modules":"Pleroma.Web.",":uploader":"Pleroma.Uploaders.",":filters":"Pleroma.Upload.Filter."};return t.map(function(t){return{value:t,label:t.split(i[e.setting.key])[1]?t.split(i[e.setting.key])[1]:t}})},renderMultipleSelect:function(t){return Array.isArray(t)&&":backends"!==this.setting.key&&":args"!==this.setting.key&&(t.includes("module")||t.includes("list")&&t.includes("string")||t.includes("list")&&t.includes("atom")||t.includes("regex")&&t.includes("string")||":args"===this.setting.key)},rewritePolicyOptions:function(t){return t.map(function(t){return{value:t,label:t.split("Pleroma.Web.ActivityPub.MRF.")[1]?t.split("Pleroma.Web.ActivityPub.MRF.")[1]:t}})},updateSetting:function(t,e,i,s,n){var a=Object(W.c)(t);this.$store.dispatch("UpdateSettings",{group:e,key:i,input:s,value:a,type:n}),this.$store.dispatch("UpdateState",{group:e,key:i,input:s,value:a})}}},J=(i("3IoU"),Object(m.a)(Q,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"input"},[t.renderMultipleSelect(t.setting.type)?i("el-select",{staticClass:"input",attrs:{value:t.inputValue,"data-search":t.setting.key,multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.updateSetting(e,t.settingGroup.group,t.settingGroup.key,t.setting.key,t.setting.type)}}},t._l(t.options(t.setting.suggestions),function(t,e){return i("el-option",{key:e,attrs:{value:t.value,label:t.label}})}),1):t._e(),t._v(" "),"module"===t.setting.type||t.setting.type.includes("atom")&&t.setting.type.includes("dropdown")?i("el-select",{staticClass:"input",attrs:{value:!1===t.inputValue?"false":t.inputValue,"data-search":t.setting.key||t.setting.group,clearable:""},on:{change:function(e){return t.updateSetting(e,t.settingGroup.group,t.settingGroup.key,t.setting.key,t.setting.type)}}},t._l(t.options(t.setting.suggestions),function(t,e){return i("el-option",{key:e,attrs:{value:t.value,label:t.label}})}),1):t._e()],1)},[],!1,null,null,null));J.options.__file="SelectInputWithReducedLabels.vue";var Y=J.exports,X={name:"SpecificMultipleSelect",props:{data:{type:[Object,Array],default:function(){return{}}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}}},methods:{updateSetting:function(t,e,i,s,n){this.$store.dispatch("UpdateSettings",{group:e,key:i,input:s,value:t,type:n}),this.$store.dispatch("UpdateState",{group:e,key:i,input:s,value:t})}}},Z=(i("UqcT"),Object(m.a)(X,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"multiple-select-container"},[":backends"===t.setting.key?i("el-select",{staticClass:"input",attrs:{value:t.data.value,"data-search":t.setting.key||t.setting.group,multiple:""},on:{change:function(e){return t.updateSetting(e,t.settingGroup.group,t.settingGroup.key,t.setting.key,t.setting.type)}}},[i("el-option",{attrs:{value:":console",label:"console"}}),t._v(" "),i("el-option",{attrs:{value:":ex_syslogger",label:"ExSyslogger"}}),t._v(" "),i("el-option",{attrs:{value:"Quack.Logger",label:"Quack.Logger"}})],1):t._e(),t._v(" "),":args"===t.setting.key?i("el-select",{staticClass:"input",attrs:{value:t.data[t.setting.key],"data-search":t.setting.key||t.setting.group,multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.updateSetting(e,t.settingGroup.group,t.settingGroup.key,t.setting.key,t.setting.type)}}},[i("el-option",{attrs:{value:"strip",label:"strip"}}),t._v(" "),i("el-option",{attrs:{value:"auto-orient",label:"auto-orient"}}),t._v(" "),i("el-option",{attrs:{value:"implode",label:"implode"}})],1):t._e()],1)},[],!1,null,null,null));Z.options.__file="SpecificMultipleSelect.vue";var tt=Z.exports,et=i("LvDl"),it=i.n(et),st=i("4MG8"),nt=i.n(st),at={name:"Inputs",components:{AutoLinkerInput:b,CrontabInput:x,EditableKeywordInput:S,IconsInput:P,MascotsInput:G,ProxyUrlInput:I,PruneInput:K,RateLimitInput:q,RegInvitesInput:H,SelectInputWithReducedLabels:Y,SpecificMultipleSelect:tt},props:{customLabelWidth:{type:String,default:function(){return this.labelWidth},required:!1},data:{type:[Object,Array],default:function(){return{}}},labelClass:{type:String,default:function(){return"label"},required:!1},margin:{type:Number,default:function(){return 0},required:!1},nested:{type:Boolean,default:function(){return!1}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}},settingParent:{type:Array,default:function(){return[]},required:!1}},computed:{canBeDeleted:function(){var t=this.settingGroup,e=t.group,i=t.key;return it.a.get(this.$store.state.settings.db,[e,i])&&this.$store.state.settings.db[e][i].includes(this.setting.key)},iconsData:function(){return Array.isArray(this.data[":icons"])?this.data[":icons"]:[]},inputValue:function(){return[":esshd",":cors_plug",":quack",":tesla",":swoosh"].includes(this.settingGroup.group)&&this.data[this.setting.key]?"atom"===this.setting.type&&":"===this.data[this.setting.key].value[0]?this.data[this.setting.key].value.substr(1):this.data[this.setting.key].value:":logger"===this.settingGroup.group&&":backends"===this.setting.key||"Pleroma.Web.Auth.Authenticator"===this.setting.key||":admin_token"===this.setting.key?this.data.value:":mime"===this.settingGroup.group&&":types"===this.settingParent[0].key?this.data.value?this.data.value[this.setting.key]:[]:"atom"===this.setting.type&&this.data[this.setting.key]&&":"===this.data[this.setting.key][0]?this.data[this.setting.key].substr(1):this.data[this.setting.key]},isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device},isTablet:function(){return"tablet"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},keywordData:function(){return Array.isArray(this.data)?this.data:[]},reducedSelects:function(){return[":filters",":uploader",":federation_publisher_modules",":scrub_policy",":ttl_setters",":parsers",":providers",":method",":rewrite_policy","Pleroma.Web.Auth.Authenticator"].includes(this.setting.key)||"Pleroma.Emails.Mailer"===this.settingGroup.key&&":adapter"===this.setting.key},settings:function(){return this.$store.state.settings.settings},updatedSettings:function(){return this.$store.state.settings.updatedSettings}},methods:{editableKeyword:function(t,e){return":replace"===t||"map"===e||Array.isArray(e)&&e.includes("keyword")&&e.includes("integer")||Array.isArray(e)&&e.includes("keyword")&&-1!==e.findIndex(function(t){return t.includes("list")&&t.includes("string")})},getFormattedDescription:function(t){return nt()(t)},processNestedData:function(t,e,i,s){var n=Object(W.f)(t,t,e,i,s.reverse(),this.settings,this.updatedSettings),a=n.valueForState,r=n.valueForUpdatedSettings,o=n.setting;this.$store.dispatch("UpdateSettings",{group:e,key:i,input:o.key,value:r,type:o.type}),this.$store.dispatch("UpdateState",{group:e,key:i,input:o.key,value:a})},removeSetting:function(){var t=r()(n.a.mark(function t(){var e=this;return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:this.$confirm(this.$t("settings.removeSettingConfirmation"),{confirmButtonText:this.$t("users.ok"),cancelButtonText:this.$t("users.cancel"),type:"warning"}).then(r()(n.a.mark(function t(){var i;return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return i=e.settingGroup.key?[{group:e.settingGroup.group,key:e.settingGroup.key,delete:!0,subkeys:[e.setting.key]}]:[{group:e.settingGroup.group,key:e.setting.key,delete:!0}],t.prev=1,t.next=4,e.$store.dispatch("RemoveSetting",i);case 4:t.next=9;break;case 6:return t.prev=6,t.t0=t.catch(1),t.abrupt("return");case 9:e.$message({type:"success",message:o.a.t("settings.successfullyRemoved")});case 10:case"end":return t.stop()}},t,null,[[1,6]])}))).catch(function(){e.$message({type:"info",message:e.$t("users.canceled")})});case 1:case"end":return t.stop()}},t,this)}));return function(){return t.apply(this,arguments)}}(),renderMultipleSelect:function(t){return!this.reducedSelects&&Array.isArray(t)&&":backends"!==this.setting.key&&":args"!==this.setting.key&&(t.includes("module")||t.includes("list")&&t.includes("string")||t.includes("list")&&t.includes("atom")||t.includes("regex")&&t.includes("string"))},renderSingleSelect:function(t){return!this.reducedSelects&&("module"===t||t.includes("atom")&&t.includes("dropdown"))},update:function(t,e,i,s,n,a,r){var o=this.renderSingleSelect(a)?Object(W.c)(t):t;r?this.processNestedData(o,e,i,s):this.updateSetting(o,e,i,n,a)},updateSetting:function(t,e,i,s,n){this.$store.dispatch("UpdateSettings",{group:e,key:i,input:s,value:t,type:n}),this.$store.dispatch("UpdateState",{group:e,key:i,input:s,value:t})}}},rt=(i("y7KD"),Object(m.a)(at,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"input-container"},["keyword"===t.setting.type?i("div",{staticClass:"keyword-container"},[i("el-form-item",{class:t.labelClass,style:"margin-left:"+t.margin+"px;margin-bottom:0",attrs:{"label-width":t.customLabelWidth,"data-search":t.setting.key||t.setting.group}},[i("span",{attrs:{slot:"label"},slot:"label"},[t._v("\n "+t._s(t.setting.label)+"\n "),t.canBeDeleted&&t.isDesktop?i("el-tooltip",{attrs:{content:t.$t("settings.removeFromDB"),placement:"bottom-end"}},[i("el-button",{staticClass:"delete-setting-button",attrs:{icon:"el-icon-delete",circle:"",size:"mini"},on:{click:t.removeSetting}})],1):t._e()],1)]),t._v(" "),t._l(t.setting.children,function(e){return i("el-form-item",{key:e.key},[i("inputs",{attrs:{"setting-group":t.settingGroup,"setting-parent":t.settingParent.concat([e]),setting:e,data:t.data[t.setting.key],"custom-label-width":t.isMobile?"100px":"120px","label-class":"keyword"===e.type?"center-label":"",margin:t.isDesktop?t.margin+15:t.margin+8,nested:!0}})],1)})],2):t._e(),t._v(" "),"keyword"!==t.setting.type?i("el-form-item",{class:t.labelClass,style:t.isDesktop?"":"margin-left:"+t.margin+"px",attrs:{"label-width":t.customLabelWidth}},[i("span",{attrs:{slot:"label"},slot:"label"},[t._v("\n "+t._s(t.setting.label)+"\n "),t.canBeDeleted&&(t.isDesktop||t.isMobile)?i("el-tooltip",{attrs:{content:t.$t("settings.removeFromDB"),placement:"bottom-end"}},[i("el-button",{staticClass:"delete-setting-button",attrs:{icon:"el-icon-delete",circle:"",size:"mini"},on:{click:t.removeSetting}})],1):t._e()],1),t._v(" "),i("div",{staticClass:"input-row"},["string"===t.setting.type||t.setting.type.includes("string")&&t.setting.type.includes("atom")?i("el-input",{staticClass:"input",attrs:{value:t.inputValue,placeholder:t.setting.suggestions?t.setting.suggestions[0]:null,"data-search":t.setting.key||t.setting.group},on:{input:function(e){return t.update(e,t.settingGroup.group,t.settingGroup.key,t.settingParent,t.setting.key,t.setting.type,t.nested)}}}):t._e(),t._v(" "),"boolean"!==t.setting.type||[":registrations_open",":invites_enabled"].includes(t.setting.key)?t._e():i("el-switch",{staticClass:"switch-input",attrs:{value:t.inputValue,"data-search":t.setting.key||t.setting.group},on:{change:function(e){return t.update(e,t.settingGroup.group,t.settingGroup.key,t.settingParent,t.setting.key,t.setting.type,t.nested)}}}),t._v(" "),"integer"===t.setting.type?i("el-input-number",{attrs:{value:null===t.inputValue?void 0:t.inputValue,placeholder:t.setting.suggestions?t.setting.suggestions[0].toString():null,min:0,size:t.isDesktop?"large":"medium","data-search":t.setting.key||t.setting.group},on:{change:function(e){return t.update(e,t.settingGroup.group,t.settingGroup.key,t.settingParent,t.setting.key,t.setting.type,t.nested)}}}):t._e(),t._v(" "),t.renderSingleSelect(t.setting.type)?i("el-select",{staticClass:"input",attrs:{value:!1===t.inputValue?"false":t.inputValue,"data-search":t.setting.key||t.setting.group,clearable:""},on:{change:function(e){return t.update(e,t.settingGroup.group,t.settingGroup.key,t.settingParent,t.setting.key,t.setting.type,t.nested)}}},t._l(t.setting.suggestions,function(t,e){return i("el-option",{key:e,attrs:{value:t}})}),1):t._e(),t._v(" "),t.renderMultipleSelect(t.setting.type)?i("el-select",{staticClass:"input",attrs:{value:t.inputValue,"data-search":t.setting.key||t.setting.group,multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.update(e,t.settingGroup.group,t.settingGroup.key,t.settingParent,t.setting.key,t.setting.type,t.nested)}}},t._l(t.setting.suggestions,function(t,e){return i("el-option",{key:e,attrs:{value:t}})}),1):t._e(),t._v(" "),":ip"===t.setting.key?i("el-input",{staticClass:"input",attrs:{value:t.inputValue,"data-search":t.setting.key||t.setting.group,placeholder:"xxx.xxx.xxx.xx"},on:{input:function(e){return t.update(e,t.settingGroup.group,t.settingGroup.key,t.settingParent,t.setting.key,t.setting.type,t.nested)}}}):t._e(),t._v(" "),"atom"===t.setting.type?i("el-input",{staticClass:"input",attrs:{value:t.inputValue,placeholder:t.setting.suggestions[0]?t.setting.suggestions[0].substr(1):"","data-search":t.setting.key||t.setting.group},on:{input:function(e){return t.update(e,t.settingGroup.group,t.settingGroup.key,t.settingParent,t.setting.key,t.setting.type,t.nested)}}},[i("template",{slot:"prepend"},[t._v(":")])],2):t._e(),t._v(" "),":auto_linker"===t.settingGroup.group?i("auto-linker-input",{attrs:{data:t.data,"setting-group":t.settingGroup,setting:t.setting}}):t._e(),t._v(" "),":crontab"===t.setting.key?i("crontab-input",{attrs:{data:t.data[t.setting.key],"setting-group":t.settingGroup,setting:t.setting}}):t._e(),t._v(" "),t.editableKeyword(t.setting.key,t.setting.type)?i("editable-keyword-input",{attrs:{data:t.keywordData,"setting-group":t.settingGroup,setting:t.setting}}):t._e(),t._v(" "),":icons"===t.setting.key?i("icons-input",{attrs:{data:t.iconsData,"setting-group":t.settingGroup,setting:t.setting}}):t._e(),t._v(" "),":mascots"===t.setting.key?i("mascots-input",{attrs:{data:t.keywordData,"setting-group":t.settingGroup,setting:t.setting}}):t._e(),t._v(" "),":proxy_url"===t.setting.key?i("proxy-url-input",{attrs:{data:t.data[t.setting.key],"setting-group":t.settingGroup,setting:t.setting,parents:t.settingParent}}):t._e(),t._v(" "),":prune"===t.setting.key?i("prune-input",{attrs:{data:t.data[t.setting.key],"setting-group":t.settingGroup,setting:t.setting}}):t._e(),t._v(" "),":rate_limit"===t.settingGroup.key?i("rate-limit-input",{attrs:{data:t.data,"setting-group":t.settingGroup,setting:t.setting}}):t._e(),t._v(" "),[":registrations_open",":invites_enabled"].includes(t.setting.key)?i("reg-invites-input",{attrs:{data:t.data,"setting-group":t.settingGroup,setting:t.setting}}):t._e(),t._v(" "),t.reducedSelects?i("select-input-with-reduced-labels",{attrs:{data:t.data,"setting-group":t.settingGroup,setting:t.setting}}):t._e(),t._v(" "),":backends"===t.setting.key||":args"===t.setting.key?i("specific-multiple-select",{attrs:{data:t.data,"setting-group":t.settingGroup,setting:t.setting}}):t._e(),t._v(" "),t.canBeDeleted&&t.isTablet?i("el-tooltip",{staticClass:"delete-setting-button-container",attrs:{content:t.$t("settings.removeFromDB"),placement:"bottom-end"}},[i("el-button",{staticClass:"delete-setting-button",attrs:{icon:"el-icon-delete",circle:"",size:"mini"},on:{click:t.removeSetting}})],1):t._e()],1),t._v(" "),t.setting.description&&"keyword"!==t.setting.type?i("div",{staticClass:"expl",domProps:{innerHTML:t._s(t.getFormattedDescription(t.setting.description))}}):t._e()]):t._e()],1)},[],!1,null,null,null));rt.options.__file="Inputs.vue";var ot={name:"Setting",components:{Inputs:rt.exports},props:{settingGroup:{type:Object,default:function(){return{}}},data:{type:Object,default:function(){return{}}}},computed:{emailAdapterChildren:function(){var t=this.$store.state.settings.settings[":pleroma"]["Pleroma.Emails.Mailer"][":adapter"];return this.settingGroup.children.filter(function(e){return e.group&&e.group.includes(t)})},isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device},isTablet:function(){return"tablet"===this.$store.state.app.device},loading:function(){return this.$store.state.settings.loading}},methods:{canBeDeleted:function(t){var e=this.settingGroup,i=e.group,s=e.key||t;return it.a.get(this.$store.state.settings.db,[i,s])&&this.$store.state.settings.db[i][s].includes(t)},compound:function(t){var e=t.type,i=t.key;t.children;return"keyword"===e||"map"===e||e.includes("keyword")||":replace"===i},divideSetting:function(t){return[":sslopts",":tlsopts",":adapter",":poll_limits",":queues",":styling",":proxy_opts"].includes(t)},getFormattedDescription:function(t){return nt()(t)},removeSetting:function(){var t=r()(n.a.mark(function t(e){var i=this;return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:this.$confirm(this.$t("settings.removeSettingConfirmation"),{confirmButtonText:this.$t("users.ok"),cancelButtonText:this.$t("users.cancel"),type:"warning"}).then(r()(n.a.mark(function t(){var s;return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return s=i.settingGroup.key?[{group:i.settingGroup.group,key:i.settingGroup.key,delete:!0,subkeys:[e]}]:[{group:i.settingGroup.group,key:e,delete:!0}],t.prev=1,t.next=4,i.$store.dispatch("RemoveSetting",s);case 4:t.next=9;break;case 6:return t.prev=6,t.t0=t.catch(1),t.abrupt("return");case 9:i.$message({type:"success",message:o.a.t("settings.successfullyRemoved")});case 10:case"end":return t.stop()}},t,null,[[1,6]])}))).catch(function(){i.$message({type:"info",message:i.$t("users.canceled")})});case 1:case"end":return t.stop()}},t,this)}));return function(e){return t.apply(this,arguments)}}(),updateSetting:function(t,e,i){this.$store.dispatch("UpdateSettings",{tab:e,data:g()({},i,t)})}}},lt=(i("pnah"),Object(m.a)(ot,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",[t.settingGroup.label||t.settingGroup.description?i("el-form-item",{staticClass:"description-container",attrs:{"data-search":t.settingGroup.key||t.settingGroup.group}},[t.settingGroup.label?i("span",{staticClass:"setting-label"},[t._v(t._s(t.settingGroup.label))]):t._e(),t._v(" "),t.settingGroup.description?i("span",{staticClass:"expl no-top-margin",domProps:{innerHTML:t._s(t.getFormattedDescription(t.settingGroup.description))}}):t._e()]):t._e(),t._v(" "),"Pleroma.Emails.Mailer"===t.settingGroup.key?i("div",[t._l(t.settingGroup.children.filter(function(t){return!t.group}),function(e){return i("div",{key:e.key},[i("inputs",{attrs:{"setting-group":t.settingGroup,setting:e,data:t.data}})],1)}),t._v(" "),t._l(t.emailAdapterChildren,function(e){return i("div",{key:e.key},[i("inputs",{attrs:{"setting-group":t.settingGroup,setting:e,data:t.data}})],1)})],2):i("div",t._l(t.settingGroup.children,function(e){return i("div",{key:e.key},[t.compound(e)?t._e():i("div",[i("inputs",{attrs:{"setting-group":t.settingGroup,setting:e,data:t.data,nested:!1}})],1),t._v(" "),t.compound(e)?i("div",[t.divideSetting(e.key)?i("el-divider",{staticClass:"divider"}):t._e(),t._v(" "),e.children?i("div",[i("div",{staticClass:"input-container"},[i("el-form-item",{staticClass:"grouped-settings-header",attrs:{"data-search":e.key||e.group}},[i("span",{attrs:{slot:"label"},slot:"label"},[t.isDesktop&&t.canBeDeleted(e.key)?i("el-tooltip",{attrs:{content:t.$t("settings.removeFromDB"),placement:"bottom-end"}},[i("el-button",{staticStyle:{"margin-left":"5px"},attrs:{icon:"el-icon-delete",circle:"",size:"mini"},on:{click:function(i){return t.removeSetting(e.key)}}})],1):t._e()],1),t._v(" "),i("span",{staticClass:"label-font"},[t._v(t._s(e.label))]),t._v(" "),t.canBeDeleted(e.key)&&(t.isMobile||t.isTablet)?i("el-tooltip",{attrs:{content:t.$t("settings.removeFromDB"),placement:"bottom-end"}},[i("el-button",{staticClass:"settings-delete-button",attrs:{icon:"el-icon-delete",circle:"",size:"mini"},on:{click:function(i){return t.removeSetting(e.key)}}})],1):t._e()],1)],1),t._v(" "),t._l(e.children,function(s){return i("div",{key:s.key},[i("inputs",{attrs:{"setting-group":t.settingGroup,"setting-parent":[e,s],setting:s,data:t.data[e.key],nested:!0}})],1)})],2):i("div",[i("inputs",{attrs:{"setting-group":t.settingGroup,setting:e,data:t.data[e.key],nested:!0}})],1),t._v(" "),i("el-divider",{staticClass:"divider"})],1):t._e()])}),0)],1)},[],!1,null,null,null));lt.options.__file="Setting.vue";var ut=lt.exports,ct={name:"ActivityPub",components:{Setting:ut},computed:c()({},Object(p.b)(["settings"]),{activitypub:function(){return this.settings.description.find(function(t){return":activitypub"===t.key})},activitypubData:function(){return it.a.get(this.settings.settings,[":pleroma",":activitypub"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.$store.state.settings.loading},user:function(){return this.settings.description.find(function(t){return":user"===t.key})},userData:function(){return it.a.get(this.settings.settings,[":pleroma",":user"])||{}}}),methods:{onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},pt=(i("qEST"),Object(m.a)(ct,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{ref:"activitypubData",attrs:{model:t.activitypubData,"label-position":t.labelPosition,"label-width":t.labelWidth,"data-search":":activitypub"}},[i("setting",{attrs:{"setting-group":t.activitypub,data:t.activitypubData}})],1),t._v(" "),t.activitypub?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"userData",attrs:{model:t.userData,"label-position":t.labelPosition,"label-width":t.labelWidth,"data-search":":user"}},[i("setting",{attrs:{"setting-group":t.user,data:t.userData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));pt.options.__file="ActivityPub.vue";var dt=pt.exports,gt={name:"Authentication",components:{Setting:ut},computed:c()({},Object(p.b)(["settings"]),{auth:function(){return this.settings.description.find(function(t){return":auth"===t.key})},authData:function(){return it.a.get(this.settings.settings,[":pleroma",":auth"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},ldap:function(){return this.settings.description.find(function(t){return":ldap"===t.key})},ldapData:function(){return it.a.get(this.settings.settings,[":pleroma",":ldap"])||{}},loading:function(){return this.settings.loading},oauth2:function(){return this.settings.description.find(function(t){return":oauth2"===t.key})},oauth2Data:function(){return it.a.get(this.settings.settings,[":pleroma",":oauth2"])||{}},pleromaAuthenticator:function(){return this.settings.description.find(function(t){return t.children&&"Pleroma.Web.Auth.Authenticator"===t.children[0].key})},pleromaAuthenticatorData:function(){return it.a.get(this.settings.settings,[":pleroma","Pleroma.Web.Auth.Authenticator"])||{}}}),methods:{onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},ht=(i("4b9x"),Object(m.a)(gt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{ref:"pleromaAuthenticatorData",attrs:{model:t.pleromaAuthenticatorData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.pleromaAuthenticator,data:t.pleromaAuthenticatorData}})],1),t._v(" "),t.pleromaAuthenticator?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"authData",attrs:{model:t.authData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.auth,data:t.authData}})],1),t._v(" "),t.auth?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"ldapData",attrs:{model:t.ldapData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.ldap,data:t.ldapData}})],1),t._v(" "),t.oauth2?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"oauth2",attrs:{model:t.oauth2Data,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.oauth2,data:t.oauth2Data}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));ht.options.__file="Authentication.vue";var mt=ht.exports,ft={name:"AutoLinker",components:{Setting:ut},computed:c()({},Object(p.b)(["settings"]),{autoLinker:function(){return this.settings.description.find(function(t){return":opts"===t.key})},autoLinkerData:function(){return it.a.get(this.settings.settings,[":auto_linker",":opts"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading}}),methods:{onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},bt=(i("cyzs"),Object(m.a)(ft,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{ref:"autoLinker",attrs:{model:t.autoLinkerData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.autoLinker,data:t.autoLinkerData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));bt.options.__file="AutoLinker.vue";var vt=bt.exports,yt={name:"Captcha",components:{Setting:ut},computed:c()({},Object(p.b)(["settings"]),{captcha:function(){return this.settings.description.find(function(t){return"Pleroma.Captcha"===t.key})},captchaData:function(){return it.a.get(this.settings.settings,[":pleroma","Pleroma.Captcha"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},kocaptcha:function(){return this.settings.description.find(function(t){return"Pleroma.Captcha.Kocaptcha"===t.key})},kocaptchaData:function(){return it.a.get(this.settings.settings,[":pleroma","Pleroma.Captcha.Kocaptcha"])||{}},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading}}),methods:{onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},_t=(i("2q6O"),Object(m.a)(yt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{ref:"captchaData",attrs:{model:t.captchaData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.captcha,data:t.captchaData}})],1),t._v(" "),t.captcha?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"kocaptchaData",attrs:{model:t.kocaptchaData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.kocaptcha,data:t.kocaptchaData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));_t.options.__file="Captcha.vue";var kt=_t.exports,St={name:"Esshd",components:{Setting:ut},computed:c()({},Object(p.b)(["settings"]),{esshd:function(){return this.settings.description.find(function(t){return":esshd"===t.group})},esshdData:function(){return it.a.get(this.settings.settings,[":esshd"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading}}),methods:{toggleEsshd:function(t){this.$store.dispatch("ToggleEsshd",t)},updateSetting:function(t,e,i){this.$store.dispatch("UpdateSettings",{tab:e,data:g()({},i,t)})},onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},Dt=(i("FCne"),Object(m.a)(St,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{ref:"esshdData",attrs:{model:t.esshdData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.esshd,data:t.esshdData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));Dt.options.__file="Esshd.vue";var wt=Dt.exports,xt={name:"Frontend",components:{Setting:ut},computed:c()({},Object(p.b)(["settings"]),{assets:function(){return this.settings.description.find(function(t){return":assets"===t.key})},assetsData:function(){return it.a.get(this.settings.settings,[":pleroma",":assets"])||{}},chat:function(){return this.settings.description.find(function(t){return":chat"===t.key})},chatData:function(){return it.a.get(this.settings.settings,[":pleroma",":chat"])||{}},emoji:function(){return this.settings.description.find(function(t){return":emoji"===t.key})},emojiData:function(){return it.a.get(this.settings.settings,[":pleroma",":emoji"])||{}},frontend:function(){return this.settings.description.find(function(t){return":frontend_configurations"===t.key})},frontendData:function(){return it.a.get(this.settings.settings,[":pleroma",":frontend_configurations"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading},markup:function(){return this.settings.description.find(function(t){return":markup"===t.key})},markupData:function(){return it.a.get(this.settings.settings,[":pleroma",":markup"])||{}},staticFe:function(){return this.settings.description.find(function(t){return":static_fe"===t.key})},staticFeData:function(){return it.a.get(this.settings.settings,[":pleroma",":static_fe"])||{}}}),methods:{onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},Ct=(i("hVXW"),Object(m.a)(xt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{ref:"frontendData",attrs:{model:t.frontendData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.frontend,data:t.frontendData}})],1),t._v(" "),i("el-form",{ref:"staticFeData",attrs:{model:t.staticFeData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.staticFe,data:t.staticFeData}})],1),t._v(" "),t.staticFe?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"assetsData",attrs:{model:t.assetsData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[t.assets?i("el-form-item",{staticClass:"grouped-settings-header"},[i("span",{staticClass:"label-font label-with-margin"},[t._v(t._s(t.$t("settings.assets")))])]):t._e(),t._v(" "),i("setting",{attrs:{"setting-group":t.assets,data:t.assetsData}})],1),t._v(" "),t.assets?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"emojiData",attrs:{model:t.emojiData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[t.emoji?i("el-form-item",{staticClass:"grouped-settings-header",attrs:{"data-search":":emoji"}},[i("span",{staticClass:"label-font label-with-margin"},[t._v(t._s(t.$t("settings.emoji")))])]):t._e(),t._v(" "),i("setting",{attrs:{"setting-group":t.emoji,data:t.emojiData}})],1),t._v(" "),t.emoji?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"chatData",attrs:{model:t.chatData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.chat,data:t.chatData}})],1),t._v(" "),t.chat?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"markupData",attrs:{model:t.markupData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[t.markup?i("el-form-item",{staticClass:"grouped-settings-header",attrs:{"data-search":":markup"}},[i("span",{staticClass:"label-font label-with-margin"},[t._v(t._s(t.$t("settings.markup")))])]):t._e(),t._v(" "),i("setting",{attrs:{"setting-group":t.markup,data:t.markupData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));Ct.options.__file="Frontend.vue";var $t=Ct.exports,Pt={name:"Gopher",components:{Setting:ut},computed:c()({},Object(p.b)(["settings"]),{gopher:function(){return this.settings.description.find(function(t){return":gopher"===t.key})},gopherData:function(){return it.a.get(this.settings.settings,[":pleroma",":gopher"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading}}),methods:{onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},Ot=(i("w5cJ"),Object(m.a)(Pt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[t.loading?t._e():i("el-form",{ref:"gopher",attrs:{model:t.gopherData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.gopher,data:t.gopherData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));Ot.options.__file="Gopher.vue";var Ut=Ot.exports,Mt={name:"HTTP",components:{Setting:ut},computed:c()({},Object(p.b)(["settings"]),{corsPlug:function(){return this.settings.description.find(function(t){return":cors_plug"===t.group})},corsPlugData:function(){return it.a.get(this.settings.settings,[":cors_plug"])||{}},http:function(){return this.settings.description.find(function(t){return":http"===t.key})},httpData:function(){return it.a.get(this.settings.settings,[":pleroma",":http"])||{}},httpSecurity:function(){return this.settings.description.find(function(t){return":http_security"===t.key})},httpSecurityData:function(){return it.a.get(this.settings.settings,[":pleroma",":http_security"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading},webCacheTtl:function(){return this.settings.description.find(function(t){return":web_cache_ttl"===t.key})},webCacheTtlData:function(){return it.a.get(this.settings.settings,[":pleroma",":web_cache_ttl"])||{}}}),methods:{onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},jt=(i("KFE3"),Object(m.a)(Mt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{ref:"httpData",attrs:{model:t.httpData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.http,data:t.httpData}})],1),t._v(" "),i("el-form",{ref:"corsPlugData",attrs:{model:t.corsPlugData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[t.corsPlug?i("el-form-item",{staticClass:"grouped-settings-header",attrs:{"data-search":":cors_plug"}},[i("span",{staticClass:"label-font label-with-margin"},[t._v(t._s(t.$t("settings.corsPlug")))])]):t._e(),t._v(" "),i("setting",{attrs:{"setting-group":t.corsPlug,data:t.corsPlugData}})],1),t._v(" "),t.corsPlug?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"httpSignatures",attrs:{model:t.httpSignaturesData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.httpSignatures,data:t.httpSignaturesData}})],1),t._v(" "),t.httpSignatures?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"httpSecurityData",attrs:{model:t.httpSecurityData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.httpSecurity,data:t.httpSecurityData}})],1),t._v(" "),t.httpSecurity?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"webCacheTtl",attrs:{model:t.webCacheTtlData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.webCacheTtl,data:t.webCacheTtlData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));jt.options.__file="Http.vue";var Tt=jt.exports,At={name:"Instance",components:{Setting:ut},computed:c()({},Object(p.b)(["settings"]),{adminToken:function(){return this.settings.description.find(function(t){return t.children&&":admin_token"===t.children[0].key})},adminTokenData:function(){return it.a.get(this.settings.settings,[":pleroma",":admin_token"])||{}},feed:function(){return this.settings.description.find(function(t){return":feed"===t.key})},feedData:function(){return it.a.get(this.settings.settings,[":pleroma",":feed"])||{}},instance:function(){return this.settings.description.find(function(t){return":instance"===t.key})},instanceData:function(){return it.a.get(this.settings.settings,[":pleroma",":instance"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading},manifest:function(){return this.settings.description.find(function(t){return":manifest"===t.key})},manifestData:function(){return it.a.get(this.settings.settings,[":pleroma",":manifest"])||{}},pleromaUser:function(){return this.settings.description.find(function(t){return"Pleroma.User"===t.key})},pleromaUserData:function(){return it.a.get(this.settings.settings,[":pleroma","Pleroma.User"])||{}},scheduledActivity:function(){return this.$store.state.settings.description.find(function(t){return"Pleroma.ScheduledActivity"===t.key})},scheduledActivityData:function(){return it.a.get(this.settings.settings,[":pleroma","Pleroma.ScheduledActivity"])||{}},streamer:function(){return this.$store.state.settings.description.find(function(t){return":streamer"===t.key})},streamerData:function(){return it.a.get(this.settings.settings,[":pleroma",":streamer"])||{}},uriSchemes:function(){return this.settings.description.find(function(t){return":uri_schemes"===t.key})},uriSchemesData:function(){return it.a.get(this.settings.settings,[":pleroma",":uri_schemes"])||{}}}),methods:{onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},Gt=(i("e0P1"),Object(m.a)(At,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{ref:"instanceData",attrs:{model:t.instanceData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.instance,data:t.instanceData}})],1),t._v(" "),t.instance?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"adminToken",attrs:{model:t.adminTokenData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.adminToken,data:t.adminTokenData}})],1),t._v(" "),t.adminToken?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"scheduledActivity",attrs:{model:t.scheduledActivityData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.scheduledActivity,data:t.scheduledActivityData}})],1),t._v(" "),t.scheduledActivity?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"manifest",attrs:{model:t.manifestData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.manifest,data:t.manifestData}})],1),t._v(" "),t.manifest?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"pleromaUser",attrs:{model:t.pleromaUserData,"label-position":t.labelPosition,"label-width":t.labelWidth,"data-search":"Pleroma.User"}},[i("setting",{attrs:{"setting-group":t.pleromaUser,data:t.pleromaUserData}})],1),t._v(" "),t.pleromaUser?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"uriSchemes",attrs:{model:t.uriSchemesData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.uriSchemes,data:t.uriSchemesData}})],1),t._v(" "),t.uriSchemes?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"feed",attrs:{model:t.feedData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.feed,data:t.feedData}})],1),t._v(" "),i("el-form",{ref:"streamer",attrs:{model:t.streamerData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.streamer,data:t.streamerData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));Gt.options.__file="Instance.vue";var Wt=Gt.exports,Lt={name:"JobQueue",components:{Setting:ut},computed:c()({},Object(p.b)(["settings"]),{activityExpiration:function(){return this.settings.description.find(function(t){return"Pleroma.ActivityExpiration"===t.key})},activityExpirationData:function(){return it.a.get(this.settings.settings,[":pleroma","Pleroma.ActivityExpiration"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading},obanQueues:function(){return this.settings.description.find(function(t){return"Oban"===t.key})},obanQueuesData:function(){return it.a.get(this.settings.settings,[":pleroma","Oban"])||{}},workers:function(){return this.settings.description.find(function(t){return":workers"===t.key})},workersData:function(){return it.a.get(this.settings.settings,[":pleroma",":workers"])||{}}}),methods:{onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},Et=(i("lNpP"),Object(m.a)(Lt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{ref:"obanQueuesData",attrs:{model:t.obanQueuesData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.obanQueues,data:t.obanQueuesData}})],1),t._v(" "),i("el-form",{ref:"workersData",attrs:{model:t.workersData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.workers,data:t.workersData}})],1),t._v(" "),i("el-form",{ref:"activityExpiration",attrs:{model:t.activityExpirationData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.activityExpiration,data:t.activityExpirationData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));Et.options.__file="JobQueue.vue";var It=Et.exports,Rt={name:"Logger",components:{Setting:ut},computed:c()({},Object(p.b)(["settings"]),{console:function(){return this.settings.description.find(function(t){return":console"===t.key})},consoleData:function(){return it.a.get(this.settings.settings,[":logger",":console"])||{}},exsyslogger:function(){return this.settings.description.find(function(t){return":ex_syslogger"===t.key})},exsysloggerData:function(){return it.a.get(this.settings.settings,[":logger",":ex_syslogger"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading},logger:function(){return this.settings.description.find(function(t){return":logger"===t.group})},loggerData:function(){return it.a.get(this.settings.settings,[":logger",":backends"])||{}},quack:function(){return this.settings.description.find(function(t){return":quack"===t.group})},quackData:function(){return it.a.get(this.settings.settings,[":quack"])||{}}}),methods:{onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},Ft=(i("mADP"),Object(m.a)(Rt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{ref:"loggerData",attrs:{model:t.loggerData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.logger,data:t.loggerData}})],1),t._v(" "),t.logger?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"consoleData",attrs:{model:t.consoleData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.console,data:t.consoleData}})],1),t._v(" "),t.console?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"exsysloggerData",attrs:{model:t.exsysloggerData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.exsyslogger,data:t.exsysloggerData}})],1),t._v(" "),t.exsyslogger?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"quackData",attrs:{model:t.quackData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.quack,data:t.quackData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));Ft.options.__file="Logger.vue";var Kt=Ft.exports,Vt={name:"Mailer",components:{Setting:ut},computed:c()({},Object(p.b)(["settings"]),{emailNotifications:function(){return this.settings.description.find(function(t){return":email_notifications"===t.key})},emailNotificationsData:function(){return it.a.get(this.settings.settings,[":pleroma",":email_notifications"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.$store.state.settings.loading},mailer:function(){return this.settings.description.find(function(t){return"Pleroma.Emails.Mailer"===t.key})},mailerData:function(){return it.a.get(this.settings.settings,[":pleroma","Pleroma.Emails.Mailer"])||{}},newUsersDigestEmail:function(){return this.settings.description.find(function(t){return"Pleroma.Emails.NewUsersDigestEmail"===t.key})},newUsersDigestEmailData:function(){return it.a.get(this.settings.settings,[":pleroma","Pleroma.Emails.NewUsersDigestEmail"])||{}},swoosh:function(){return this.settings.description.find(function(t){return":swoosh"===t.group})},swooshData:function(){return it.a.get(this.settings.settings,[":swoosh"])||{}},userEmail:function(){return this.settings.description.find(function(t){return"Pleroma.Emails.UserEmail"===t.key})},userEmailData:function(){return it.a.get(this.settings.settings,[":pleroma","Pleroma.Emails.UserEmail"])||{}}}),methods:{onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},zt=(i("PygS"),Object(m.a)(Vt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{ref:"mailer",attrs:{model:t.mailerData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.mailer,data:t.mailerData}})],1),t._v(" "),t.mailer?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"swoosh",attrs:{model:t.swooshData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.swoosh,data:t.swooshData}})],1),t._v(" "),t.swoosh?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"emailNotifications",attrs:{model:t.emailNotificationsData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.emailNotifications,data:t.emailNotificationsData}})],1),t._v(" "),i("el-form",{ref:"userEmail",attrs:{model:t.userEmailData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.userEmail,data:t.userEmailData}})],1),t._v(" "),i("el-form",{ref:"newUsersDigestEmail",attrs:{model:t.newUsersDigestEmailData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.newUsersDigestEmail,data:t.newUsersDigestEmailData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));zt.options.__file="Mailer.vue";var qt=zt.exports,Nt={name:"MediaProxy",components:{Setting:ut},computed:c()({},Object(p.b)(["settings"]),{isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading},mediaProxy:function(){return this.settings.description.find(function(t){return":media_proxy"===t.key})},mediaProxyData:function(){return it.a.get(this.settings.settings,[":pleroma",":media_proxy"])||{}}}),methods:{onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},Bt=(i("UdS4"),Object(m.a)(Nt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[t.loading?t._e():i("el-form",{ref:"mediaProxy",attrs:{model:t.mediaProxyData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.mediaProxy,data:t.mediaProxyData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));Bt.options.__file="MediaProxy.vue";var Ht=Bt.exports,Qt={name:"Metadata",components:{Setting:ut},computed:c()({},Object(p.b)(["settings"]),{isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading},metadata:function(){return this.settings.description.find(function(t){return"Pleroma.Web.Metadata"===t.key})},metadataData:function(){return it.a.get(this.settings.settings,[":pleroma","Pleroma.Web.Metadata"])||{}},richMedia:function(){return this.settings.description.find(function(t){return":rich_media"===t.key})},richMediaData:function(){return it.a.get(this.settings.settings,[":pleroma",":rich_media"])||{}}}),methods:{onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},Jt=(i("apN7"),Object(m.a)(Qt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{ref:"metadata",attrs:{model:t.metadataData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.metadata,data:t.metadataData}})],1),t._v(" "),t.metadata?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"richMedia",attrs:{model:t.richMediaData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.richMedia,data:t.richMediaData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));Jt.options.__file="Metadata.vue";var Yt=Jt.exports,Xt={name:"MRF",components:{Setting:ut},computed:c()({},Object(p.b)(["settings"]),{isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading},modules:function(){return this.settings.description.find(function(t){return":modules"===t.key})},modulesData:function(){return it.a.get(this.settings.settings,[":pleroma",":modules"])||{}},mrfActivityExpiration:function(){return this.settings.description.find(function(t){return":mrf_activity_expiration"===t.key})},mrfActivityExpirationData:function(){return it.a.get(this.settings.settings,[":pleroma",":mrf_activity_expiration"])||{}},mrfSimple:function(){return this.settings.description.find(function(t){return":mrf_simple"===t.key})},mrfSimpleData:function(){return it.a.get(this.settings.settings,[":pleroma",":mrf_simple"])||{}},mrfRejectnonpublic:function(){return this.settings.description.find(function(t){return":mrf_rejectnonpublic"===t.key})},mrfRejectnonpublicData:function(){return it.a.get(this.settings.settings,[":pleroma",":mrf_rejectnonpublic"])||{}},mrfHellthread:function(){return this.settings.description.find(function(t){return":mrf_hellthread"===t.key})},mrfHellthreadData:function(){return it.a.get(this.settings.settings,[":pleroma",":mrf_hellthread"])||{}},mrfKeyword:function(){return this.settings.description.find(function(t){return":mrf_keyword"===t.key})},mrfKeywordData:function(){return it.a.get(this.settings.settings,[":pleroma",":mrf_keyword"])||{}},mrfObjectAge:function(){return this.settings.description.find(function(t){return":mrf_object_age"===t.key})},mrfObjectAgeData:function(){return it.a.get(this.settings.settings,[":pleroma",":mrf_object_age"])||{}},mrfSubchain:function(){return this.settings.description.find(function(t){return":mrf_subchain"===t.key})},mrfSubchainData:function(){return it.a.get(this.settings.settings,[":pleroma",":mrf_subchain"])||{}},mrfMention:function(){return this.settings.description.find(function(t){return":mrf_mention"===t.key})},mrfMentionData:function(){return it.a.get(this.settings.settings,[":pleroma",":mrf_mention"])||{}},mrfNormalizeMarkup:function(){return this.settings.description.find(function(t){return":mrf_normalize_markup"===t.key})},mrfNormalizeMarkupData:function(){return it.a.get(this.settings.settings,[":pleroma",":mrf_normalize_markup"])||{}},mrfVocabulary:function(){return this.settings.description.find(function(t){return":mrf_vocabulary"===t.key})},mrfVocabularyData:function(){return it.a.get(this.settings.settings,[":pleroma",":mrf_vocabulary"])||{}}}),methods:{onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},Zt=(i("h9z7"),Object(m.a)(Xt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{ref:"mrfSimple",attrs:{model:t.mrfSimpleData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.mrfSimple,data:t.mrfSimpleData}})],1),t._v(" "),t.mrfSimple?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"mrfRejectnonpublic",attrs:{model:t.mrfRejectnonpublicData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.mrfRejectnonpublic,data:t.mrfRejectnonpublicData}})],1),t._v(" "),t.mrfRejectnonpublic?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"mrfHellthread",attrs:{model:t.mrfHellthreadData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.mrfHellthread,data:t.mrfHellthreadData}})],1),t._v(" "),t.mrfHellthread?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"mrfKeyword",attrs:{model:t.mrfKeywordData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.mrfKeyword,data:t.mrfKeywordData}})],1),t._v(" "),i("el-form",{ref:"mrfSubchain",attrs:{model:t.mrfSubchainData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.mrfSubchain,data:t.mrfSubchainData}})],1),t._v(" "),i("el-form",{ref:"mrfMention",attrs:{model:t.mrfMentionData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.mrfMention,data:t.mrfMentionData}})],1),t._v(" "),t.mrfMention?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"mrfNormalizeMarkup",attrs:{model:t.mrfNormalizeMarkupData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.mrfNormalizeMarkup,data:t.mrfNormalizeMarkupData}})],1),t._v(" "),t.mrfNormalizeMarkup?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"mrfVocabulary",attrs:{model:t.mrfVocabularyData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.mrfVocabulary,data:t.mrfVocabularyData}})],1),t._v(" "),t.mrfVocabulary?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"mrfObjectAge",attrs:{model:t.mrfObjectAgeData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.mrfObjectAge,data:t.mrfObjectAgeData}})],1),t._v(" "),t.mrfObjectAge?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"mrfActivityExpiration",attrs:{model:t.mrfActivityExpirationData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.mrfActivityExpiration,data:t.mrfActivityExpirationData}})],1),t._v(" "),t.mrfActivityExpiration?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"modules",attrs:{model:t.modulesData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.modules,data:t.modulesData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));Zt.options.__file="MRF.vue";var te=Zt.exports,ee={name:"Other",components:{Setting:ut},computed:c()({},Object(p.b)(["settings"]),{isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading},mimeTypes:function(){return this.settings.description.find(function(t){return":mime"===t.group})},mimeTypesData:function(){return it.a.get(this.settings.settings,[":mime"])||{}},remoteIp:function(){return this.settings.description.find(function(t){return"Pleroma.Plugs.RemoteIp"===t.key})},remoteIpData:function(){return it.a.get(this.settings.settings,[":pleroma","Pleroma.Plugs.RemoteIp"])||{}}}),methods:{onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},ie=(i("gFOO"),Object(m.a)(ee,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{ref:"mimeTypes",attrs:{model:t.mimeTypesData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.mimeTypes,data:t.mimeTypesData}})],1),t._v(" "),i("el-form",{ref:"remoteIp",attrs:{model:t.remoteIpData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.remoteIp,data:t.remoteIpData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));ie.options.__file="Other.vue";var se=ie.exports,ne={name:"RateLimiters",components:{Setting:ut},computed:c()({},Object(p.b)(["settings"]),{rateLimiters:function(){return this.settings.description.find(function(t){return":rate_limit"===t.key})},rateLimitersData:function(){return it.a.get(this.settings.settings,[":pleroma",":rate_limit"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.$store.state.settings.loading}}),methods:{onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},ae=(i("WvM+"),Object(m.a)(ne,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[t.loading?t._e():i("el-form",{ref:"rateLimiters",attrs:{model:t.rateLimitersData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.rateLimiters,data:t.rateLimitersData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));ae.options.__file="RateLimiters.vue";var re=ae.exports,oe={name:"Relays",data:function(){return{newRelay:""}},computed:{relays:function(){return this.$store.state.relays.fetchedRelays},relaysTable:function(){return this.relays.map(function(t){return{instance:t}})},loading:function(){return this.$store.state.relays.loading}},mounted:function(){this.$store.dispatch("FetchRelays")},methods:{followRelay:function(){this.$store.dispatch("AddRelay",this.newRelay)},deleteRelay:function(t){this.$store.dispatch("DeleteRelay",t)}}},le=(i("J7+w"),Object(m.a)(oe,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"relays-container"},[i("div",{staticClass:"follow-relay-container"},[i("el-input",{staticClass:"follow-relay",attrs:{placeholder:t.$t("settings.followRelay")},nativeOn:{keyup:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.followRelay(e)}},model:{value:t.newRelay,callback:function(e){t.newRelay=e},expression:"newRelay"}}),t._v(" "),i("el-button",{attrs:{type:"primary"},nativeOn:{click:function(e){return t.followRelay(e)}}},[t._v(t._s(t.$t("settings.follow")))])],1),t._v(" "),i("el-table",{attrs:{data:t.relaysTable}},[i("el-table-column",{attrs:{label:t.$t("settings.instanceUrl"),prop:"instance"}}),t._v(" "),i("el-table-column",{attrs:{fixed:"right",width:"120"},scopedSlots:t._u([{key:"default",fn:function(e){return[i("el-button",{attrs:{type:"text",size:"small"},nativeOn:{click:function(i){return t.deleteRelay(e.row.instance)}}},[t._v("\n "+t._s(t.$t("table.delete"))+"\n ")])]}}],null,!1,2132974932)})],1)],1)},[],!1,null,null,null));le.options.__file="Relays.vue";var ue=le.exports,ce={name:"Upload",components:{Setting:ut},computed:c()({},Object(p.b)(["settings"]),{isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading},showUploadersS3:function(){return"Pleroma.Uploaders.S3"===it.a.get(this.settings.settings,[":pleroma","Pleroma.Upload",":uploader"])},showUploadersLocal:function(){return"Pleroma.Uploaders.Local"===it.a.get(this.settings.settings,[":pleroma","Pleroma.Upload",":uploader"])},upload:function(){return this.settings.description.find(function(t){return"Pleroma.Upload"===t.key})},uploadData:function(){return it.a.get(this.settings.settings,[":pleroma","Pleroma.Upload"])||{}},uploadersLocal:function(){return this.settings.description.find(function(t){return"Pleroma.Uploaders.Local"===t.key})},uploadersLocalData:function(){return it.a.get(this.settings.settings,[":pleroma","Pleroma.Uploaders.Local"])||{}},uploadersS3:function(){return this.settings.description.find(function(t){return"Pleroma.Uploaders.S3"===t.key})},uploadersS3Data:function(){return it.a.get(this.settings.settings,[":pleroma","Pleroma.Uploaders.S3"])||{}},uploadFilterMogrify:function(){return this.settings.description.find(function(t){return"Pleroma.Upload.Filter.Mogrify"===t.key})},uploadFilterMogrifyData:function(){return it.a.get(this.settings.settings,[":pleroma","Pleroma.Upload.Filter.Mogrify"])||{}},uploadAnonymizeFilename:function(){return this.settings.description.find(function(t){return"Pleroma.Upload.Filter.AnonymizeFilename"===t.key})},uploadAnonymizeFilenameData:function(){return it.a.get(this.settings.settings,[":pleroma","Pleroma.Upload.Filter.AnonymizeFilename"])||{}}}),methods:{onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},pe=(i("DPt0"),Object(m.a)(ce,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{ref:"uploadData",attrs:{model:t.uploadData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.upload,data:t.uploadData}})],1),t._v(" "),t.showUploadersLocal?i("el-form",{ref:"uploadersLocal",attrs:{model:t.uploadersLocalData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[t.uploadersLocal?i("el-form-item",{staticClass:"grouped-settings-header"},[i("span",{staticClass:"label-font label-with-margin"},[t._v("Pleroma.Uploaders.Local")])]):t._e(),t._v(" "),i("setting",{attrs:{"setting-group":t.uploadersLocal,data:t.uploadersLocalData}}),t._v(" "),t.uploadersLocal?i("el-divider",{staticClass:"divider thick-line"}):t._e()],1):t._e(),t._v(" "),t.showUploadersS3?i("el-form",{ref:"uploadersS3",attrs:{model:t.uploadersS3Data,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.uploadersS3,data:t.uploadersS3Data}}),t._v(" "),t.uploadersS3?i("el-divider",{staticClass:"divider thick-line"}):t._e()],1):t._e(),t._v(" "),i("el-form",{ref:"uploadFilterMogrify",attrs:{model:t.uploadFilterMogrifyData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.uploadFilterMogrify,data:t.uploadFilterMogrifyData}})],1),t._v(" "),t.uploadFilterMogrify?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"uploadAnonymizeFilename",attrs:{model:t.uploadAnonymizeFilenameData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.uploadAnonymizeFilename,data:t.uploadAnonymizeFilenameData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));pe.options.__file="Upload.vue";var de=pe.exports,ge={name:"WebPush",components:{Setting:ut},computed:c()({},Object(p.b)(["settings"]),{isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading},vapidDetails:function(){return this.settings.description.find(function(t){return":vapid_details"===t.key})},vapidDetailsData:function(){return it.a.get(this.settings.settings,[":web_push_encryption",":vapid_details"])||{}}}),methods:{onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},he=(i("+qaP"),Object(m.a)(ge,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[t.loading?t._e():i("el-form",{ref:"vapidDetailsData",attrs:{model:t.vapidDetailsData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.vapidDetails,data:t.vapidDetailsData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));he.options.__file="WebPush.vue";var me=he.exports,fe={components:{ActivityPub:dt,Authentication:mt,AutoLinker:vt,Captcha:kt,Esshd:wt,Frontend:$t,Gopher:Ut,Http:Tt,Instance:Wt,JobQueue:It,Logger:Kt,Mailer:qt,MediaProxy:Ht,Metadata:Yt,Mrf:te,Other:se,RateLimiters:re,Relays:ue,RebootButton:i("rIUS").a,Upload:de,WebPush:me},data:function(){return{options:[{value:"activityPub",label:o.a.t("settings.activityPub")},{value:"auth",label:o.a.t("settings.auth")},{value:"autoLinker",label:o.a.t("settings.autoLinker")},{value:"esshd",label:o.a.t("settings.esshd")},{value:"captcha",label:o.a.t("settings.captcha")},{value:"frontend",label:o.a.t("settings.frontend")},{value:"gopher",label:o.a.t("settings.gopher")},{value:"http",label:o.a.t("settings.http")},{value:"instance",label:o.a.t("settings.instance")},{value:"jobQueue",label:o.a.t("settings.jobQueue")},{value:"logger",label:o.a.t("settings.logger")},{value:"mailer",label:o.a.t("settings.mailer")},{value:"mediaProxy",label:o.a.t("settings.mediaProxy")},{value:"metadata",label:o.a.t("settings.metadata")},{value:"mrf",label:o.a.t("settings.mrf")},{value:"rateLimiters",label:o.a.t("settings.rateLimiters")},{value:"relays",label:o.a.t("settings.relays")},{value:"webPush",label:o.a.t("settings.webPush")},{value:"upload",label:o.a.t("settings.upload")},{value:"other",label:o.a.t("settings.other")}],searchQuery:""}},computed:{activeTab:{get:function(){return this.$store.state.settings.activeTab},set:function(t){this.$store.dispatch("SetActiveTab",t)}},configDisabled:function(){return this.$store.state.settings.configDisabled},isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"header-sidebar-opened":"header-sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},rebootIsSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"reboot-sidebar-opened":"reboot-sidebar-closed"},searchData:function(){return this.$store.state.settings.searchData},tabs:function(){return l}},mounted:function(){this.$store.dispatch("GetNodeInfo"),this.$store.dispatch("NeedReboot"),this.$store.dispatch("FetchSettings")},methods:{handleSearchSelect:function(){var t=r()(n.a.mark(function t(e){var i,s,a=this;return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return i=Object.keys(this.tabs).find(function(t){return a.tabs[t].settings.includes(":pleroma"===e.group?e.key:e.group)}),t.next=3,this.$store.dispatch("SetActiveTab",i);case 3:(s=document.querySelector('[data-search="'.concat(e.key,'"]')))&&s.scrollIntoView({block:"start",behavior:"smooth"});case 5:case"end":return t.stop()}},t,this)}));return function(e){return t.apply(this,arguments)}}(),querySearch:function(t,e){e(this.searchData.filter(function(e){return e.search.find(function(e){return e.includes(t.toLowerCase())})}).map(function(t){return":opts"===t.groupKey?{value:"".concat(t.label," in Auto Linker"),group:t.groupKey,key:t.key}:{value:"".concat(t.label," in ").concat(t.groupLabel),group:t.groupKey,key:t.key}}))},settingsCantBeChanged:function(t){var e=this;return 0===t.filter(function(t){return[":esshd",":cors_plug",":quack",":logger",":swoosh",":mime"].includes(t)?-1!==e.$store.state.settings.description.findIndex(function(e){return e.group===t}):"Pleroma.Web.Auth.Authenticator"===t||":admin_token"===t?-1!==e.$store.state.settings.description.findIndex(function(e){return e.children[0].key===t}):"relays"===t?[t]:-1!==e.$store.state.settings.description.findIndex(function(e){return e.key===t})}).length}}},be=(i("SFMd"),Object(m.a)(fe,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"settings-container",class:t.rebootIsSidebarOpen},[i("div",{staticClass:"reboot-button-container"},[i("reboot-button")],1),t._v(" "),t.isDesktop?i("div",[i("div",{staticClass:"settings-header-container",class:t.isSidebarOpen},[i("h1",{staticClass:"settings-header"},[t._v(t._s(t.$t("settings.settings")))]),t._v(" "),i("div",{staticClass:"docs-search-container"},[i("el-link",{attrs:{underline:!1,href:"https://docs-develop.pleroma.social/backend/administration/CLI_tasks/config/",target:"_blank"}},[i("el-button",{staticClass:"settings-docs-button"},[i("span",[i("i",{staticClass:"el-icon-document"}),t._v("\n "+t._s(t.$t("settings.seeDocs"))+"\n ")])])],1),t._v(" "),i("el-autocomplete",{staticClass:"settings-search-input",attrs:{"fetch-suggestions":t.querySearch,"trigger-on-focus":!1,clearable:"",placeholder:"Search","prefix-icon":"el-icon-search"},on:{select:t.handleSearchSelect},model:{value:t.searchQuery,callback:function(e){t.searchQuery=e},expression:"searchQuery"}})],1)]),t._v(" "),i("el-tabs",{attrs:{"tab-position":"left"},model:{value:t.activeTab,callback:function(e){t.activeTab=e},expression:"activeTab"}},t._l(t.tabs,function(e,s){return i("el-tab-pane",{key:s,attrs:{label:t.$t(e.label),disabled:t.configDisabled||t.settingsCantBeChanged(e.settings),name:s,lazy:""}},[i(s,{tag:"component"})],1)}),1)],1):t._e(),t._v(" "),t.isMobile||t.isTablet?i("div",[i("div",{staticClass:"settings-header-container",class:t.isSidebarOpen},[i("h1",{staticClass:"settings-header"},[t._v(t._s(t.$t("settings.settings")))])]),t._v(" "),i("div",{staticClass:"nav-container"},[i("el-select",{staticClass:"settings-menu",attrs:{placeholder:"Select"},model:{value:t.activeTab,callback:function(e){t.activeTab=e},expression:"activeTab"}},t._l(t.options,function(e){return i("el-option",{key:e.value,attrs:{label:e.label,value:e.value,disabled:t.configDisabled}})}),1),t._v(" "),i("el-link",{attrs:{underline:!1,href:"https://docs-develop.pleroma.social/backend/administration/CLI_tasks/config/",target:"_blank"}},[i("el-button",{staticClass:"settings-docs-button"},[i("span",[i("i",{staticClass:"el-icon-document"}),t._v("\n "+t._s(t.$t("settings.seeDocs"))+"\n ")])])],1)],1),t._v(" "),i("div",{staticClass:"settings-search-input-container"}),t._v(" "),"activityPub"===t.activeTab?i("activity-pub"):t._e(),t._v(" "),"auth"===t.activeTab?i("authentication"):t._e(),t._v(" "),"autoLinker"===t.activeTab?i("auto-linker"):t._e(),t._v(" "),"esshd"===t.activeTab?i("esshd"):t._e(),t._v(" "),"captcha"===t.activeTab?i("captcha"):t._e(),t._v(" "),"frontend"===t.activeTab?i("frontend"):t._e(),t._v(" "),"gopher"===t.activeTab?i("gopher"):t._e(),t._v(" "),"http"===t.activeTab?i("http"):t._e(),t._v(" "),"instance"===t.activeTab?i("instance"):t._e(),t._v(" "),"jobQueue"===t.activeTab?i("job-queue"):t._e(),t._v(" "),"logger"===t.activeTab?i("logger"):t._e(),t._v(" "),"mailer"===t.activeTab?i("mailer"):t._e(),t._v(" "),"mediaProxy"===t.activeTab?i("media-proxy"):t._e(),t._v(" "),"metadata"===t.activeTab?i("metadata"):t._e(),t._v(" "),"mrf"===t.activeTab?i("mrf"):t._e(),t._v(" "),"rateLimiters"===t.activeTab?i("rate-limiters"):t._e(),t._v(" "),"relays"===t.activeTab?i("relays"):t._e(),t._v(" "),"webPush"===t.activeTab?i("web-push"):t._e(),t._v(" "),"upload"===t.activeTab?i("upload"):t._e(),t._v(" "),"other"===t.activeTab?i("other"):t._e()],1):t._e()])},[],!1,null,"2b61d370",null));be.options.__file="index.vue";e.default=be.exports},apN7:function(t,e,i){"use strict";var s=i("9p49");i.n(s).a},cyzs:function(t,e,i){"use strict";var s=i("Px65");i.n(s).a},e0P1:function(t,e,i){"use strict";var s=i("TudB");i.n(s).a},fyIw:function(t,e,i){},gFOO:function(t,e,i){"use strict";var s=i("jqM2");i.n(s).a},h9z7:function(t,e,i){"use strict";var s=i("TOIk");i.n(s).a},hVXW:function(t,e,i){"use strict";var s=i("uswN");i.n(s).a},irif:function(t,e,i){"use strict";var s=i("UtFC");i.n(s).a},jqM2:function(t,e,i){},lNpP:function(t,e,i){"use strict";var s=i("UbP/");i.n(s).a},ld6V:function(t,e,i){},mADP:function(t,e,i){"use strict";var s=i("qLeA");i.n(s).a},mGnP:function(t,e,i){"use strict";var s=i("smg2");i.n(s).a},mSK5:function(t,e,i){},mstB:function(t,e,i){"use strict";var s=i("pd4h");i.n(s).a},nKzF:function(t,e,i){"use strict";var s=i("77pt");i.n(s).a},"ncj/":function(t,e,i){},pd4h:function(t,e,i){},pnah:function(t,e,i){"use strict";var s=i("JqY8");i.n(s).a},qEST:function(t,e,i){"use strict";var s=i("4NUT");i.n(s).a},qLeA:function(t,e,i){},rdar:function(t,e,i){"use strict";var s=i("NiUD");i.n(s).a},smg2:function(t,e,i){},uswN:function(t,e,i){},w5cJ:function(t,e,i){"use strict";var s=i("PYLh");i.n(s).a},wgcy:function(t,e,i){},x6RV:function(t,e,i){},y7KD:function(t,e,i){"use strict";var s=i("YKHE");i.n(s).a}}]); +//# sourceMappingURL=chunk-43ca.3debeff7.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-43ca.3debeff7.js.map b/priv/static/adminfe/static/js/chunk-43ca.3debeff7.js.map new file mode 100644 index 000000000..f7976891f --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-43ca.3debeff7.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/settings/components/inputComponents/MascotsInput.vue?c65c","webpack:///./src/views/settings/components/WebPush.vue?38e3","webpack:///./src/views/settings/components/Captcha.vue?029c","webpack:///./src/views/settings/components/inputComponents/SelectInputWithReducedLabels.vue?ac92","webpack:///./src/views/settings/components/Authentication.vue?4503","webpack:///./src/views/settings/components/inputComponents/RegInvitesInput.vue?b469","webpack:///./src/views/settings/components/Upload.vue?33cd","webpack:///./src/views/settings/components/inputComponents/PruneInput.vue?cf11","webpack:///./src/views/settings/components/Esshd.vue?eedf","webpack:///./src/views/settings/components/Relays.vue?3141","webpack:///./src/views/settings/components/Http.vue?56b1","webpack:///./src/views/settings/components/inputComponents/AutoLinkerInput.vue?7da2","webpack:///./src/views/settings/components/Mailer.vue?cb92","webpack:///./src/views/settings/index.vue?7ecf","webpack:///./src/views/settings/components/MediaProxy.vue?e0fb","webpack:///./src/views/settings/components/inputComponents/SpecificMultipleSelect.vue?6f06","webpack:///./src/views/settings/components/RateLimiters.vue?0aac","webpack:///./src/views/settings/index.vue?8677","webpack:///./src/views/settings/components/tabs.js","webpack:///./src/views/settings/components/inputComponents/AutoLinkerInput.vue?f6c5","webpack:///src/views/settings/components/inputComponents/AutoLinkerInput.vue","webpack:///./src/views/settings/components/inputComponents/AutoLinkerInput.vue","webpack:///./src/views/settings/components/inputComponents/AutoLinkerInput.vue?2dcf","webpack:///./src/views/settings/components/inputComponents/EditableKeywordInput.vue?859c","webpack:///src/views/settings/components/inputComponents/EditableKeywordInput.vue","webpack:///./src/views/settings/components/inputComponents/EditableKeywordInput.vue","webpack:///./src/views/settings/components/inputComponents/EditableKeywordInput.vue?9a9b","webpack:///./src/views/settings/components/inputComponents/CrontabInput.vue?fcd8","webpack:///src/views/settings/components/inputComponents/CrontabInput.vue","webpack:///./src/views/settings/components/inputComponents/CrontabInput.vue","webpack:///./src/views/settings/components/inputComponents/CrontabInput.vue?3c41","webpack:///./src/views/settings/components/inputComponents/IconsInput.vue?bdb0","webpack:///src/views/settings/components/inputComponents/IconsInput.vue","webpack:///./src/views/settings/components/inputComponents/IconsInput.vue","webpack:///./src/views/settings/components/inputComponents/IconsInput.vue?a391","webpack:///./src/views/settings/components/inputComponents/MascotsInput.vue?9cfe","webpack:///src/views/settings/components/inputComponents/MascotsInput.vue","webpack:///./src/views/settings/components/inputComponents/MascotsInput.vue","webpack:///./src/views/settings/components/inputComponents/MascotsInput.vue?df45","webpack:///./src/views/settings/components/inputComponents/ProxyUrlInput.vue?4183","webpack:///src/views/settings/components/inputComponents/ProxyUrlInput.vue","webpack:///./src/views/settings/components/inputComponents/ProxyUrlInput.vue","webpack:///./src/views/settings/components/inputComponents/ProxyUrlInput.vue?b4d0","webpack:///./src/views/settings/components/inputComponents/PruneInput.vue?663f","webpack:///src/views/settings/components/inputComponents/PruneInput.vue","webpack:///./src/views/settings/components/inputComponents/PruneInput.vue","webpack:///./src/views/settings/components/inputComponents/PruneInput.vue?cf76","webpack:///./src/views/settings/components/inputComponents/RateLimitInput.vue?2905","webpack:///src/views/settings/components/inputComponents/RateLimitInput.vue","webpack:///./src/views/settings/components/inputComponents/RateLimitInput.vue","webpack:///./src/views/settings/components/inputComponents/RateLimitInput.vue?29fc","webpack:///./src/views/settings/components/inputComponents/RegInvitesInput.vue?4de6","webpack:///src/views/settings/components/inputComponents/RegInvitesInput.vue","webpack:///./src/views/settings/components/inputComponents/RegInvitesInput.vue","webpack:///./src/views/settings/components/inputComponents/RegInvitesInput.vue?ce9b","webpack:///./src/views/settings/components/inputComponents/SelectInputWithReducedLabels.vue?b3f6","webpack:///src/views/settings/components/inputComponents/SelectInputWithReducedLabels.vue","webpack:///./src/views/settings/components/inputComponents/SelectInputWithReducedLabels.vue","webpack:///./src/views/settings/components/inputComponents/SelectInputWithReducedLabels.vue?dd55","webpack:///./src/views/settings/components/inputComponents/SpecificMultipleSelect.vue?8500","webpack:///src/views/settings/components/inputComponents/SpecificMultipleSelect.vue","webpack:///./src/views/settings/components/inputComponents/SpecificMultipleSelect.vue","webpack:///./src/views/settings/components/inputComponents/SpecificMultipleSelect.vue?2aa3","webpack:///./src/views/settings/components/Inputs.vue?5b3f","webpack:///src/views/settings/components/Inputs.vue","webpack:///./src/views/settings/components/Inputs.vue","webpack:///./src/views/settings/components/Inputs.vue?c183","webpack:///./src/views/settings/components/Setting.vue?39a1","webpack:///src/views/settings/components/Setting.vue","webpack:///./src/views/settings/components/Setting.vue","webpack:///./src/views/settings/components/Setting.vue?e819","webpack:///./src/views/settings/components/ActivityPub.vue?9ad8","webpack:///src/views/settings/components/ActivityPub.vue","webpack:///./src/views/settings/components/ActivityPub.vue","webpack:///./src/views/settings/components/ActivityPub.vue?041e","webpack:///./src/views/settings/components/Authentication.vue?1922","webpack:///src/views/settings/components/Authentication.vue","webpack:///./src/views/settings/components/Authentication.vue","webpack:///./src/views/settings/components/Authentication.vue?09e5","webpack:///./src/views/settings/components/AutoLinker.vue?fed2","webpack:///src/views/settings/components/AutoLinker.vue","webpack:///./src/views/settings/components/AutoLinker.vue","webpack:///./src/views/settings/components/AutoLinker.vue?7069","webpack:///./src/views/settings/components/Captcha.vue?b5df","webpack:///src/views/settings/components/Captcha.vue","webpack:///./src/views/settings/components/Captcha.vue","webpack:///./src/views/settings/components/Captcha.vue?1a32","webpack:///./src/views/settings/components/Esshd.vue?b0ed","webpack:///src/views/settings/components/Esshd.vue","webpack:///./src/views/settings/components/Esshd.vue","webpack:///./src/views/settings/components/Esshd.vue?2ce0","webpack:///./src/views/settings/components/Frontend.vue?1622","webpack:///src/views/settings/components/Frontend.vue","webpack:///./src/views/settings/components/Frontend.vue","webpack:///./src/views/settings/components/Frontend.vue?2701","webpack:///./src/views/settings/components/Gopher.vue?cb09","webpack:///src/views/settings/components/Gopher.vue","webpack:///./src/views/settings/components/Gopher.vue","webpack:///./src/views/settings/components/Gopher.vue?290c","webpack:///./src/views/settings/components/Http.vue?0ecb","webpack:///src/views/settings/components/Http.vue","webpack:///./src/views/settings/components/Http.vue","webpack:///./src/views/settings/components/Http.vue?d5d9","webpack:///./src/views/settings/components/Instance.vue?ea1e","webpack:///src/views/settings/components/Instance.vue","webpack:///./src/views/settings/components/Instance.vue","webpack:///./src/views/settings/components/Instance.vue?20a1","webpack:///./src/views/settings/components/JobQueue.vue?e650","webpack:///src/views/settings/components/JobQueue.vue","webpack:///./src/views/settings/components/JobQueue.vue","webpack:///./src/views/settings/components/JobQueue.vue?884a","webpack:///./src/views/settings/components/Logger.vue?aa5f","webpack:///src/views/settings/components/Logger.vue","webpack:///./src/views/settings/components/Logger.vue","webpack:///./src/views/settings/components/Logger.vue?bb1c","webpack:///./src/views/settings/components/Mailer.vue?48d6","webpack:///src/views/settings/components/Mailer.vue","webpack:///./src/views/settings/components/Mailer.vue","webpack:///./src/views/settings/components/Mailer.vue?81f1","webpack:///./src/views/settings/components/MediaProxy.vue?9571","webpack:///src/views/settings/components/MediaProxy.vue","webpack:///./src/views/settings/components/MediaProxy.vue","webpack:///./src/views/settings/components/MediaProxy.vue?b888","webpack:///./src/views/settings/components/Metadata.vue?7f4f","webpack:///src/views/settings/components/Metadata.vue","webpack:///./src/views/settings/components/Metadata.vue","webpack:///./src/views/settings/components/Metadata.vue?9aed","webpack:///./src/views/settings/components/MRF.vue?274b","webpack:///src/views/settings/components/MRF.vue","webpack:///./src/views/settings/components/MRF.vue","webpack:///./src/views/settings/components/MRF.vue?7398","webpack:///./src/views/settings/components/Other.vue?7bf4","webpack:///src/views/settings/components/Other.vue","webpack:///./src/views/settings/components/Other.vue","webpack:///./src/views/settings/components/Other.vue?2b05","webpack:///./src/views/settings/components/RateLimiters.vue?15d2","webpack:///src/views/settings/components/RateLimiters.vue","webpack:///./src/views/settings/components/RateLimiters.vue","webpack:///./src/views/settings/components/RateLimiters.vue?10f8","webpack:///./src/views/settings/components/Relays.vue?72ba","webpack:///src/views/settings/components/Relays.vue","webpack:///./src/views/settings/components/Relays.vue","webpack:///./src/views/settings/components/Relays.vue?c6f8","webpack:///./src/views/settings/components/Upload.vue?304d","webpack:///src/views/settings/components/Upload.vue","webpack:///./src/views/settings/components/Upload.vue","webpack:///./src/views/settings/components/Upload.vue?cc32","webpack:///./src/views/settings/components/WebPush.vue?5451","webpack:///src/views/settings/components/WebPush.vue","webpack:///./src/views/settings/components/WebPush.vue","webpack:///./src/views/settings/components/WebPush.vue?7f8e","webpack:///./src/views/settings/index.vue?3c3a","webpack:///src/views/settings/index.vue","webpack:///./src/views/settings/index.vue","webpack:///./src/views/settings/components/Metadata.vue?0952","webpack:///./src/views/settings/components/AutoLinker.vue?42b3","webpack:///./src/views/settings/components/Instance.vue?2668","webpack:///./src/views/settings/components/Other.vue?8e53","webpack:///./src/views/settings/components/MRF.vue?8c92","webpack:///./src/views/settings/components/Frontend.vue?f18f","webpack:///./src/views/settings/components/inputComponents/RateLimitInput.vue?f3ab","webpack:///./src/views/settings/components/JobQueue.vue?d797","webpack:///./src/views/settings/components/Logger.vue?a62e","webpack:///./src/views/settings/components/inputComponents/ProxyUrlInput.vue?e239","webpack:///./src/views/settings/components/inputComponents/CrontabInput.vue?b209","webpack:///./src/views/settings/components/inputComponents/EditableKeywordInput.vue?5f84","webpack:///./src/views/settings/components/Setting.vue?ebdb","webpack:///./src/views/settings/components/ActivityPub.vue?48d9","webpack:///./src/views/settings/components/inputComponents/IconsInput.vue?5a78","webpack:///./src/views/settings/components/Gopher.vue?5fd9","webpack:///./src/views/settings/components/Inputs.vue?e1ce"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_MascotsInput_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_WebPush_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Captcha_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_SelectInputWithReducedLabels_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Authentication_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_RegInvitesInput_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Upload_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_PruneInput_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Esshd_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Relays_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Http_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_AutoLinkerInput_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Mailer_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_2b61d370_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_MediaProxy_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_SpecificMultipleSelect_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_RateLimiters_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","tabs","activity-pub","label","settings","authentication","auto-linker","esshd","captcha","frontend","gopher","http","instance","job-queue","logger","mailer","media-proxy","metadata","mrf","rate-limiters","relays","web-push","upload","other","inputComponents_AutoLinkerInputvue_type_script_lang_js_","name","props","data","type","Object","Array","default","setting","settingGroup","methods","autoLinkerBooleanValue","key","value","this","autoLinkerIntegerValue","autoLinkerStringValue","processTwoTypeValue","input","updateSetting","group","$store","dispatch","component","componentNormalizer","_vm","_h","$createElement","_c","_self","attrs","data-search","on","change","$event","_v","_e","options","__file","AutoLinkerInput","inputComponents_EditableKeywordInputvue_type_script_lang_js_","computed","editableKeywordWithInteger","isArray","includes","isDesktop","state","app","device","addRowToEditableKeyword","updatedValue","concat","toConsumableArray_default","","id","generateID","deleteEditableKeywordRow","element","deletedId","getId","filteredValues","filter","values","Math","random","toString","getKey","keys","getValue","parseEditableKeyword","inputType","_this","updatedId","map","index","defineProperty_default","objectSpread_default","updatedSettings","wrapUpdatedSettings","reduce","acc","EditableKeywordInput_component","staticClass","_l","placeholder","size","icon","circle","click","min","multiple","filterable","allow-create","EditableKeywordInput","inputComponents_CrontabInputvue_type_script_lang_js_","isMobile","isTablet","labelWidth","workers","suggestions","worker","getSuggestion","find","suggestion","update","currentValue","updatedValueWithType","CrontabInput_component","label-width","label-position","CrontabInput","inputComponents_IconsInputvue_type_script_lang_js_","addIconToIcons","addValueToIcons","i","deleteIcondRow","parseIcons","_ref","IconsInput_component","ref","IconsInput","inputComponents_MascotsInputvue_type_script_lang_js_","addRowToMascots",":url",":mime_type","deleteMascotsRow","mascot","getName","getUrl","_Object$values","slicedToArray_default","getMimeType","_Object$values3","parseMascots","mascotsWithoutIDs","_Object$values$","mascotValue","objectWithoutProperties_default","MascotsInput_component","MascotsInput","inputComponents_ProxyUrlInputvue_type_script_lang_js_","parents","required","proxyUrlData","length","socks5","host","port","updateProxyUrl","assembledData","_processNested","normalizers","reverse","valueForState","valueForUpdatedSettings","ProxyUrlInput_component","ProxyUrlInput","inputComponents_PruneInputvue_type_script_lang_js_","prune","get","set","updateRadioInput","updateIntInput","updatedSetting","processedValue","PruneInput_component","model","callback","$$v","expression","PruneInput","inputComponents_RateLimitInputvue_type_script_lang_js_","rateLimitAllUsers","rateLimitAuthUsers","rateLimitUnauthUsers","parseRateLimiter","typeOfInput","typeOfLimit","valueToSend","toggleLimits","tuple","RateLimitInput_component","RateLimitInput","inputComponents_RegInvitesInputvue_type_script_lang_js_","registrationsOpen","invitesEnabled","$confirm","confirmButtonText","cancelButtonText","then","RegInvitesInput_component","RegInvitesInput","inputComponents_SelectInputWithReducedLabelsvue_type_script_lang_js_","inputValue","prefixes",":rewrite_policy","Pleroma.Web.Auth.Authenticator",":method",":adapter",":providers",":parsers",":ttl_setters",":scrub_policy",":federation_publisher_modules",":uploader",":filters","split","renderMultipleSelect","rewritePolicyOptions","SelectInputWithReducedLabels_component","option","clearable","SelectInputWithReducedLabels","inputComponents_SpecificMultipleSelectvue_type_script_lang_js_","SpecificMultipleSelect_component","SpecificMultipleSelect","components_Inputsvue_type_script_lang_js_","components","customLabelWidth","String","labelClass","margin","Number","nested","Boolean","settingParent","canBeDeleted","_this$settingGroup","lodash_default","a","db","iconsData","substr","keywordData","reducedSelects","editableKeyword","findIndex","el","getFormattedDescription","desc","marked_default","processNestedData","parentKey","removeSetting","_removeSetting","asyncToGenerator_default","regenerator_default","mark","_callee2","wrap","_context2","prev","next","$t","_callee","config","_context","delete","subkeys","t0","abrupt","$message","message","lang","t","stop","catch","apply","arguments","renderSingleSelect","Inputs_component","class","style","slot","_s","content","placement","subSetting","setting-group","setting-parent","custom-label-width","label-class","undefined","description","domProps","innerHTML","components_Settingvue_type_script_lang_js_","Inputs","emailAdapterChildren","adapter","children","child","loading","settingKey","existingKey","compound","divideSetting","_x","tab","Setting_component","staticStyle","margin-left","Setting","components_ActivityPubvue_type_script_lang_js_","vuex_esm","activitypub","activitypubData","isSidebarOpen","sidebar","opened","labelPosition","user","userData","onSubmit","_onSubmit","ActivityPub_component","ActivityPub","components_Authenticationvue_type_script_lang_js_","auth","authData","ldap","ldapData","oauth2","oauth2Data","pleromaAuthenticator","pleromaAuthenticatorData","Authentication_component","Authentication","components_AutoLinkervue_type_script_lang_js_","autoLinker","autoLinkerData","AutoLinker_component","AutoLinker","components_Captchavue_type_script_lang_js_","captchaData","kocaptcha","kocaptchaData","Captcha_component","Captcha","components_Esshdvue_type_script_lang_js_","esshdData","toggleEsshd","Esshd_component","Esshd","components_Frontendvue_type_script_lang_js_","assets","assetsData","chat","chatData","emoji","emojiData","frontendData","markup","markupData","staticFe","staticFeData","Frontend_component","Frontend","components_Gophervue_type_script_lang_js_","gopherData","Gopher_component","Gopher","components_Httpvue_type_script_lang_js_","corsPlug","corsPlugData","httpData","httpSecurity","httpSecurityData","webCacheTtl","webCacheTtlData","Http_component","httpSignaturesData","httpSignatures","Http","components_Instancevue_type_script_lang_js_","adminToken","adminTokenData","feed","feedData","instanceData","manifest","manifestData","pleromaUser","pleromaUserData","scheduledActivity","scheduledActivityData","streamer","streamerData","uriSchemes","uriSchemesData","Instance_component","Instance","components_JobQueuevue_type_script_lang_js_","activityExpiration","activityExpirationData","obanQueues","obanQueuesData","workersData","JobQueue_component","JobQueue","components_Loggervue_type_script_lang_js_","console","consoleData","exsyslogger","exsysloggerData","loggerData","quack","quackData","Logger_component","Logger","components_Mailervue_type_script_lang_js_","emailNotifications","emailNotificationsData","mailerData","newUsersDigestEmail","newUsersDigestEmailData","swoosh","swooshData","userEmail","userEmailData","Mailer_component","Mailer","components_MediaProxyvue_type_script_lang_js_","mediaProxy","mediaProxyData","MediaProxy_component","MediaProxy","components_Metadatavue_type_script_lang_js_","metadataData","richMedia","richMediaData","Metadata_component","Metadata","components_MRFvue_type_script_lang_js_","modules","modulesData","mrfActivityExpiration","mrfActivityExpirationData","mrfSimple","mrfSimpleData","mrfRejectnonpublic","mrfRejectnonpublicData","mrfHellthread","mrfHellthreadData","mrfKeyword","mrfKeywordData","mrfObjectAge","mrfObjectAgeData","mrfSubchain","mrfSubchainData","mrfMention","mrfMentionData","mrfNormalizeMarkup","mrfNormalizeMarkupData","mrfVocabulary","mrfVocabularyData","MRF_component","MRF","components_Othervue_type_script_lang_js_","mimeTypes","mimeTypesData","remoteIp","remoteIpData","Other_component","Other","components_RateLimitersvue_type_script_lang_js_","rateLimiters","rateLimitersData","RateLimiters_component","RateLimiters","components_Relaysvue_type_script_lang_js_","newRelay","fetchedRelays","relaysTable","relay","mounted","followRelay","deleteRelay","Relays_component","nativeOn","keyup","indexOf","_k","keyCode","prop","fixed","width","scopedSlots","_u","fn","scope","row","Relays","components_Uploadvue_type_script_lang_js_","showUploadersS3","showUploadersLocal","uploadData","uploadersLocal","uploadersLocalData","uploadersS3","uploadersS3Data","uploadFilterMogrify","uploadFilterMogrifyData","uploadAnonymizeFilename","uploadAnonymizeFilenameData","Upload_component","Upload","components_WebPushvue_type_script_lang_js_","vapidDetails","vapidDetailsData","WebPush_component","WebPush","views_settingsvue_type_script_lang_js_","Mrf","RebootButton","searchQuery","activeTab","configDisabled","rebootIsSidebarOpen","searchData","tabs_tabs","handleSearchSelect","_handleSearchSelect","selectedValue","selectedSetting","document","querySelector","scrollIntoView","block","behavior","querySearch","queryString","cb","searchObj","search","toLowerCase","groupKey","groupLabel","settingsCantBeChanged","_this2","settings_component","underline","href","target","fetch-suggestions","trigger-on-focus","prefix-icon","select","tab-position","componentName","disabled","lazy","tag","item","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Metadata_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_AutoLinker_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Instance_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Other_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_MRF_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Frontend_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_RateLimitInput_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_JobQueue_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Logger_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ProxyUrlInput_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_CrontabInput_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_EditableKeywordInput_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Setting_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ActivityPub_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsInput_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Gopher_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Inputs_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__"],"mappings":"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","file":"static/js/chunk-43ca.3debeff7.js","sourcesContent":["import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MascotsInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MascotsInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebPush.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebPush.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Captcha.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Captcha.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectInputWithReducedLabels.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectInputWithReducedLabels.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Authentication.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Authentication.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RegInvitesInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RegInvitesInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Upload.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Upload.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PruneInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PruneInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Esshd.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Esshd.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Relays.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Relays.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Http.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Http.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AutoLinkerInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AutoLinkerInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Mailer.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Mailer.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=2b61d370&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=2b61d370&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MediaProxy.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MediaProxy.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SpecificMultipleSelect.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SpecificMultipleSelect.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RateLimiters.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RateLimiters.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"settings-container\",class:_vm.rebootIsSidebarOpen},[_c('div',{staticClass:\"reboot-button-container\"},[_c('reboot-button')],1),_vm._v(\" \"),(_vm.isDesktop)?_c('div',[_c('div',{staticClass:\"settings-header-container\",class:_vm.isSidebarOpen},[_c('h1',{staticClass:\"settings-header\"},[_vm._v(_vm._s(_vm.$t('settings.settings')))]),_vm._v(\" \"),_c('div',{staticClass:\"docs-search-container\"},[_c('el-link',{attrs:{\"underline\":false,\"href\":\"https://docs-develop.pleroma.social/backend/administration/CLI_tasks/config/\",\"target\":\"_blank\"}},[_c('el-button',{staticClass:\"settings-docs-button\"},[_c('span',[_c('i',{staticClass:\"el-icon-document\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.seeDocs'))+\"\\n \")])])],1),_vm._v(\" \"),_c('el-autocomplete',{staticClass:\"settings-search-input\",attrs:{\"fetch-suggestions\":_vm.querySearch,\"trigger-on-focus\":false,\"clearable\":\"\",\"placeholder\":\"Search\",\"prefix-icon\":\"el-icon-search\"},on:{\"select\":_vm.handleSearchSelect},model:{value:(_vm.searchQuery),callback:function ($$v) {_vm.searchQuery=$$v},expression:\"searchQuery\"}})],1)]),_vm._v(\" \"),_c('el-tabs',{attrs:{\"tab-position\":\"left\"},model:{value:(_vm.activeTab),callback:function ($$v) {_vm.activeTab=$$v},expression:\"activeTab\"}},_vm._l((_vm.tabs),function(value,componentName){return _c('el-tab-pane',{key:componentName,attrs:{\"label\":_vm.$t(value.label),\"disabled\":_vm.configDisabled || _vm.settingsCantBeChanged(value.settings),\"name\":componentName,\"lazy\":\"\"}},[_c(componentName,{tag:\"component\"})],1)}),1)],1):_vm._e(),_vm._v(\" \"),(_vm.isMobile || _vm.isTablet)?_c('div',[_c('div',{staticClass:\"settings-header-container\",class:_vm.isSidebarOpen},[_c('h1',{staticClass:\"settings-header\"},[_vm._v(_vm._s(_vm.$t('settings.settings')))])]),_vm._v(\" \"),_c('div',{staticClass:\"nav-container\"},[_c('el-select',{staticClass:\"settings-menu\",attrs:{\"placeholder\":\"Select\"},model:{value:(_vm.activeTab),callback:function ($$v) {_vm.activeTab=$$v},expression:\"activeTab\"}},_vm._l((_vm.options),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value,\"disabled\":_vm.configDisabled}})}),1),_vm._v(\" \"),_c('el-link',{attrs:{\"underline\":false,\"href\":\"https://docs-develop.pleroma.social/backend/administration/CLI_tasks/config/\",\"target\":\"_blank\"}},[_c('el-button',{staticClass:\"settings-docs-button\"},[_c('span',[_c('i',{staticClass:\"el-icon-document\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.seeDocs'))+\"\\n \")])])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"settings-search-input-container\"}),_vm._v(\" \"),(_vm.activeTab === 'activityPub')?_c('activity-pub'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'auth')?_c('authentication'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'autoLinker')?_c('auto-linker'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'esshd')?_c('esshd'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'captcha')?_c('captcha'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'frontend')?_c('frontend'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'gopher')?_c('gopher'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'http')?_c('http'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'instance')?_c('instance'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'jobQueue')?_c('job-queue'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'logger')?_c('logger'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'mailer')?_c('mailer'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'mediaProxy')?_c('media-proxy'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'metadata')?_c('metadata'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'mrf')?_c('mrf'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'rateLimiters')?_c('rate-limiters'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'relays')?_c('relays'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'webPush')?_c('web-push'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'upload')?_c('upload'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'other')?_c('other'):_vm._e()],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export const tabs = {\n 'activity-pub': {\n label: 'settings.activityPub',\n settings: [':activitypub', ':user']\n },\n 'authentication': {\n label: 'settings.auth',\n settings: [':auth', ':ldap', ':oauth2', 'Pleroma.Web.Auth.Authenticator']\n },\n 'auto-linker': {\n label: 'settings.autoLinker',\n settings: [':opts']\n },\n 'esshd': {\n label: 'settings.esshd',\n settings: [':esshd']\n },\n 'captcha': {\n label: 'settings.captcha',\n settings: ['Pleroma.Captcha', 'Pleroma.Captcha.Kocaptcha']\n },\n 'frontend': {\n label: 'settings.frontend',\n settings: [':assets', ':chat', ':emoji', ':frontend_configurations', ':markup', ':static_fe']\n },\n 'gopher': {\n label: 'settings.gopher',\n settings: [':gopher']\n },\n 'http': {\n label: 'settings.http',\n settings: [':cors_plug', ':http', ':http_security', ':web_cache_ttl']\n },\n 'instance': {\n label: 'settings.instance',\n settings: [':admin_token', ':instance', ':manifest', 'Pleroma.User', 'Pleroma.ScheduledActivity', ':uri_schemes', ':feed', ':streamer']\n },\n 'job-queue': {\n label: 'settings.jobQueue',\n settings: ['Pleroma.ActivityExpiration', 'Oban', ':workers']\n },\n 'logger': {\n label: 'settings.logger',\n settings: [':console', ':ex_syslogger', ':quack', ':logger']\n },\n 'mailer': {\n label: 'settings.mailer',\n settings: [':email_notifications', 'Pleroma.Emails.Mailer', 'Pleroma.Emails.UserEmail', ':swoosh', 'Pleroma.Emails.NewUsersDigestEmail']\n },\n 'media-proxy': {\n label: 'settings.mediaProxy',\n settings: [':media_proxy']\n },\n 'metadata': {\n label: 'settings.metadata',\n settings: ['Pleroma.Web.Metadata', ':rich_media']\n },\n 'mrf': {\n label: 'settings.mrf',\n settings: [':mrf_simple', ':mrf_rejectnonpublic', ':mrf_hellthread', ':mrf_keyword', ':mrf_subchain', ':mrf_mention', ':mrf_normalize_markup', ':mrf_vocabulary', ':mrf_object_age', ':modules']\n },\n 'rate-limiters': {\n label: 'settings.rateLimiters',\n settings: [':rate_limit']\n },\n 'relays': {\n label: 'settings.relays',\n settings: ['relays']\n },\n 'web-push': {\n label: 'settings.webPush',\n settings: [':vapid_details']\n },\n 'upload': {\n label: 'settings.upload',\n settings: ['Pleroma.Upload.Filter.AnonymizeFilename', 'Pleroma.Upload.Filter.Mogrify', 'Pleroma.Uploaders.S3', 'Pleroma.Uploaders.Local', 'Pleroma.Upload']\n },\n 'other': {\n label: 'settings.other',\n settings: [':mime', 'Pleroma.Plugs.RemoteIp']\n }\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AutoLinkerInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AutoLinkerInput.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./AutoLinkerInput.vue?vue&type=template&id=cea0b11a&\"\nimport script from \"./AutoLinkerInput.vue?vue&type=script&lang=js&\"\nexport * from \"./AutoLinkerInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AutoLinkerInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"AutoLinkerInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.setting.key === ':class' || _vm.setting.key === ':rel')?_c('div',{attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_c('el-switch',{attrs:{\"value\":_vm.autoLinkerBooleanValue(_vm.setting.key)},on:{\"change\":function($event){return _vm.processTwoTypeValue($event, _vm.setting.key)}}}),_vm._v(\" \"),(_vm.autoLinkerBooleanValue(_vm.setting.key))?_c('el-input',{attrs:{\"value\":_vm.autoLinkerStringValue(_vm.setting.key)},on:{\"input\":function($event){return _vm.processTwoTypeValue($event, _vm.setting.key)}}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.setting.key === ':truncate')?_c('div',{attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_c('el-switch',{attrs:{\"value\":_vm.autoLinkerBooleanValue(_vm.setting.key)},on:{\"change\":function($event){return _vm.processTwoTypeValue($event, _vm.setting.key)}}}),_vm._v(\" \"),(_vm.autoLinkerBooleanValue(_vm.setting.key))?_c('el-input-number',{attrs:{\"value\":_vm.autoLinkerIntegerValue(_vm.setting.key)},on:{\"input\":function($event){return _vm.processTwoTypeValue($event, _vm.setting.key)}}}):_vm._e()],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditableKeywordInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditableKeywordInput.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./EditableKeywordInput.vue?vue&type=template&id=59edcd40&\"\nimport script from \"./EditableKeywordInput.vue?vue&type=script&lang=js&\"\nexport * from \"./EditableKeywordInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EditableKeywordInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"EditableKeywordInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"editable-keyword-container\"},[(_vm.setting.key === ':replace')?_c('div',{attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_vm._l((_vm.data),function(element){return _c('div',{key:_vm.getId(element),staticClass:\"setting-input\"},[_c('el-input',{staticClass:\"name-input\",attrs:{\"value\":_vm.getKey(element),\"placeholder\":\"pattern\"},on:{\"input\":function($event){return _vm.parseEditableKeyword($event, 'key', element)}}}),_vm._v(\" :\\n \"),_c('el-input',{staticClass:\"value-input\",attrs:{\"value\":_vm.getValue(element),\"placeholder\":\"replacement\"},on:{\"input\":function($event){return _vm.parseEditableKeyword($event, 'value', element)}}}),_vm._v(\" \"),_c('el-button',{staticClass:\"icon-minus-button\",attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.deleteEditableKeywordRow(element)}}})],1)}),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":_vm.addRowToEditableKeyword}})],2):(_vm.editableKeywordWithInteger)?_c('div',{attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_vm._l((_vm.data),function(element){return _c('div',{key:_vm.getId(element),staticClass:\"setting-input\"},[_c('el-input',{staticClass:\"name-input\",attrs:{\"value\":_vm.getKey(element),\"placeholder\":\"key\"},on:{\"input\":function($event){return _vm.parseEditableKeyword($event, 'key', element)}}}),_vm._v(\" :\\n \"),_c('el-input-number',{staticClass:\"value-input\",attrs:{\"value\":_vm.getValue(element),\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.parseEditableKeyword($event, 'value', element)}}}),_vm._v(\" \"),_c('el-button',{staticClass:\"icon-minus-button\",attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.deleteEditableKeywordRow(element)}}})],1)}),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":_vm.addRowToEditableKeyword}})],2):_c('div',{attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_vm._l((_vm.data),function(element){return _c('div',{key:_vm.getId(element),staticClass:\"setting-input\"},[_c('el-input',{staticClass:\"name-input\",attrs:{\"value\":_vm.getKey(element),\"placeholder\":\"key\"},on:{\"input\":function($event){return _vm.parseEditableKeyword($event, 'key', element)}}}),_vm._v(\" :\\n \"),_c('el-select',{staticClass:\"value-input\",attrs:{\"value\":_vm.getValue(element),\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.parseEditableKeyword($event, 'value', element)}}}),_vm._v(\" \"),_c('el-button',{staticClass:\"icon-minus-button\",attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.deleteEditableKeywordRow(element)}}})],1)}),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":_vm.addRowToEditableKeyword}})],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CrontabInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CrontabInput.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./CrontabInput.vue?vue&type=template&id=55e14917&\"\nimport script from \"./CrontabInput.vue?vue&type=script&lang=js&\"\nexport * from \"./CrontabInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CrontabInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"CrontabInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-form',{staticClass:\"crontab\",attrs:{\"label-width\":_vm.labelWidth,\"label-position\":_vm.isMobile ? 'top' : 'right'}},_vm._l((_vm.workers),function(worker){return _c('el-form-item',{key:worker,staticClass:\"crontab-container\",attrs:{\"label\":worker,\"data-search\":_vm.setting.key}},[_c('el-input',{staticClass:\"input setting-input\",attrs:{\"value\":_vm.data[worker],\"placeholder\":_vm.getSuggestion(worker) || null},on:{\"input\":function($event){return _vm.update($event, worker)}}})],1)}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IconsInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IconsInput.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./IconsInput.vue?vue&type=template&id=0e981ae9&\"\nimport script from \"./IconsInput.vue?vue&type=script&lang=js&\"\nexport * from \"./IconsInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./IconsInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"IconsInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"mascot-container\",attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_vm._l((_vm.data),function(icon,index){return _c('div',{key:index,staticClass:\"mascot\"},[_c('div',{staticClass:\"icons-container\"},[_c('div',{staticClass:\"icon-container\"},_vm._l((icon),function(ref){\nvar key = ref.key;\nvar value = ref.value;\nvar id = ref.id;\nreturn _c('div',{key:id,staticClass:\"icon-values-container\"},[_c('el-input',{staticClass:\"icon-key-input\",attrs:{\"value\":key,\"placeholder\":\"key\"},on:{\"input\":function($event){return _vm.parseIcons($event, 'key', index, id)}}}),_vm._v(\" :\\n \"),_c('el-input',{staticClass:\"icon-value-input\",attrs:{\"value\":value,\"placeholder\":\"value\"},on:{\"input\":function($event){return _vm.parseIcons($event, 'value', index, id)}}})],1)}),0),_vm._v(\" \"),_c('el-button',{staticClass:\"icon-minus-button\",attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.deleteIcondRow(index)}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"icons-button-container\"},[_c('el-button',{attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.addValueToIcons(index)}}}),_vm._v(\" \"),_c('span',{staticClass:\"icons-button-desc\"},[_vm._v(\"Add another `key - value` pair to this icon\")])],1),_vm._v(\" \"),_c('el-divider',{staticClass:\"divider\"})],1)}),_vm._v(\" \"),_c('div',{staticClass:\"icons-button-container\"},[_c('el-button',{attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":_vm.addIconToIcons}}),_vm._v(\" \"),_c('span',{staticClass:\"icons-button-desc\"},[_vm._v(\"Add another icon configuration\")])],1)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MascotsInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MascotsInput.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./MascotsInput.vue?vue&type=template&id=0015a0e3&\"\nimport script from \"./MascotsInput.vue?vue&type=script&lang=js&\"\nexport * from \"./MascotsInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MascotsInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"MascotsInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"mascot-container\",attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_vm._l((_vm.data),function(mascot){return _c('div',{key:_vm.getId(mascot),staticClass:\"mascot\"},[_c('el-form-item',{staticClass:\"mascot-form-item\",attrs:{\"label\":\"Name\",\"label-width\":\"85px\"}},[_c('div',{staticClass:\"mascot-name-container\"},[_c('el-input',{staticClass:\"mascot-name-input\",attrs:{\"value\":_vm.getName(mascot),\"placeholder\":\"Name\"},on:{\"input\":function($event){return _vm.parseMascots($event, 'name', mascot)}}}),_vm._v(\" \"),_c('el-button',{staticClass:\"icon-minus-button\",attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.deleteMascotsRow(mascot)}}})],1)]),_vm._v(\" \"),_c('el-form-item',{staticClass:\"mascot-form-item\",attrs:{\"label\":\"URL\",\"label-width\":\"85px\"}},[_c('el-input',{staticClass:\"mascot-input\",attrs:{\"value\":_vm.getUrl(mascot),\"placeholder\":\"URL\"},on:{\"input\":function($event){return _vm.parseMascots($event, 'url', mascot)}}})],1),_vm._v(\" \"),_c('el-form-item',{staticClass:\"mascot-form-item\",attrs:{\"label\":\"Mime type\",\"label-width\":\"85px\"}},[_c('el-input',{staticClass:\"mascot-input\",attrs:{\"value\":_vm.getMimeType(mascot),\"placeholder\":\"Mime type\"},on:{\"input\":function($event){return _vm.parseMascots($event, 'mimeType', mascot)}}})],1)],1)}),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":_vm.addRowToMascots}})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProxyUrlInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProxyUrlInput.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./ProxyUrlInput.vue?vue&type=template&id=9a053e1c&\"\nimport script from \"./ProxyUrlInput.vue?vue&type=script&lang=js&\"\nexport * from \"./ProxyUrlInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProxyUrlInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"ProxyUrlInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"proxy-url-input\",attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_c('el-input',{staticClass:\"proxy-url-host-input\",attrs:{\"value\":_vm.proxyUrlData.host,\"placeholder\":\"host (e.g. localhost or 127.0.0.1)\"},on:{\"input\":function($event){return _vm.updateProxyUrl($event, 'host')}}}),_vm._v(\" \"),(_vm.isDesktop)?_c('span',[_vm._v(\":\")]):_vm._e(),_vm._v(\" \"),_c('el-input',{staticClass:\"proxy-url-value-input\",attrs:{\"value\":_vm.proxyUrlData.port,\"placeholder\":\"port (e.g 9020 or 3090)\"},on:{\"input\":function($event){return _vm.updateProxyUrl($event, 'port')}}}),_vm._v(\" \"),_c('div',{staticClass:\"socks5-checkbox-container\"},[_c('el-checkbox',{attrs:{\"value\":_vm.proxyUrlData.socks5},on:{\"change\":function($event){return _vm.updateProxyUrl($event, 'socks5')}}}),_vm._v(\" \"),_c('span',{staticClass:\"socks5-checkbox\"},[_vm._v(\"Socks5\")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PruneInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PruneInput.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./PruneInput.vue?vue&type=template&id=172a9876&\"\nimport script from \"./PruneInput.vue?vue&type=script&lang=js&\"\nexport * from \"./PruneInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PruneInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"PruneInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_c('el-radio-group',{staticClass:\"prune-options\",model:{value:(_vm.prune),callback:function ($$v) {_vm.prune=$$v},expression:\"prune\"}},[_c('el-radio',{attrs:{\"label\":\":disabled\"}},[_vm._v(\"Disabled\")]),_vm._v(\" \"),_c('el-radio',{attrs:{\"label\":\":maxlen\"}},[_vm._v(\"Limit-based\")]),_vm._v(\" \"),_c('el-radio',{attrs:{\"label\":\":maxage\"}},[_vm._v(\"Time-based\")])],1),_vm._v(\" \"),(_vm.prune === ':maxlen')?_c('el-form-item',{attrs:{\"label\":\"max length\",\"label-width\":\"100\",\"label-position\":\"left\"}},[_c('el-input-number',{staticClass:\"top-margin\",attrs:{\"value\":_vm.data[1],\"min\":0,\"placeholder\":\"1500\",\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateIntInput($event, ':maxlen')}}})],1):_vm._e(),_vm._v(\" \"),(_vm.prune === ':maxage')?_c('el-form-item',{attrs:{\"label\":\"max age\",\"label-width\":\"100\",\"label-position\":\"left\"}},[_c('el-input-number',{staticClass:\"top-margin\",attrs:{\"value\":_vm.data[1],\"min\":0,\"placeholder\":\"3600\",\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateIntInput($event, ':maxage')}}})],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RateLimitInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RateLimitInput.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./RateLimitInput.vue?vue&type=template&id=7eaf4b58&\"\nimport script from \"./RateLimitInput.vue?vue&type=script&lang=js&\"\nexport * from \"./RateLimitInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RateLimitInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"RateLimitInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"rate-limit-container\",attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[(!_vm.rateLimitAuthUsers)?_c('div',[_c('el-input',{staticClass:\"scale-input\",attrs:{\"value\":_vm.rateLimitAllUsers[0],\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, _vm.setting.key, 'scale', 'oneLimit', _vm.rateLimitAllUsers)}}}),_vm._v(\" \"),_c('span',[_vm._v(\":\")]),_vm._v(\" \"),_c('el-input',{staticClass:\"limit-input\",attrs:{\"value\":_vm.rateLimitAllUsers[1],\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, _vm.setting.key, 'limit', 'oneLimit', _vm.rateLimitAllUsers)}}}),_vm._v(\" \"),_c('div',{staticClass:\"limit-button-container\"},[_c('el-button',{attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.toggleLimits([['', ''], ['', '']], _vm.setting.key)}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl limit-expl\"},[_vm._v(\"Set different limits for unauthenticated and authenticated users\")])],1)],1):_vm._e(),_vm._v(\" \"),(_vm.rateLimitAuthUsers)?_c('div',[_c('el-form-item',{staticClass:\"rate-limit\"},[_c('div',{staticClass:\"rate-limit-label-container\"},[_c('span',{staticClass:\"rate-limit-label\"},[_vm._v(\"\\n Unauthenticated users:\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"rate-limit-content\"},[_c('el-input',{staticClass:\"scale-input\",attrs:{\"value\":_vm.rateLimitUnauthUsers[0],\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter(\n $event, _vm.setting.key, 'scale', 'unauthUsersLimit', [_vm.rateLimitUnauthUsers, _vm.rateLimitAuthUsers]\n )}}}),_vm._v(\" \"),_c('span',[_vm._v(\":\")]),_vm._v(\" \"),_c('el-input',{staticClass:\"limit-input\",attrs:{\"value\":_vm.rateLimitUnauthUsers[1],\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter(\n $event, _vm.setting.key, 'limit', 'unauthUsersLimit', [_vm.rateLimitUnauthUsers, _vm.rateLimitAuthUsers]\n )}}})],1)]),_vm._v(\" \"),_c('el-form-item',{staticClass:\"rate-limit\"},[_c('div',{staticClass:\"rate-limit-label-container\"},[_c('span',{staticClass:\"rate-limit-label\"},[_vm._v(\"\\n Authenticated users:\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"rate-limit-content\"},[_c('el-input',{staticClass:\"scale-input\",attrs:{\"value\":_vm.rateLimitAuthUsers[0],\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, _vm.setting.key, 'scale', 'authUserslimit', [_vm.rateLimitUnauthUsers, _vm.rateLimitAuthUsers])}}}),_vm._v(\" \"),_c('span',[_vm._v(\":\")]),_vm._v(\" \"),_c('el-input',{staticClass:\"limit-input\",attrs:{\"value\":_vm.rateLimitAuthUsers[1],\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, _vm.setting.key, 'limit', 'authUserslimit', [_vm.rateLimitUnauthUsers, _vm.rateLimitAuthUsers])}}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"limit-button-container\"},[_c('el-button',{staticClass:\"icon-minus-button\",attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.toggleLimits(['', ''], _vm.setting.key)}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl limit-expl\"},[_vm._v(\"Set limit for all users\")])],1)],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RegInvitesInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RegInvitesInput.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./RegInvitesInput.vue?vue&type=template&id=55c7fa7c&\"\nimport script from \"./RegInvitesInput.vue?vue&type=script&lang=js&\"\nexport * from \"./RegInvitesInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RegInvitesInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"RegInvitesInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-switch',{staticClass:\"switch-input\",attrs:{\"value\":_vm.data[_vm.setting.key],\"data-search\":_vm.setting.key},on:{\"change\":function($event){return _vm.updateSetting($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.setting.key, _vm.setting.type)}}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectInputWithReducedLabels.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectInputWithReducedLabels.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./SelectInputWithReducedLabels.vue?vue&type=template&id=240dfbe9&\"\nimport script from \"./SelectInputWithReducedLabels.vue?vue&type=script&lang=js&\"\nexport * from \"./SelectInputWithReducedLabels.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SelectInputWithReducedLabels.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"SelectInputWithReducedLabels.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"input\"},[(_vm.renderMultipleSelect(_vm.setting.type))?_c('el-select',{staticClass:\"input\",attrs:{\"value\":_vm.inputValue,\"data-search\":_vm.setting.key,\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.setting.key, _vm.setting.type)}}},_vm._l((_vm.options(_vm.setting.suggestions)),function(option,index){return _c('el-option',{key:index,attrs:{\"value\":option.value,\"label\":option.label}})}),1):_vm._e(),_vm._v(\" \"),(_vm.setting.type === 'module' || (_vm.setting.type.includes('atom') && _vm.setting.type.includes('dropdown')))?_c('el-select',{staticClass:\"input\",attrs:{\"value\":_vm.inputValue === false ? 'false' : _vm.inputValue,\"data-search\":_vm.setting.key || _vm.setting.group,\"clearable\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.setting.key, _vm.setting.type)}}},_vm._l((_vm.options(_vm.setting.suggestions)),function(option,index){return _c('el-option',{key:index,attrs:{\"value\":option.value,\"label\":option.label}})}),1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SpecificMultipleSelect.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SpecificMultipleSelect.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./SpecificMultipleSelect.vue?vue&type=template&id=01ef7cc8&\"\nimport script from \"./SpecificMultipleSelect.vue?vue&type=script&lang=js&\"\nexport * from \"./SpecificMultipleSelect.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SpecificMultipleSelect.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"SpecificMultipleSelect.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"multiple-select-container\"},[(_vm.setting.key === ':backends')?_c('el-select',{staticClass:\"input\",attrs:{\"value\":_vm.data.value,\"data-search\":_vm.setting.key || _vm.setting.group,\"multiple\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.setting.key, _vm.setting.type)}}},[_c('el-option',{attrs:{\"value\":\":console\",\"label\":\"console\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":ex_syslogger\",\"label\":\"ExSyslogger\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"Quack.Logger\",\"label\":\"Quack.Logger\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.setting.key === ':args')?_c('el-select',{staticClass:\"input\",attrs:{\"value\":_vm.data[_vm.setting.key],\"data-search\":_vm.setting.key || _vm.setting.group,\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.setting.key, _vm.setting.type)}}},[_c('el-option',{attrs:{\"value\":\"strip\",\"label\":\"strip\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"auto-orient\",\"label\":\"auto-orient\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"implode\",\"label\":\"implode\"}})],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Inputs.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Inputs.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Inputs.vue?vue&type=template&id=985a7090&\"\nimport script from \"./Inputs.vue?vue&type=script&lang=js&\"\nexport * from \"./Inputs.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Inputs.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Inputs.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"input-container\"},[(_vm.setting.type === 'keyword')?_c('div',{staticClass:\"keyword-container\"},[_c('el-form-item',{class:_vm.labelClass,style:((\"margin-left:\" + _vm.margin + \"px;margin-bottom:0\")),attrs:{\"label-width\":_vm.customLabelWidth,\"data-search\":_vm.setting.key || _vm.setting.group}},[_c('span',{attrs:{\"slot\":\"label\"},slot:\"label\"},[_vm._v(\"\\n \"+_vm._s(_vm.setting.label)+\"\\n \"),(_vm.canBeDeleted && _vm.isDesktop)?_c('el-tooltip',{attrs:{\"content\":_vm.$t('settings.removeFromDB'),\"placement\":\"bottom-end\"}},[_c('el-button',{staticClass:\"delete-setting-button\",attrs:{\"icon\":\"el-icon-delete\",\"circle\":\"\",\"size\":\"mini\"},on:{\"click\":_vm.removeSetting}})],1):_vm._e()],1)]),_vm._v(\" \"),_vm._l((_vm.setting.children),function(subSetting){return _c('el-form-item',{key:subSetting.key},[_c('inputs',{attrs:{\"setting-group\":_vm.settingGroup,\"setting-parent\":_vm.settingParent.concat( [subSetting]),\"setting\":subSetting,\"data\":_vm.data[_vm.setting.key],\"custom-label-width\":_vm.isMobile ? '100px' : '120px',\"label-class\":subSetting.type === 'keyword' ? 'center-label' : '',\"margin\":_vm.isDesktop ? _vm.margin + 15 : _vm.margin + 8,\"nested\":true}})],1)})],2):_vm._e(),_vm._v(\" \"),(_vm.setting.type !== 'keyword')?_c('el-form-item',{class:_vm.labelClass,style:(_vm.isDesktop ? '' : (\"margin-left:\" + _vm.margin + \"px\")),attrs:{\"label-width\":_vm.customLabelWidth}},[_c('span',{attrs:{\"slot\":\"label\"},slot:\"label\"},[_vm._v(\"\\n \"+_vm._s(_vm.setting.label)+\"\\n \"),(_vm.canBeDeleted && (_vm.isDesktop || _vm.isMobile))?_c('el-tooltip',{attrs:{\"content\":_vm.$t('settings.removeFromDB'),\"placement\":\"bottom-end\"}},[_c('el-button',{staticClass:\"delete-setting-button\",attrs:{\"icon\":\"el-icon-delete\",\"circle\":\"\",\"size\":\"mini\"},on:{\"click\":_vm.removeSetting}})],1):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"input-row\"},[(_vm.setting.type === 'string' || (_vm.setting.type.includes('string') && _vm.setting.type.includes('atom')))?_c('el-input',{staticClass:\"input\",attrs:{\"value\":_vm.inputValue,\"placeholder\":_vm.setting.suggestions ? _vm.setting.suggestions[0] : null,\"data-search\":_vm.setting.key || _vm.setting.group},on:{\"input\":function($event){return _vm.update($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.settingParent, _vm.setting.key, _vm.setting.type, _vm.nested)}}}):_vm._e(),_vm._v(\" \"),(_vm.setting.type === 'boolean' && ![':registrations_open', ':invites_enabled'].includes(_vm.setting.key))?_c('el-switch',{staticClass:\"switch-input\",attrs:{\"value\":_vm.inputValue,\"data-search\":_vm.setting.key || _vm.setting.group},on:{\"change\":function($event){return _vm.update($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.settingParent, _vm.setting.key, _vm.setting.type, _vm.nested)}}}):_vm._e(),_vm._v(\" \"),(_vm.setting.type === 'integer')?_c('el-input-number',{attrs:{\"value\":_vm.inputValue === null ? undefined : _vm.inputValue,\"placeholder\":_vm.setting.suggestions ? _vm.setting.suggestions[0].toString() : null,\"min\":0,\"size\":_vm.isDesktop ? 'large' : 'medium',\"data-search\":_vm.setting.key || _vm.setting.group},on:{\"change\":function($event){return _vm.update($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.settingParent, _vm.setting.key, _vm.setting.type, _vm.nested)}}}):_vm._e(),_vm._v(\" \"),(_vm.renderSingleSelect(_vm.setting.type))?_c('el-select',{staticClass:\"input\",attrs:{\"value\":_vm.inputValue === false ? 'false' : _vm.inputValue,\"data-search\":_vm.setting.key || _vm.setting.group,\"clearable\":\"\"},on:{\"change\":function($event){return _vm.update($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.settingParent, _vm.setting.key, _vm.setting.type, _vm.nested)}}},_vm._l((_vm.setting.suggestions),function(option,index){return _c('el-option',{key:index,attrs:{\"value\":option}})}),1):_vm._e(),_vm._v(\" \"),(_vm.renderMultipleSelect(_vm.setting.type))?_c('el-select',{staticClass:\"input\",attrs:{\"value\":_vm.inputValue,\"data-search\":_vm.setting.key || _vm.setting.group,\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.update($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.settingParent, _vm.setting.key, _vm.setting.type, _vm.nested)}}},_vm._l((_vm.setting.suggestions),function(option,index){return _c('el-option',{key:index,attrs:{\"value\":option}})}),1):_vm._e(),_vm._v(\" \"),(_vm.setting.key === ':ip')?_c('el-input',{staticClass:\"input\",attrs:{\"value\":_vm.inputValue,\"data-search\":_vm.setting.key || _vm.setting.group,\"placeholder\":\"xxx.xxx.xxx.xx\"},on:{\"input\":function($event){return _vm.update($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.settingParent, _vm.setting.key, _vm.setting.type, _vm.nested)}}}):_vm._e(),_vm._v(\" \"),(_vm.setting.type === 'atom')?_c('el-input',{staticClass:\"input\",attrs:{\"value\":_vm.inputValue,\"placeholder\":_vm.setting.suggestions[0] ? _vm.setting.suggestions[0].substr(1) : '',\"data-search\":_vm.setting.key || _vm.setting.group},on:{\"input\":function($event){return _vm.update($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.settingParent, _vm.setting.key, _vm.setting.type, _vm.nested)}}},[_c('template',{slot:\"prepend\"},[_vm._v(\":\")])],2):_vm._e(),_vm._v(\" \"),(_vm.settingGroup.group === ':auto_linker')?_c('auto-linker-input',{attrs:{\"data\":_vm.data,\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting}}):_vm._e(),_vm._v(\" \"),(_vm.setting.key === ':crontab')?_c('crontab-input',{attrs:{\"data\":_vm.data[_vm.setting.key],\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting}}):_vm._e(),_vm._v(\" \"),(_vm.editableKeyword(_vm.setting.key, _vm.setting.type))?_c('editable-keyword-input',{attrs:{\"data\":_vm.keywordData,\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting}}):_vm._e(),_vm._v(\" \"),(_vm.setting.key === ':icons')?_c('icons-input',{attrs:{\"data\":_vm.iconsData,\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting}}):_vm._e(),_vm._v(\" \"),(_vm.setting.key === ':mascots')?_c('mascots-input',{attrs:{\"data\":_vm.keywordData,\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting}}):_vm._e(),_vm._v(\" \"),(_vm.setting.key === ':proxy_url')?_c('proxy-url-input',{attrs:{\"data\":_vm.data[_vm.setting.key],\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting,\"parents\":_vm.settingParent}}):_vm._e(),_vm._v(\" \"),(_vm.setting.key === ':prune')?_c('prune-input',{attrs:{\"data\":_vm.data[_vm.setting.key],\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting}}):_vm._e(),_vm._v(\" \"),(_vm.settingGroup.key === ':rate_limit')?_c('rate-limit-input',{attrs:{\"data\":_vm.data,\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting}}):_vm._e(),_vm._v(\" \"),([':registrations_open', ':invites_enabled'].includes(_vm.setting.key))?_c('reg-invites-input',{attrs:{\"data\":_vm.data,\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting}}):_vm._e(),_vm._v(\" \"),(_vm.reducedSelects)?_c('select-input-with-reduced-labels',{attrs:{\"data\":_vm.data,\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting}}):_vm._e(),_vm._v(\" \"),(_vm.setting.key === ':backends' || _vm.setting.key === ':args')?_c('specific-multiple-select',{attrs:{\"data\":_vm.data,\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting}}):_vm._e(),_vm._v(\" \"),(_vm.canBeDeleted && _vm.isTablet)?_c('el-tooltip',{staticClass:\"delete-setting-button-container\",attrs:{\"content\":_vm.$t('settings.removeFromDB'),\"placement\":\"bottom-end\"}},[_c('el-button',{staticClass:\"delete-setting-button\",attrs:{\"icon\":\"el-icon-delete\",\"circle\":\"\",\"size\":\"mini\"},on:{\"click\":_vm.removeSetting}})],1):_vm._e()],1),_vm._v(\" \"),(_vm.setting.description && _vm.setting.type !== 'keyword')?_c('div',{staticClass:\"expl\",domProps:{\"innerHTML\":_vm._s(_vm.getFormattedDescription(_vm.setting.description))}}):_vm._e()]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Setting.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Setting.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Setting.vue?vue&type=template&id=812c4b58&\"\nimport script from \"./Setting.vue?vue&type=script&lang=js&\"\nexport * from \"./Setting.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Setting.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Setting.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',[(_vm.settingGroup.label || _vm.settingGroup.description)?_c('el-form-item',{staticClass:\"description-container\",attrs:{\"data-search\":_vm.settingGroup.key || _vm.settingGroup.group}},[(_vm.settingGroup.label)?_c('span',{staticClass:\"setting-label\"},[_vm._v(_vm._s(_vm.settingGroup.label))]):_vm._e(),_vm._v(\" \"),(_vm.settingGroup.description)?_c('span',{staticClass:\"expl no-top-margin\",domProps:{\"innerHTML\":_vm._s(_vm.getFormattedDescription(_vm.settingGroup.description))}}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.settingGroup.key === 'Pleroma.Emails.Mailer')?_c('div',[_vm._l((_vm.settingGroup.children.filter(function (setting) { return !setting.group; })),function(setting){return _c('div',{key:setting.key},[_c('inputs',{attrs:{\"setting-group\":_vm.settingGroup,\"setting\":setting,\"data\":_vm.data}})],1)}),_vm._v(\" \"),_vm._l((_vm.emailAdapterChildren),function(setting){return _c('div',{key:setting.key},[_c('inputs',{attrs:{\"setting-group\":_vm.settingGroup,\"setting\":setting,\"data\":_vm.data}})],1)})],2):_c('div',_vm._l((_vm.settingGroup.children),function(setting){return _c('div',{key:setting.key},[(!_vm.compound(setting))?_c('div',[_c('inputs',{attrs:{\"setting-group\":_vm.settingGroup,\"setting\":setting,\"data\":_vm.data,\"nested\":false}})],1):_vm._e(),_vm._v(\" \"),(_vm.compound(setting))?_c('div',[(_vm.divideSetting(setting.key))?_c('el-divider',{staticClass:\"divider\"}):_vm._e(),_vm._v(\" \"),(!setting.children)?_c('div',[_c('inputs',{attrs:{\"setting-group\":_vm.settingGroup,\"setting\":setting,\"data\":_vm.data[setting.key],\"nested\":true}})],1):_c('div',[_c('div',{staticClass:\"input-container\"},[_c('el-form-item',{staticClass:\"grouped-settings-header\",attrs:{\"data-search\":setting.key || setting.group}},[_c('span',{attrs:{\"slot\":\"label\"},slot:\"label\"},[(_vm.isDesktop && _vm.canBeDeleted(setting.key))?_c('el-tooltip',{attrs:{\"content\":_vm.$t('settings.removeFromDB'),\"placement\":\"bottom-end\"}},[_c('el-button',{staticStyle:{\"margin-left\":\"5px\"},attrs:{\"icon\":\"el-icon-delete\",\"circle\":\"\",\"size\":\"mini\"},on:{\"click\":function($event){return _vm.removeSetting(setting.key)}}})],1):_vm._e()],1),_vm._v(\" \"),_c('span',{staticClass:\"label-font\"},[_vm._v(_vm._s(setting.label))]),_vm._v(\" \"),(_vm.canBeDeleted(setting.key) && (_vm.isMobile || _vm.isTablet))?_c('el-tooltip',{attrs:{\"content\":_vm.$t('settings.removeFromDB'),\"placement\":\"bottom-end\"}},[_c('el-button',{staticClass:\"settings-delete-button\",attrs:{\"icon\":\"el-icon-delete\",\"circle\":\"\",\"size\":\"mini\"},on:{\"click\":function($event){return _vm.removeSetting(setting.key)}}})],1):_vm._e()],1)],1),_vm._v(\" \"),_vm._l((setting.children),function(subSetting){return _c('div',{key:subSetting.key},[_c('inputs',{attrs:{\"setting-group\":_vm.settingGroup,\"setting-parent\":[setting, subSetting],\"setting\":subSetting,\"data\":_vm.data[setting.key],\"nested\":true}})],1)})],2),_vm._v(\" \"),_c('el-divider',{staticClass:\"divider\"})],1):_vm._e()])}),0)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActivityPub.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActivityPub.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./ActivityPub.vue?vue&type=template&id=61d2885c&\"\nimport script from \"./ActivityPub.vue?vue&type=script&lang=js&\"\nexport * from \"./ActivityPub.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ActivityPub.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"ActivityPub.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{ref:\"activitypubData\",attrs:{\"model\":_vm.activitypubData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth,\"data-search\":\":activitypub\"}},[_c('setting',{attrs:{\"setting-group\":_vm.activitypub,\"data\":_vm.activitypubData}})],1),_vm._v(\" \"),(_vm.activitypub)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"userData\",attrs:{\"model\":_vm.userData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth,\"data-search\":\":user\"}},[_c('setting',{attrs:{\"setting-group\":_vm.user,\"data\":_vm.userData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Authentication.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Authentication.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Authentication.vue?vue&type=template&id=fc990042&\"\nimport script from \"./Authentication.vue?vue&type=script&lang=js&\"\nexport * from \"./Authentication.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Authentication.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Authentication.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{ref:\"pleromaAuthenticatorData\",attrs:{\"model\":_vm.pleromaAuthenticatorData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.pleromaAuthenticator,\"data\":_vm.pleromaAuthenticatorData}})],1),_vm._v(\" \"),(_vm.pleromaAuthenticator)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"authData\",attrs:{\"model\":_vm.authData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.auth,\"data\":_vm.authData}})],1),_vm._v(\" \"),(_vm.auth)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"ldapData\",attrs:{\"model\":_vm.ldapData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.ldap,\"data\":_vm.ldapData}})],1),_vm._v(\" \"),(_vm.oauth2)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"oauth2\",attrs:{\"model\":_vm.oauth2Data,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.oauth2,\"data\":_vm.oauth2Data}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AutoLinker.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AutoLinker.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./AutoLinker.vue?vue&type=template&id=11b09d35&\"\nimport script from \"./AutoLinker.vue?vue&type=script&lang=js&\"\nexport * from \"./AutoLinker.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AutoLinker.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"AutoLinker.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{ref:\"autoLinker\",attrs:{\"model\":_vm.autoLinkerData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.autoLinker,\"data\":_vm.autoLinkerData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Captcha.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Captcha.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Captcha.vue?vue&type=template&id=a0aa4d3a&\"\nimport script from \"./Captcha.vue?vue&type=script&lang=js&\"\nexport * from \"./Captcha.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Captcha.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Captcha.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{ref:\"captchaData\",attrs:{\"model\":_vm.captchaData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.captcha,\"data\":_vm.captchaData}})],1),_vm._v(\" \"),(_vm.captcha)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"kocaptchaData\",attrs:{\"model\":_vm.kocaptchaData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.kocaptcha,\"data\":_vm.kocaptchaData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Esshd.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Esshd.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Esshd.vue?vue&type=template&id=12ea7477&\"\nimport script from \"./Esshd.vue?vue&type=script&lang=js&\"\nexport * from \"./Esshd.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Esshd.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Esshd.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{ref:\"esshdData\",attrs:{\"model\":_vm.esshdData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.esshd,\"data\":_vm.esshdData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Frontend.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Frontend.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Frontend.vue?vue&type=template&id=44a493e3&\"\nimport script from \"./Frontend.vue?vue&type=script&lang=js&\"\nexport * from \"./Frontend.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Frontend.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Frontend.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{ref:\"frontendData\",attrs:{\"model\":_vm.frontendData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.frontend,\"data\":_vm.frontendData}})],1),_vm._v(\" \"),_c('el-form',{ref:\"staticFeData\",attrs:{\"model\":_vm.staticFeData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.staticFe,\"data\":_vm.staticFeData}})],1),_vm._v(\" \"),(_vm.staticFe)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"assetsData\",attrs:{\"model\":_vm.assetsData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[(_vm.assets)?_c('el-form-item',{staticClass:\"grouped-settings-header\"},[_c('span',{staticClass:\"label-font label-with-margin\"},[_vm._v(_vm._s(_vm.$t('settings.assets')))])]):_vm._e(),_vm._v(\" \"),_c('setting',{attrs:{\"setting-group\":_vm.assets,\"data\":_vm.assetsData}})],1),_vm._v(\" \"),(_vm.assets)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"emojiData\",attrs:{\"model\":_vm.emojiData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[(_vm.emoji)?_c('el-form-item',{staticClass:\"grouped-settings-header\",attrs:{\"data-search\":\":emoji\"}},[_c('span',{staticClass:\"label-font label-with-margin\"},[_vm._v(_vm._s(_vm.$t('settings.emoji')))])]):_vm._e(),_vm._v(\" \"),_c('setting',{attrs:{\"setting-group\":_vm.emoji,\"data\":_vm.emojiData}})],1),_vm._v(\" \"),(_vm.emoji)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"chatData\",attrs:{\"model\":_vm.chatData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.chat,\"data\":_vm.chatData}})],1),_vm._v(\" \"),(_vm.chat)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"markupData\",attrs:{\"model\":_vm.markupData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[(_vm.markup)?_c('el-form-item',{staticClass:\"grouped-settings-header\",attrs:{\"data-search\":\":markup\"}},[_c('span',{staticClass:\"label-font label-with-margin\"},[_vm._v(_vm._s(_vm.$t('settings.markup')))])]):_vm._e(),_vm._v(\" \"),_c('setting',{attrs:{\"setting-group\":_vm.markup,\"data\":_vm.markupData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Gopher.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Gopher.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Gopher.vue?vue&type=template&id=15ee83b0&\"\nimport script from \"./Gopher.vue?vue&type=script&lang=js&\"\nexport * from \"./Gopher.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Gopher.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Gopher.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[(!_vm.loading)?_c('el-form',{ref:\"gopher\",attrs:{\"model\":_vm.gopherData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.gopher,\"data\":_vm.gopherData}})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Http.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Http.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Http.vue?vue&type=template&id=1ff5d7b6&\"\nimport script from \"./Http.vue?vue&type=script&lang=js&\"\nexport * from \"./Http.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Http.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Http.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{ref:\"httpData\",attrs:{\"model\":_vm.httpData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.http,\"data\":_vm.httpData}})],1),_vm._v(\" \"),_c('el-form',{ref:\"corsPlugData\",attrs:{\"model\":_vm.corsPlugData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[(_vm.corsPlug)?_c('el-form-item',{staticClass:\"grouped-settings-header\",attrs:{\"data-search\":\":cors_plug\"}},[_c('span',{staticClass:\"label-font label-with-margin\"},[_vm._v(_vm._s(_vm.$t('settings.corsPlug')))])]):_vm._e(),_vm._v(\" \"),_c('setting',{attrs:{\"setting-group\":_vm.corsPlug,\"data\":_vm.corsPlugData}})],1),_vm._v(\" \"),(_vm.corsPlug)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"httpSignatures\",attrs:{\"model\":_vm.httpSignaturesData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.httpSignatures,\"data\":_vm.httpSignaturesData}})],1),_vm._v(\" \"),(_vm.httpSignatures)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"httpSecurityData\",attrs:{\"model\":_vm.httpSecurityData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.httpSecurity,\"data\":_vm.httpSecurityData}})],1),_vm._v(\" \"),(_vm.httpSecurity)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"webCacheTtl\",attrs:{\"model\":_vm.webCacheTtlData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.webCacheTtl,\"data\":_vm.webCacheTtlData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Instance.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Instance.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Instance.vue?vue&type=template&id=235800e0&\"\nimport script from \"./Instance.vue?vue&type=script&lang=js&\"\nexport * from \"./Instance.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Instance.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Instance.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{ref:\"instanceData\",attrs:{\"model\":_vm.instanceData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.instance,\"data\":_vm.instanceData}})],1),_vm._v(\" \"),(_vm.instance)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"adminToken\",attrs:{\"model\":_vm.adminTokenData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.adminToken,\"data\":_vm.adminTokenData}})],1),_vm._v(\" \"),(_vm.adminToken)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"scheduledActivity\",attrs:{\"model\":_vm.scheduledActivityData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.scheduledActivity,\"data\":_vm.scheduledActivityData}})],1),_vm._v(\" \"),(_vm.scheduledActivity)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"manifest\",attrs:{\"model\":_vm.manifestData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.manifest,\"data\":_vm.manifestData}})],1),_vm._v(\" \"),(_vm.manifest)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"pleromaUser\",attrs:{\"model\":_vm.pleromaUserData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth,\"data-search\":\"Pleroma.User\"}},[_c('setting',{attrs:{\"setting-group\":_vm.pleromaUser,\"data\":_vm.pleromaUserData}})],1),_vm._v(\" \"),(_vm.pleromaUser)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"uriSchemes\",attrs:{\"model\":_vm.uriSchemesData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.uriSchemes,\"data\":_vm.uriSchemesData}})],1),_vm._v(\" \"),(_vm.uriSchemes)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"feed\",attrs:{\"model\":_vm.feedData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.feed,\"data\":_vm.feedData}})],1),_vm._v(\" \"),_c('el-form',{ref:\"streamer\",attrs:{\"model\":_vm.streamerData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.streamer,\"data\":_vm.streamerData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./JobQueue.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./JobQueue.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./JobQueue.vue?vue&type=template&id=363820de&\"\nimport script from \"./JobQueue.vue?vue&type=script&lang=js&\"\nexport * from \"./JobQueue.vue?vue&type=script&lang=js&\"\nimport style0 from \"./JobQueue.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"JobQueue.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{ref:\"obanQueuesData\",attrs:{\"model\":_vm.obanQueuesData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.obanQueues,\"data\":_vm.obanQueuesData}})],1),_vm._v(\" \"),_c('el-form',{ref:\"workersData\",attrs:{\"model\":_vm.workersData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.workers,\"data\":_vm.workersData}})],1),_vm._v(\" \"),_c('el-form',{ref:\"activityExpiration\",attrs:{\"model\":_vm.activityExpirationData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.activityExpiration,\"data\":_vm.activityExpirationData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logger.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logger.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Logger.vue?vue&type=template&id=0fac35cb&\"\nimport script from \"./Logger.vue?vue&type=script&lang=js&\"\nexport * from \"./Logger.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Logger.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Logger.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{ref:\"loggerData\",attrs:{\"model\":_vm.loggerData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.logger,\"data\":_vm.loggerData}})],1),_vm._v(\" \"),(_vm.logger)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"consoleData\",attrs:{\"model\":_vm.consoleData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.console,\"data\":_vm.consoleData}})],1),_vm._v(\" \"),(_vm.console)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"exsysloggerData\",attrs:{\"model\":_vm.exsysloggerData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.exsyslogger,\"data\":_vm.exsysloggerData}})],1),_vm._v(\" \"),(_vm.exsyslogger)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"quackData\",attrs:{\"model\":_vm.quackData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.quack,\"data\":_vm.quackData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Mailer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Mailer.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Mailer.vue?vue&type=template&id=5331edef&\"\nimport script from \"./Mailer.vue?vue&type=script&lang=js&\"\nexport * from \"./Mailer.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Mailer.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Mailer.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{ref:\"mailer\",attrs:{\"model\":_vm.mailerData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.mailer,\"data\":_vm.mailerData}})],1),_vm._v(\" \"),(_vm.mailer)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"swoosh\",attrs:{\"model\":_vm.swooshData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.swoosh,\"data\":_vm.swooshData}})],1),_vm._v(\" \"),(_vm.swoosh)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"emailNotifications\",attrs:{\"model\":_vm.emailNotificationsData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.emailNotifications,\"data\":_vm.emailNotificationsData}})],1),_vm._v(\" \"),_c('el-form',{ref:\"userEmail\",attrs:{\"model\":_vm.userEmailData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.userEmail,\"data\":_vm.userEmailData}})],1),_vm._v(\" \"),_c('el-form',{ref:\"newUsersDigestEmail\",attrs:{\"model\":_vm.newUsersDigestEmailData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.newUsersDigestEmail,\"data\":_vm.newUsersDigestEmailData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MediaProxy.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MediaProxy.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./MediaProxy.vue?vue&type=template&id=1f81eb24&\"\nimport script from \"./MediaProxy.vue?vue&type=script&lang=js&\"\nexport * from \"./MediaProxy.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MediaProxy.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"MediaProxy.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[(!_vm.loading)?_c('el-form',{ref:\"mediaProxy\",attrs:{\"model\":_vm.mediaProxyData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.mediaProxy,\"data\":_vm.mediaProxyData}})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Metadata.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Metadata.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Metadata.vue?vue&type=template&id=1733a5b4&\"\nimport script from \"./Metadata.vue?vue&type=script&lang=js&\"\nexport * from \"./Metadata.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Metadata.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Metadata.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{ref:\"metadata\",attrs:{\"model\":_vm.metadataData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.metadata,\"data\":_vm.metadataData}})],1),_vm._v(\" \"),(_vm.metadata)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"richMedia\",attrs:{\"model\":_vm.richMediaData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.richMedia,\"data\":_vm.richMediaData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MRF.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MRF.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./MRF.vue?vue&type=template&id=1f16e1ee&\"\nimport script from \"./MRF.vue?vue&type=script&lang=js&\"\nexport * from \"./MRF.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MRF.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"MRF.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{ref:\"mrfSimple\",attrs:{\"model\":_vm.mrfSimpleData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.mrfSimple,\"data\":_vm.mrfSimpleData}})],1),_vm._v(\" \"),(_vm.mrfSimple)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"mrfRejectnonpublic\",attrs:{\"model\":_vm.mrfRejectnonpublicData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.mrfRejectnonpublic,\"data\":_vm.mrfRejectnonpublicData}})],1),_vm._v(\" \"),(_vm.mrfRejectnonpublic)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"mrfHellthread\",attrs:{\"model\":_vm.mrfHellthreadData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.mrfHellthread,\"data\":_vm.mrfHellthreadData}})],1),_vm._v(\" \"),(_vm.mrfHellthread)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"mrfKeyword\",attrs:{\"model\":_vm.mrfKeywordData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.mrfKeyword,\"data\":_vm.mrfKeywordData}})],1),_vm._v(\" \"),_c('el-form',{ref:\"mrfSubchain\",attrs:{\"model\":_vm.mrfSubchainData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.mrfSubchain,\"data\":_vm.mrfSubchainData}})],1),_vm._v(\" \"),_c('el-form',{ref:\"mrfMention\",attrs:{\"model\":_vm.mrfMentionData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.mrfMention,\"data\":_vm.mrfMentionData}})],1),_vm._v(\" \"),(_vm.mrfMention)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"mrfNormalizeMarkup\",attrs:{\"model\":_vm.mrfNormalizeMarkupData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.mrfNormalizeMarkup,\"data\":_vm.mrfNormalizeMarkupData}})],1),_vm._v(\" \"),(_vm.mrfNormalizeMarkup)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"mrfVocabulary\",attrs:{\"model\":_vm.mrfVocabularyData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.mrfVocabulary,\"data\":_vm.mrfVocabularyData}})],1),_vm._v(\" \"),(_vm.mrfVocabulary)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"mrfObjectAge\",attrs:{\"model\":_vm.mrfObjectAgeData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.mrfObjectAge,\"data\":_vm.mrfObjectAgeData}})],1),_vm._v(\" \"),(_vm.mrfObjectAge)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"mrfActivityExpiration\",attrs:{\"model\":_vm.mrfActivityExpirationData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.mrfActivityExpiration,\"data\":_vm.mrfActivityExpirationData}})],1),_vm._v(\" \"),(_vm.mrfActivityExpiration)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"modules\",attrs:{\"model\":_vm.modulesData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.modules,\"data\":_vm.modulesData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Other.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Other.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Other.vue?vue&type=template&id=529a22f4&\"\nimport script from \"./Other.vue?vue&type=script&lang=js&\"\nexport * from \"./Other.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Other.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Other.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{ref:\"mimeTypes\",attrs:{\"model\":_vm.mimeTypesData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.mimeTypes,\"data\":_vm.mimeTypesData}})],1),_vm._v(\" \"),_c('el-form',{ref:\"remoteIp\",attrs:{\"model\":_vm.remoteIpData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.remoteIp,\"data\":_vm.remoteIpData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RateLimiters.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RateLimiters.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./RateLimiters.vue?vue&type=template&id=342424ac&\"\nimport script from \"./RateLimiters.vue?vue&type=script&lang=js&\"\nexport * from \"./RateLimiters.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RateLimiters.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"RateLimiters.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[(!_vm.loading)?_c('el-form',{ref:\"rateLimiters\",attrs:{\"model\":_vm.rateLimitersData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.rateLimiters,\"data\":_vm.rateLimitersData}})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Relays.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Relays.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Relays.vue?vue&type=template&id=74b90396&\"\nimport script from \"./Relays.vue?vue&type=script&lang=js&\"\nexport * from \"./Relays.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Relays.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Relays.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"relays-container\"},[_c('div',{staticClass:\"follow-relay-container\"},[_c('el-input',{staticClass:\"follow-relay\",attrs:{\"placeholder\":_vm.$t('settings.followRelay')},nativeOn:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.followRelay($event)}},model:{value:(_vm.newRelay),callback:function ($$v) {_vm.newRelay=$$v},expression:\"newRelay\"}}),_vm._v(\" \"),_c('el-button',{attrs:{\"type\":\"primary\"},nativeOn:{\"click\":function($event){return _vm.followRelay($event)}}},[_vm._v(_vm._s(_vm.$t('settings.follow')))])],1),_vm._v(\" \"),_c('el-table',{attrs:{\"data\":_vm.relaysTable}},[_c('el-table-column',{attrs:{\"label\":_vm.$t('settings.instanceUrl'),\"prop\":\"instance\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"fixed\":\"right\",\"width\":\"120\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-button',{attrs:{\"type\":\"text\",\"size\":\"small\"},nativeOn:{\"click\":function($event){return _vm.deleteRelay(scope.row.instance)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('table.delete'))+\"\\n \")])]}}],null,false,2132974932)})],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Upload.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Upload.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Upload.vue?vue&type=template&id=c3685204&\"\nimport script from \"./Upload.vue?vue&type=script&lang=js&\"\nexport * from \"./Upload.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Upload.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Upload.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{ref:\"uploadData\",attrs:{\"model\":_vm.uploadData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.upload,\"data\":_vm.uploadData}})],1),_vm._v(\" \"),(_vm.showUploadersLocal)?_c('el-form',{ref:\"uploadersLocal\",attrs:{\"model\":_vm.uploadersLocalData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[(_vm.uploadersLocal)?_c('el-form-item',{staticClass:\"grouped-settings-header\"},[_c('span',{staticClass:\"label-font label-with-margin\"},[_vm._v(\"Pleroma.Uploaders.Local\")])]):_vm._e(),_vm._v(\" \"),_c('setting',{attrs:{\"setting-group\":_vm.uploadersLocal,\"data\":_vm.uploadersLocalData}}),_vm._v(\" \"),(_vm.uploadersLocal)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.showUploadersS3)?_c('el-form',{ref:\"uploadersS3\",attrs:{\"model\":_vm.uploadersS3Data,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.uploadersS3,\"data\":_vm.uploadersS3Data}}),_vm._v(\" \"),(_vm.uploadersS3)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"uploadFilterMogrify\",attrs:{\"model\":_vm.uploadFilterMogrifyData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.uploadFilterMogrify,\"data\":_vm.uploadFilterMogrifyData}})],1),_vm._v(\" \"),(_vm.uploadFilterMogrify)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"uploadAnonymizeFilename\",attrs:{\"model\":_vm.uploadAnonymizeFilenameData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.uploadAnonymizeFilename,\"data\":_vm.uploadAnonymizeFilenameData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebPush.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebPush.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./WebPush.vue?vue&type=template&id=126c753f&\"\nimport script from \"./WebPush.vue?vue&type=script&lang=js&\"\nexport * from \"./WebPush.vue?vue&type=script&lang=js&\"\nimport style0 from \"./WebPush.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"WebPush.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[(!_vm.loading)?_c('el-form',{ref:\"vapidDetailsData\",attrs:{\"model\":_vm.vapidDetailsData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.vapidDetails,\"data\":_vm.vapidDetailsData}})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=2b61d370&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=2b61d370&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2b61d370\",\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Metadata.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Metadata.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AutoLinker.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AutoLinker.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Instance.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Instance.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Other.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Other.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MRF.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MRF.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Frontend.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Frontend.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RateLimitInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RateLimitInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./JobQueue.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./JobQueue.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logger.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logger.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProxyUrlInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProxyUrlInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CrontabInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CrontabInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditableKeywordInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditableKeywordInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Setting.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Setting.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActivityPub.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActivityPub.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IconsInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IconsInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Gopher.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Gopher.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Inputs.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Inputs.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\""],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-0961.ef33e81b.js b/priv/static/adminfe/static/js/chunk-4e7e.91b5e73a.js similarity index 97% rename from priv/static/adminfe/static/js/chunk-0961.ef33e81b.js rename to priv/static/adminfe/static/js/chunk-4e7e.91b5e73a.js index e090bb93c..0fdf0de50 100644 --- a/priv/static/adminfe/static/js/chunk-0961.ef33e81b.js +++ b/priv/static/adminfe/static/js/chunk-4e7e.91b5e73a.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-0961"],{GFxI:function(t,e,n){},aSQl:function(t,e,n){"use strict";n.d(e,"a",function(){return p});var o=n("o0o1"),a=n.n(o),r=n("yXPU"),s=n.n(r),i=n("oAJy"),l=n.n(i),c=n("LvDl"),u=n.n(c),p=function(){var t=s()(a.a.mark(function t(e){var n,o;return a.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,l.a.getItem("vuex-lz");case 2:if(n=t.sent,void 0!==(o=u.a.get(n,"oauth.userToken"))){t.next=6;break}throw new Error("PleromaFE token not found");case 6:return t.next=8,e.dispatch("LoginByPleromaFE",{token:o});case 8:case"end":return t.stop()}},t)}));return function(e){return t.apply(this,arguments)}}()},abDm:function(t,e,n){"use strict";var o=n("GFxI");n.n(o).a},c11S:function(t,e,n){"use strict";var o=n("gTgX");n.n(o).a},gTgX:function(t,e,n){},ntYl:function(t,e,n){"use strict";n.r(e);var o=n("J4zp"),a=n.n(o),r=n("o0o1"),s=n.n(r),i=n("yXPU"),l=n.n(i),c=n("zT9a"),u=n("oAJy"),p=n.n(u),d=n("LvDl"),m=n.n(d),g=n("mSNy"),h=n("aSQl"),v={name:"Login",components:{"svg-icon":c.a},data:function(){return{loginForm:{username:"",password:""},passwordType:"password",loading:!1,loadingPleromaFE:!1,showDialog:!1,redirect:void 0,pleromaFEToken:!1,pleromaFEStateKey:"vuex-lz",pleromaFEState:{}}},watch:{$route:{handler:function(t){this.redirect=t.query&&t.query.redirect},immediate:!0}},mounted:function(){var t=l()(s.a.mark(function t(){var e;return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,p.a.getItem(this.pleromaFEStateKey);case 2:if(e=t.sent,this.pleromaFEState=e,void 0!==m.a.get(e,"oauth.userToken")){t.next=6;break}return t.abrupt("return");case 6:this.pleromaFEToken=!0;case 7:case"end":return t.stop()}},t,this)}));return function(){return t.apply(this,arguments)}}(),methods:{showPwd:function(){"password"===this.passwordType?this.passwordType="":this.passwordType="password"},handleLogin:function(){var t=this;this.loading=!0;var e=this.getLoginData();this.$store.dispatch("LoginByUsername",e).then(function(){t.loading=!1,t.$router.push({path:t.redirect||"/users/index"})}).catch(function(){t.loading=!1})},handlePleromaFELogin:function(){var t=l()(s.a.mark(function t(){return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return this.loadingPleromaFE=!0,t.prev=1,t.next=4,Object(h.a)(this.$store);case 4:t.next=10;break;case 6:t.prev=6,t.t0=t.catch(1),this.loadingPleromaFE=!1,this.$message.error(g.a.t("login.pleromaFELoginFailed"));case 10:this.loadingPleromaFE=!1,this.$message.success(g.a.t("login.pleromaFELoginSucceed")),this.$router.push({path:this.redirect||"/users/index"});case 13:case"end":return t.stop()}},t,this,[[1,6]])}));return function(){return t.apply(this,arguments)}}(),getLoginData:function(){var t=this.loginForm.username.split("@"),e=a()(t,2),n=e[0],o=e[1];return{username:n.trim(),authHost:o?o.trim():window.location.host,password:this.loginForm.password}}}},f=(n("c11S"),n("abDm"),n("KHd+")),w=Object(f.a)(v,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"login-container"},[n("el-form",{ref:"loginForm",staticClass:"login-form",attrs:{model:t.loginForm,"auto-complete":"on","label-position":"left"}},[n("div",{staticClass:"title-container"},[n("h3",{staticClass:"title"},[t._v("\n "+t._s(t.$t("login.title"))+"\n ")])]),t._v(" "),n("el-form-item",{attrs:{prop:"username"}},[n("span",{staticClass:"svg-container"},[n("svg-icon",{attrs:{"icon-class":"user"}})],1),t._v(" "),n("el-input",{attrs:{placeholder:t.$t("login.username"),name:"username",type:"text","auto-complete":"on"},model:{value:t.loginForm.username,callback:function(e){t.$set(t.loginForm,"username",e)},expression:"loginForm.username"}})],1),t._v(" "),n("div",{staticClass:"omit-host-note"},[t._v(t._s(t.$t("login.omitHostname")))]),t._v(" "),n("el-form-item",{attrs:{prop:"password"}},[n("span",{staticClass:"svg-container"},[n("svg-icon",{attrs:{"icon-class":"password"}})],1),t._v(" "),n("el-input",{attrs:{type:t.passwordType,placeholder:t.$t("login.password"),name:"password","auto-complete":"on"},nativeOn:{keyup:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.handleLogin(e)}},model:{value:t.loginForm.password,callback:function(e){t.$set(t.loginForm,"password",e)},expression:"loginForm.password"}}),t._v(" "),n("span",{staticClass:"show-pwd",on:{click:t.showPwd}},[n("svg-icon",{attrs:{"icon-class":"password"===t.passwordType?"eye":"eye-open"}})],1)],1),t._v(" "),n("el-button",{staticClass:"login-button",attrs:{loading:t.loading,type:"primary"},nativeOn:{click:function(e){return e.preventDefault(),t.handleLogin(e)}}},[t._v("\n "+t._s(t.$t("login.logIn"))+"\n ")]),t._v(" "),t.pleromaFEToken?n("el-button",{staticClass:"login-button",attrs:{loading:t.loadingPleromaFE,type:"primary"},nativeOn:{click:function(e){return e.preventDefault(),t.handlePleromaFELogin(e)}}},[t._v("\n "+t._s(t.$t("login.logInViaPleromaFE"))+"\n ")]):t._e()],1)],1)},[],!1,null,"5bb13616",null);w.options.__file="index.vue";e.default=w.exports}}]); -//# sourceMappingURL=chunk-0961.ef33e81b.js.map \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-4e7e"],{GFxI:function(t,e,n){},aSQl:function(t,e,n){"use strict";n.d(e,"a",function(){return p});var o=n("o0o1"),a=n.n(o),r=n("yXPU"),s=n.n(r),i=n("oAJy"),l=n.n(i),c=n("LvDl"),u=n.n(c),p=function(){var t=s()(a.a.mark(function t(e){var n,o;return a.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,l.a.getItem("vuex-lz");case 2:if(n=t.sent,void 0!==(o=u.a.get(n,"oauth.userToken"))){t.next=6;break}throw new Error("PleromaFE token not found");case 6:return t.next=8,e.dispatch("LoginByPleromaFE",{token:o});case 8:case"end":return t.stop()}},t)}));return function(e){return t.apply(this,arguments)}}()},abDm:function(t,e,n){"use strict";var o=n("GFxI");n.n(o).a},c11S:function(t,e,n){"use strict";var o=n("gTgX");n.n(o).a},gTgX:function(t,e,n){},ntYl:function(t,e,n){"use strict";n.r(e);var o=n("J4zp"),a=n.n(o),r=n("o0o1"),s=n.n(r),i=n("yXPU"),l=n.n(i),c=n("zT9a"),u=n("oAJy"),p=n.n(u),d=n("LvDl"),m=n.n(d),g=n("mSNy"),h=n("aSQl"),v={name:"Login",components:{"svg-icon":c.a},data:function(){return{loginForm:{username:"",password:""},passwordType:"password",loading:!1,loadingPleromaFE:!1,showDialog:!1,redirect:void 0,pleromaFEToken:!1,pleromaFEStateKey:"vuex-lz",pleromaFEState:{}}},watch:{$route:{handler:function(t){this.redirect=t.query&&t.query.redirect},immediate:!0}},mounted:function(){var t=l()(s.a.mark(function t(){var e;return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,p.a.getItem(this.pleromaFEStateKey);case 2:if(e=t.sent,this.pleromaFEState=e,void 0!==m.a.get(e,"oauth.userToken")){t.next=6;break}return t.abrupt("return");case 6:this.pleromaFEToken=!0;case 7:case"end":return t.stop()}},t,this)}));return function(){return t.apply(this,arguments)}}(),methods:{showPwd:function(){"password"===this.passwordType?this.passwordType="":this.passwordType="password"},handleLogin:function(){var t=this;this.loading=!0;var e=this.getLoginData();this.$store.dispatch("LoginByUsername",e).then(function(){t.loading=!1,t.$router.push({path:t.redirect||"/users/index"})}).catch(function(){t.loading=!1})},handlePleromaFELogin:function(){var t=l()(s.a.mark(function t(){return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return this.loadingPleromaFE=!0,t.prev=1,t.next=4,Object(h.a)(this.$store);case 4:t.next=10;break;case 6:t.prev=6,t.t0=t.catch(1),this.loadingPleromaFE=!1,this.$message.error(g.a.t("login.pleromaFELoginFailed"));case 10:this.loadingPleromaFE=!1,this.$message.success(g.a.t("login.pleromaFELoginSucceed")),this.$router.push({path:this.redirect||"/users/index"});case 13:case"end":return t.stop()}},t,this,[[1,6]])}));return function(){return t.apply(this,arguments)}}(),getLoginData:function(){var t=this.loginForm.username.split("@"),e=a()(t,2),n=e[0],o=e[1];return{username:n.trim(),authHost:o?o.trim():window.location.host,password:this.loginForm.password}}}},f=(n("c11S"),n("abDm"),n("KHd+")),w=Object(f.a)(v,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"login-container"},[n("el-form",{ref:"loginForm",staticClass:"login-form",attrs:{model:t.loginForm,"auto-complete":"on","label-position":"left"}},[n("div",{staticClass:"title-container"},[n("h3",{staticClass:"title"},[t._v("\n "+t._s(t.$t("login.title"))+"\n ")])]),t._v(" "),n("el-form-item",{attrs:{prop:"username"}},[n("span",{staticClass:"svg-container"},[n("svg-icon",{attrs:{"icon-class":"user"}})],1),t._v(" "),n("el-input",{attrs:{placeholder:t.$t("login.username"),name:"username",type:"text","auto-complete":"on"},model:{value:t.loginForm.username,callback:function(e){t.$set(t.loginForm,"username",e)},expression:"loginForm.username"}})],1),t._v(" "),n("div",{staticClass:"omit-host-note"},[t._v(t._s(t.$t("login.omitHostname")))]),t._v(" "),n("el-form-item",{attrs:{prop:"password"}},[n("span",{staticClass:"svg-container"},[n("svg-icon",{attrs:{"icon-class":"password"}})],1),t._v(" "),n("el-input",{attrs:{type:t.passwordType,placeholder:t.$t("login.password"),name:"password","auto-complete":"on"},nativeOn:{keyup:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.handleLogin(e)}},model:{value:t.loginForm.password,callback:function(e){t.$set(t.loginForm,"password",e)},expression:"loginForm.password"}}),t._v(" "),n("span",{staticClass:"show-pwd",on:{click:t.showPwd}},[n("svg-icon",{attrs:{"icon-class":"password"===t.passwordType?"eye":"eye-open"}})],1)],1),t._v(" "),n("el-button",{staticClass:"login-button",attrs:{loading:t.loading,type:"primary"},nativeOn:{click:function(e){return e.preventDefault(),t.handleLogin(e)}}},[t._v("\n "+t._s(t.$t("login.logIn"))+"\n ")]),t._v(" "),t.pleromaFEToken?n("el-button",{staticClass:"login-button",attrs:{loading:t.loadingPleromaFE,type:"primary"},nativeOn:{click:function(e){return e.preventDefault(),t.handlePleromaFELogin(e)}}},[t._v("\n "+t._s(t.$t("login.logInViaPleromaFE"))+"\n ")]):t._e()],1)],1)},[],!1,null,"5bb13616",null);w.options.__file="index.vue";e.default=w.exports}}]); +//# sourceMappingURL=chunk-4e7e.91b5e73a.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-0961.ef33e81b.js.map b/priv/static/adminfe/static/js/chunk-4e7e.91b5e73a.js.map similarity index 99% rename from priv/static/adminfe/static/js/chunk-0961.ef33e81b.js.map rename to priv/static/adminfe/static/js/chunk-4e7e.91b5e73a.js.map index 97c6a4b54..7a6751cf8 100644 --- a/priv/static/adminfe/static/js/chunk-0961.ef33e81b.js.map +++ b/priv/static/adminfe/static/js/chunk-4e7e.91b5e73a.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///./src/services/pleromaAuth.js","webpack:///./src/views/login/index.vue?4fb3","webpack:///./src/views/login/index.vue?0399","webpack:///./src/views/login/index.vue?7240","webpack:///./src/views/login/index.vue?95e4","webpack:///src/views/login/index.vue","webpack:///./src/views/login/index.vue"],"names":["authenticateWithPleromaFE","_ref","_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default","_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default","a","mark","_callee","store","pleromaFEState","token","wrap","_context","prev","next","localforage","getItem","sent","undefined","_","get","Error","dispatch","stop","_x","apply","this","arguments","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_1_id_5bb13616_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","views_loginvue_type_script_lang_js_","name","components","svg-icon","SvgIcon","data","loginForm","username","password","passwordType","loading","loadingPleromaFE","showDialog","redirect","pleromaFEToken","pleromaFEStateKey","watch","$route","handler","route","query","immediate","mounted","_mounted","asyncToGenerator_default","regenerator_default","localforage_default","lodash_default","abrupt","methods","showPwd","handleLogin","_this","loginData","getLoginData","$store","then","$router","push","path","catch","handlePleromaFELogin","_handlePleromaFELogin","_callee2","_context2","Object","pleromaAuth","t0","$message","error","lang","t","success","_this$loginForm$usern","split","_this$loginForm$usern2","slicedToArray_default","authHost","trim","window","location","host","component","componentNormalizer","_vm","_h","$createElement","_c","_self","staticClass","ref","attrs","model","auto-complete","label-position","_v","_s","$t","prop","icon-class","placeholder","type","value","callback","$$v","$set","expression","nativeOn","keyup","$event","indexOf","_k","keyCode","key","on","click","preventDefault","_e","options","__file","__webpack_exports__"],"mappings":"qPAKaA,EAAyB,eAAAC,EAAAC,IAAAC,EAAAC,EAAAC,KAAG,SAAAC,EAAMC,GAAN,IAAAC,EAAAC,EAAA,OAAAN,EAAAC,EAAAM,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACVC,IAAYC,QAHjB,WAEe,UACjCP,EADiCG,EAAAK,UAIzBC,KAFRR,EAAQS,IAAEC,IAAIX,EAAgB,oBAFG,CAAAG,EAAAE,KAAA,cAK/B,IAAIO,MAAM,6BALqB,cAAAT,EAAAE,KAAA,EAQjCN,EAAMc,SAAS,oBAAsBZ,UARJ,wBAAAE,EAAAW,SAAAhB,MAAH,gBAAAiB,GAAA,OAAAtB,EAAAuB,MAAAC,KAAAC,YAAA,sCCLtC,IAAAC,EAAAC,EAAA,QAAAA,EAAAC,EAAAF,GAA+e,qCCA/e,IAAAG,EAAAF,EAAA,QAAAA,EAAAC,EAAAC,GAAud,mECAvd,iJCA0MC,GC2D1MC,KAAA,QACAC,YAAAC,WAAAC,EAAA,GACAC,KAAA,WACA,OACAC,WACAC,SAAA,GACAC,SAAA,IAEAC,aAAA,WACAC,SAAA,EACAC,kBAAA,EACAC,YAAA,EACAC,cAAA3B,EACA4B,gBAAA,EACAC,kBAAA,UACAtC,oBAGAuC,OACAC,QACAC,QAAA,SAAAC,GACAzB,KAAAmB,SAAAM,EAAAC,OAAAD,EAAAC,MAAAP,UAEAQ,WAAA,IAGAC,QA3BA,eAAAC,EAAAC,IAAAC,EAAApD,EAAAC,KAAA,SAAAC,IAAA,IAAAE,EAAA,OAAAgD,EAAApD,EAAAM,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EA4BA4C,EAAArD,EAAAW,QAAAU,KAAAqB,mBA5BA,UA4BAtC,EA5BAG,EAAAK,KA6BAS,KAAAjB,sBAEAS,IAAAyC,EAAAtD,EAAAe,IAAAX,EAAA,mBA/BA,CAAAG,EAAAE,KAAA,eAAAF,EAAAgD,OAAA,iBAmCAlC,KAAAoB,gBAAA,EAnCA,wBAAAlC,EAAAW,SAAAhB,EAAAmB,SAAA,yBAAA6B,EAAA9B,MAAAC,KAAAC,YAAA,GAqCAkC,SACAC,QADA,WAEA,aAAApC,KAAAe,aACAf,KAAAe,aAAA,GAEAf,KAAAe,aAAA,YAGAsB,YARA,WAQA,IAAAC,EAAAtC,KACAA,KAAAgB,SAAA,EACA,IAAAuB,EAAAvC,KAAAwC,eACAxC,KAAAyC,OAAA7C,SAAA,kBAAA2C,GAAAG,KAAA,WACAJ,EAAAtB,SAAA,EACAsB,EAAAK,QAAAC,MAAAC,KAAAP,EAAAnB,UAAA,mBACA2B,MAAA,WACAR,EAAAtB,SAAA,KAGA+B,qBAlBA,eAAAC,EAAAlB,IAAAC,EAAApD,EAAAC,KAAA,SAAAqE,IAAA,OAAAlB,EAAApD,EAAAM,KAAA,SAAAiE,GAAA,cAAAA,EAAA/D,KAAA+D,EAAA9D,MAAA,cAmBAY,KAAAiB,kBAAA,EAnBAiC,EAAA/D,KAAA,EAAA+D,EAAA9D,KAAA,EAqBA+D,OAAAC,EAAA,EAAAD,CAAAnD,KAAAyC,QArBA,OAAAS,EAAA9D,KAAA,gBAAA8D,EAAA/D,KAAA,EAAA+D,EAAAG,GAAAH,EAAA,SAuBAlD,KAAAiB,kBAAA,EACAjB,KAAAsD,SAAAC,MAAAC,EAAA,EAAAC,EAAA,+BAxBA,QA2BAzD,KAAAiB,kBAAA,EAEAjB,KAAAsD,SAAAI,QAAAF,EAAA,EAAAC,EAAA,gCACAzD,KAAA2C,QAAAC,MAAAC,KAAA7C,KAAAmB,UAAA,iBA9BA,yBAAA+B,EAAArD,SAAAoD,EAAAjD,OAAA,mCAAAgD,EAAAjD,MAAAC,KAAAC,YAAA,GAgCAuC,aAhCA,WAgCA,IAAAmB,EACA3D,KAAAY,UAAAC,SAAA+C,MAAA,KADAC,EAAAC,IAAAH,EAAA,GACA9C,EADAgD,EAAA,GACAE,EADAF,EAAA,GAGA,OACAhD,WAAAmD,OACAD,aAAAC,OAAAC,OAAAC,SAAAC,KACArD,SAAAd,KAAAY,UAAAE,+CC5HAsD,EAAgBjB,OAAAkB,EAAA,EAAAlB,CACd7C,EHVF,WAA0B,IAAAgE,EAAAtE,KAAauE,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,oBAA8BF,EAAA,WAAgBG,IAAA,YAAAD,YAAA,aAAAE,OAAgDC,MAAAR,EAAA1D,UAAAmE,gBAAA,KAAAC,iBAAA,UAAoEP,EAAA,OAAYE,YAAA,oBAA8BF,EAAA,MAAWE,YAAA,UAAoBL,EAAAW,GAAA,aAAAX,EAAAY,GAAAZ,EAAAa,GAAA,gCAAAb,EAAAW,GAAA,KAAAR,EAAA,gBAAmGI,OAAOO,KAAA,cAAmBX,EAAA,QAAaE,YAAA,kBAA4BF,EAAA,YAAiBI,OAAOQ,aAAA,WAAqB,GAAAf,EAAAW,GAAA,KAAAR,EAAA,YAAiCI,OAAOS,YAAAhB,EAAAa,GAAA,kBAAA5E,KAAA,WAAAgF,KAAA,OAAAR,gBAAA,MAA4FD,OAAQU,MAAAlB,EAAA1D,UAAA,SAAA6E,SAAA,SAAAC,GAAwDpB,EAAAqB,KAAArB,EAAA1D,UAAA,WAAA8E,IAAyCE,WAAA,yBAAkC,GAAAtB,EAAAW,GAAA,KAAAR,EAAA,OAA4BE,YAAA,mBAA6BL,EAAAW,GAAAX,EAAAY,GAAAZ,EAAAa,GAAA,0BAAAb,EAAAW,GAAA,KAAAR,EAAA,gBAAgFI,OAAOO,KAAA,cAAmBX,EAAA,QAAaE,YAAA,kBAA4BF,EAAA,YAAiBI,OAAOQ,aAAA,eAAyB,GAAAf,EAAAW,GAAA,KAAAR,EAAA,YAAiCI,OAAOU,KAAAjB,EAAAvD,aAAAuE,YAAAhB,EAAAa,GAAA,kBAAA5E,KAAA,WAAAwE,gBAAA,MAAsGc,UAAWC,MAAA,SAAAC,GAAyB,OAAAA,EAAAR,KAAAS,QAAA,QAAA1B,EAAA2B,GAAAF,EAAAG,QAAA,WAAAH,EAAAI,IAAA,SAAsF,KAAe7B,EAAAjC,YAAA0D,KAAgCjB,OAAQU,MAAAlB,EAAA1D,UAAA,SAAA6E,SAAA,SAAAC,GAAwDpB,EAAAqB,KAAArB,EAAA1D,UAAA,WAAA8E,IAAyCE,WAAA,wBAAkCtB,EAAAW,GAAA,KAAAR,EAAA,QAAyBE,YAAA,WAAAyB,IAA2BC,MAAA/B,EAAAlC,WAAqBqC,EAAA,YAAiBI,OAAOQ,aAAA,aAAAf,EAAAvD,aAAA,qBAAmE,OAAAuD,EAAAW,GAAA,KAAAR,EAAA,aAAsCE,YAAA,eAAAE,OAAkC7D,QAAAsD,EAAAtD,QAAAuE,KAAA,WAAuCM,UAAWQ,MAAA,SAAAN,GAAiD,OAAxBA,EAAAO,iBAAwBhC,EAAAjC,YAAA0D,OAAiCzB,EAAAW,GAAA,WAAAX,EAAAY,GAAAZ,EAAAa,GAAA,4BAAAb,EAAAW,GAAA,KAAAX,EAAA,eAAAG,EAAA,aAA+GE,YAAA,eAAAE,OAAkC7D,QAAAsD,EAAArD,iBAAAsE,KAAA,WAAgDM,UAAWQ,MAAA,SAAAN,GAAiD,OAAxBA,EAAAO,iBAAwBhC,EAAAvB,qBAAAgD,OAA0CzB,EAAAW,GAAA,WAAAX,EAAAY,GAAAZ,EAAAa,GAAA,wCAAAb,EAAAiC,MAAA,YGa7oE,EACA,KACA,WACA,MAIAnC,EAAAoC,QAAAC,OAAA,YACeC,EAAA,QAAAtC","file":"static/js/chunk-0961.ef33e81b.js","sourcesContent":["import localforage from 'localforage'\nimport _ from 'lodash'\n\nconst pleromaFEStateKey = 'vuex-lz'\n\nexport const authenticateWithPleromaFE = async(store) => {\n const pleromaFEState = await localforage.getItem(pleromaFEStateKey)\n const token = _.get(pleromaFEState, 'oauth.userToken')\n\n if (token === undefined) {\n throw new Error('PleromaFE token not found')\n }\n\n await store.dispatch('LoginByPleromaFE', { token })\n}\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=1&id=5bb13616&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=1&id=5bb13616&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"login-container\"},[_c('el-form',{ref:\"loginForm\",staticClass:\"login-form\",attrs:{\"model\":_vm.loginForm,\"auto-complete\":\"on\",\"label-position\":\"left\"}},[_c('div',{staticClass:\"title-container\"},[_c('h3',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.title'))+\"\\n \")])]),_vm._v(\" \"),_c('el-form-item',{attrs:{\"prop\":\"username\"}},[_c('span',{staticClass:\"svg-container\"},[_c('svg-icon',{attrs:{\"icon-class\":\"user\"}})],1),_vm._v(\" \"),_c('el-input',{attrs:{\"placeholder\":_vm.$t('login.username'),\"name\":\"username\",\"type\":\"text\",\"auto-complete\":\"on\"},model:{value:(_vm.loginForm.username),callback:function ($$v) {_vm.$set(_vm.loginForm, \"username\", $$v)},expression:\"loginForm.username\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"omit-host-note\"},[_vm._v(_vm._s(_vm.$t('login.omitHostname')))]),_vm._v(\" \"),_c('el-form-item',{attrs:{\"prop\":\"password\"}},[_c('span',{staticClass:\"svg-container\"},[_c('svg-icon',{attrs:{\"icon-class\":\"password\"}})],1),_vm._v(\" \"),_c('el-input',{attrs:{\"type\":_vm.passwordType,\"placeholder\":_vm.$t('login.password'),\"name\":\"password\",\"auto-complete\":\"on\"},nativeOn:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.handleLogin($event)}},model:{value:(_vm.loginForm.password),callback:function ($$v) {_vm.$set(_vm.loginForm, \"password\", $$v)},expression:\"loginForm.password\"}}),_vm._v(\" \"),_c('span',{staticClass:\"show-pwd\",on:{\"click\":_vm.showPwd}},[_c('svg-icon',{attrs:{\"icon-class\":_vm.passwordType === 'password' ? 'eye' : 'eye-open'}})],1)],1),_vm._v(\" \"),_c('el-button',{staticClass:\"login-button\",attrs:{\"loading\":_vm.loading,\"type\":\"primary\"},nativeOn:{\"click\":function($event){$event.preventDefault();return _vm.handleLogin($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.logIn'))+\"\\n \")]),_vm._v(\" \"),(_vm.pleromaFEToken)?_c('el-button',{staticClass:\"login-button\",attrs:{\"loading\":_vm.loadingPleromaFE,\"type\":\"primary\"},nativeOn:{\"click\":function($event){$event.preventDefault();return _vm.handlePleromaFELogin($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.logInViaPleromaFE'))+\"\\n \")]):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=5bb13616&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\nimport style1 from \"./index.vue?vue&type=style&index=1&id=5bb13616&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5bb13616\",\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///./src/services/pleromaAuth.js","webpack:///./src/views/login/index.vue?4fb3","webpack:///./src/views/login/index.vue?0399","webpack:///./src/views/login/index.vue?7240","webpack:///./src/views/login/index.vue?95e4","webpack:///src/views/login/index.vue","webpack:///./src/views/login/index.vue"],"names":["authenticateWithPleromaFE","_ref","_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default","_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default","a","mark","_callee","store","pleromaFEState","token","wrap","_context","prev","next","localforage","getItem","sent","undefined","_","get","Error","dispatch","stop","_x","apply","this","arguments","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_1_id_5bb13616_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","views_loginvue_type_script_lang_js_","name","components","svg-icon","SvgIcon","data","loginForm","username","password","passwordType","loading","loadingPleromaFE","showDialog","redirect","pleromaFEToken","pleromaFEStateKey","watch","$route","handler","route","query","immediate","mounted","_mounted","asyncToGenerator_default","regenerator_default","localforage_default","lodash_default","abrupt","methods","showPwd","handleLogin","_this","loginData","getLoginData","$store","then","$router","push","path","catch","handlePleromaFELogin","_handlePleromaFELogin","_callee2","_context2","Object","pleromaAuth","t0","$message","error","lang","t","success","_this$loginForm$usern","split","_this$loginForm$usern2","slicedToArray_default","authHost","trim","window","location","host","component","componentNormalizer","_vm","_h","$createElement","_c","_self","staticClass","ref","attrs","model","auto-complete","label-position","_v","_s","$t","prop","icon-class","placeholder","type","value","callback","$$v","$set","expression","nativeOn","keyup","$event","indexOf","_k","keyCode","key","on","click","preventDefault","_e","options","__file","__webpack_exports__"],"mappings":"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","file":"static/js/chunk-4e7e.91b5e73a.js","sourcesContent":["import localforage from 'localforage'\nimport _ from 'lodash'\n\nconst pleromaFEStateKey = 'vuex-lz'\n\nexport const authenticateWithPleromaFE = async(store) => {\n const pleromaFEState = await localforage.getItem(pleromaFEStateKey)\n const token = _.get(pleromaFEState, 'oauth.userToken')\n\n if (token === undefined) {\n throw new Error('PleromaFE token not found')\n }\n\n await store.dispatch('LoginByPleromaFE', { token })\n}\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=1&id=5bb13616&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=1&id=5bb13616&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"login-container\"},[_c('el-form',{ref:\"loginForm\",staticClass:\"login-form\",attrs:{\"model\":_vm.loginForm,\"auto-complete\":\"on\",\"label-position\":\"left\"}},[_c('div',{staticClass:\"title-container\"},[_c('h3',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.title'))+\"\\n \")])]),_vm._v(\" \"),_c('el-form-item',{attrs:{\"prop\":\"username\"}},[_c('span',{staticClass:\"svg-container\"},[_c('svg-icon',{attrs:{\"icon-class\":\"user\"}})],1),_vm._v(\" \"),_c('el-input',{attrs:{\"placeholder\":_vm.$t('login.username'),\"name\":\"username\",\"type\":\"text\",\"auto-complete\":\"on\"},model:{value:(_vm.loginForm.username),callback:function ($$v) {_vm.$set(_vm.loginForm, \"username\", $$v)},expression:\"loginForm.username\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"omit-host-note\"},[_vm._v(_vm._s(_vm.$t('login.omitHostname')))]),_vm._v(\" \"),_c('el-form-item',{attrs:{\"prop\":\"password\"}},[_c('span',{staticClass:\"svg-container\"},[_c('svg-icon',{attrs:{\"icon-class\":\"password\"}})],1),_vm._v(\" \"),_c('el-input',{attrs:{\"type\":_vm.passwordType,\"placeholder\":_vm.$t('login.password'),\"name\":\"password\",\"auto-complete\":\"on\"},nativeOn:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.handleLogin($event)}},model:{value:(_vm.loginForm.password),callback:function ($$v) {_vm.$set(_vm.loginForm, \"password\", $$v)},expression:\"loginForm.password\"}}),_vm._v(\" \"),_c('span',{staticClass:\"show-pwd\",on:{\"click\":_vm.showPwd}},[_c('svg-icon',{attrs:{\"icon-class\":_vm.passwordType === 'password' ? 'eye' : 'eye-open'}})],1)],1),_vm._v(\" \"),_c('el-button',{staticClass:\"login-button\",attrs:{\"loading\":_vm.loading,\"type\":\"primary\"},nativeOn:{\"click\":function($event){$event.preventDefault();return _vm.handleLogin($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.logIn'))+\"\\n \")]),_vm._v(\" \"),(_vm.pleromaFEToken)?_c('el-button',{staticClass:\"login-button\",attrs:{\"loading\":_vm.loadingPleromaFE,\"type\":\"primary\"},nativeOn:{\"click\":function($event){$event.preventDefault();return _vm.handlePleromaFELogin($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.logInViaPleromaFE'))+\"\\n \")]):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=5bb13616&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\nimport style1 from \"./index.vue?vue&type=style&index=1&id=5bb13616&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5bb13616\",\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-7f9e.c49aa694.js b/priv/static/adminfe/static/js/chunk-5118.7c48ad58.js similarity index 99% rename from priv/static/adminfe/static/js/chunk-7f9e.c49aa694.js rename to priv/static/adminfe/static/js/chunk-5118.7c48ad58.js index 9fb60af23..2357e225d 100644 --- a/priv/static/adminfe/static/js/chunk-7f9e.c49aa694.js +++ b/priv/static/adminfe/static/js/chunk-5118.7c48ad58.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-7f9e"],{"+/fp":function(e,t){e.exports=class{strong(e){return e}em(e){return e}codespan(e){return e}del(e){return e}text(e){return e}link(e,t,s){return""+s}image(e,t,s){return""+s}br(){return""}}},"4MG8":function(e,t,s){const n=s("T9Ld"),r=s("66f7"),i=s("SbYC"),l=s("+/fp"),a=s("hyX7"),o=s("J7Ao"),{merge:h,checkSanitizeDeprecation:c,escape:p}=s("rUJ1"),{getDefaults:u,changeDefaults:g,defaults:d}=s("vbtb");function f(e,t,s){if(void 0===e||null===e)throw new Error("marked(): input parameter is undefined or null");if("string"!=typeof e)throw new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected");if(s||"function"==typeof t){s||(s=t,t=null),t=h({},f.defaults,t||{}),c(t);const i=t.highlight;let l,a,o=0;try{l=n.lex(e,t)}catch(e){return s(e)}a=l.length;const p=function(e){if(e)return t.highlight=i,s(e);let n;try{n=r.parse(l,t)}catch(t){e=t}return t.highlight=i,e?s(e):s(null,n)};if(!i||i.length<3)return p();if(delete t.highlight,!a)return p();for(;oAn error occurred:

"+p(e.message+"",!0)+"
";throw e}}f.options=f.setOptions=function(e){return h(f.defaults,e),g(f.defaults),f},f.getDefaults=u,f.defaults=d,f.Parser=r,f.parser=r.parse,f.Renderer=i,f.TextRenderer=l,f.Lexer=n,f.lexer=n.lex,f.InlineLexer=a,f.inlineLexer=a.output,f.Slugger=o,f.parse=f,e.exports=f},"66f7":function(e,t,s){const n=s("SbYC"),r=s("J7Ao"),i=s("hyX7"),l=s("+/fp"),{defaults:a}=s("vbtb"),{merge:o,unescape:h}=s("rUJ1");e.exports=class e{constructor(e){this.tokens=[],this.token=null,this.options=e||a,this.options.renderer=this.options.renderer||new n,this.renderer=this.options.renderer,this.renderer.options=this.options,this.slugger=new r}static parse(t,s){return new e(s).parse(t)}parse(e){this.inline=new i(e.links,this.options),this.inlineText=new i(e.links,o({},this.options,{renderer:new l})),this.tokens=e.reverse();let t="";for(;this.next();)t+=this.tok();return t}next(){return this.token=this.tokens.pop(),this.token}peek(){return this.tokens[this.tokens.length-1]||0}parseText(){let e=this.token.text;for(;"text"===this.peek().type;)e+="\n"+this.next().text;return this.inline.output(e)}tok(){let e="";switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,h(this.inlineText.output(this.token.text)),this.slugger);case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":{let t,s,n,r,i="";for(n="",t=0;t?@[\]^`{|}~]/g,"").replace(/\s/g,"-");if(this.seen.hasOwnProperty(t)){const e=t;do{this.seen[e]++,t=e+"-"+this.seen[e]}while(this.seen.hasOwnProperty(t))}return this.seen[t]=0,t}}},SbYC:function(e,t,s){const{defaults:n}=s("vbtb"),{cleanUrl:r,escape:i}=s("rUJ1");e.exports=class{constructor(e){this.options=e||n}code(e,t,s){const n=(t||"").match(/\S*/)[0];if(this.options.highlight){const t=this.options.highlight(e,n);null!=t&&t!==e&&(s=!0,e=t)}return n?'
'+(s?e:i(e,!0))+"
\n":"
"+(s?e:i(e,!0))+"
"}blockquote(e){return"
\n"+e+"
\n"}html(e){return e}heading(e,t,s,n){return this.options.headerIds?"'+e+"\n":""+e+"\n"}hr(){return this.options.xhtml?"
\n":"
\n"}list(e,t,s){const n=t?"ol":"ul";return"<"+n+(t&&1!==s?' start="'+s+'"':"")+">\n"+e+"\n"}listitem(e){return"
  • "+e+"
  • \n"}checkbox(e){return" "}paragraph(e){return"

    "+e+"

    \n"}table(e,t){return t&&(t=""+t+""),"\n\n"+e+"\n"+t+"
    \n"}tablerow(e){return"\n"+e+"\n"}tablecell(e,t){const s=t.header?"th":"td";return(t.align?"<"+s+' align="'+t.align+'">':"<"+s+">")+e+"\n"}strong(e){return""+e+""}em(e){return""+e+""}codespan(e){return""+e+""}br(){return this.options.xhtml?"
    ":"
    "}del(e){return""+e+""}link(e,t,s){if(null===(e=r(this.options.sanitize,this.options.baseUrl,e)))return s;let n='"}image(e,t,s){if(null===(e=r(this.options.sanitize,this.options.baseUrl,e)))return s;let n=''+s+'":">"}text(e){return e}}},T9Ld:function(e,t,s){const{defaults:n}=s("vbtb"),{block:r}=s("e56X"),{rtrim:i,splitCells:l,escape:a}=s("rUJ1");e.exports=class e{constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||n,this.rules=r.normal,this.options.pedantic?this.rules=r.pedantic:this.options.gfm&&(this.rules=r.gfm)}static get rules(){return r}static lex(t,s){return new e(s).lex(t)}lex(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," "),this.token(e,!0)}token(e,t){let s,n,o,h,c,p,u,g,d,f,b,k,m,x,_,w;for(e=e.replace(/^ +$/gm,"");e;)if((o=this.rules.newline.exec(e))&&(e=e.substring(o[0].length),o[0].length>1&&this.tokens.push({type:"space"})),o=this.rules.code.exec(e)){const t=this.tokens[this.tokens.length-1];e=e.substring(o[0].length),t&&"paragraph"===t.type?t.text+="\n"+o[0].trimRight():(o=o[0].replace(/^ {4}/gm,""),this.tokens.push({type:"code",codeBlockStyle:"indented",text:this.options.pedantic?o:i(o,"\n")}))}else if(o=this.rules.fences.exec(e))e=e.substring(o[0].length),this.tokens.push({type:"code",lang:o[2]?o[2].trim():o[2],text:o[3]||""});else if(o=this.rules.heading.exec(e))e=e.substring(o[0].length),this.tokens.push({type:"heading",depth:o[1].length,text:o[2]});else if((o=this.rules.nptable.exec(e))&&(p={type:"table",header:l(o[1].replace(/^ *| *\| *$/g,"")),align:o[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:o[3]?o[3].replace(/\n$/,"").split("\n"):[]}).header.length===p.align.length){for(e=e.substring(o[0].length),b=0;b ?/gm,""),this.token(o,t),this.tokens.push({type:"blockquote_end"});else if(o=this.rules.list.exec(e)){for(e=e.substring(o[0].length),u={type:"list_start",ordered:x=(h=o[2]).length>1,start:x?+h:"",loose:!1},this.tokens.push(u),g=[],s=!1,m=(o=o[0].match(this.rules.item)).length,b=0;b1?1===c.length:c.length>1||this.options.smartLists&&c!==h)&&(e=o.slice(b+1).join("\n")+e,b=m-1)),n=s||/\n\n(?!\s*$)/.test(p),b!==m-1&&(s="\n"===p.charAt(p.length-1),n||(n=s)),n&&(u.loose=!0),w=void 0,(_=/^\[[ xX]\] /.test(p))&&(w=" "!==p[1],p=p.replace(/^\[[ xX]\] +/,"")),d={type:"list_item_start",task:_,checked:w,loose:n},g.push(d),this.tokens.push(d),this.token(p,!1),this.tokens.push({type:"list_item_end"});if(u.loose)for(m=g.length,b=0;b ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3})(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:"^ {0,3}(?:<(script|pre|style)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?\\?>\\n*|\\n*|\\n*|)[\\s\\S]*?(?:\\n{2,}|$)|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$))",def:/^ {0,3}\[(label)\]: *\n? *]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,nptable:n,table:n,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\[\[\]]|[^\[\]])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};l.def=r(l.def).replace("label",l._label).replace("title",l._title).getRegex(),l.bullet=/(?:[*+-]|\d{1,9}\.)/,l.item=/^( *)(bull) ?[^\n]*(?:\n(?!\1bull ?)[^\n]*)*/,l.item=r(l.item,"gm").replace(/bull/g,l.bullet).getRegex(),l.list=r(l.list).replace(/bull/g,l.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+l.def.source+")").getRegex(),l._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",l._comment=//,l.html=r(l.html,"i").replace("comment",l._comment).replace("tag",l._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),l.paragraph=r(l._paragraph).replace("hr",l.hr).replace("heading"," {0,3}#{1,6} +").replace("|lheading","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}|~{3,})[^`\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|!--)").replace("tag",l._tag).getRegex(),l.blockquote=r(l.blockquote).replace("paragraph",l.paragraph).getRegex(),l.normal=i({},l),l.gfm=i({},l.normal,{nptable:/^ *([^|\n ].*\|.*)\n *([-:]+ *\|[-| :]*)(?:\n((?:.*[^>\n ].*(?:\n|$))*)\n*|$)/,table:/^ *\|(.+)\n *\|?( *[-:]+[-| :]*)(?:\n((?: *[^>\n ].*(?:\n|$))*)\n*|$)/}),l.pedantic=i({},l.normal,{html:r("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",l._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/,fences:n,paragraph:r(l.normal._paragraph).replace("hr",l.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",l.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});const a={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:n,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,nolink:/^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,strong:/^__([^\s_])__(?!_)|^\*\*([^\s*])\*\*(?!\*)|^__([^\s][\s\S]*?[^\s])__(?!_)|^\*\*([^\s][\s\S]*?[^\s])\*\*(?!\*)/,em:/^_([^\s_])_(?!_)|^\*([^\s*<\[])\*(?!\*)|^_([^\s<][\s\S]*?[^\s_])_(?!_|[^\spunctuation])|^_([^\s_<][\s\S]*?[^\s])_(?!_|[^\spunctuation])|^\*([^\s<"][\s\S]*?[^\s\*])\*(?!\*|[^\spunctuation])|^\*([^\s*"<\[][\s\S]*?[^\s])\*(?!\*)/,code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:n,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\?@\\[^_{|}~"};a.em=r(a.em).replace(/punctuation/g,a._punctuation).getRegex(),a._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,a._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,a._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,a.autolink=r(a.autolink).replace("scheme",a._scheme).replace("email",a._email).getRegex(),a._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,a.tag=r(a.tag).replace("comment",l._comment).replace("attribute",a._attribute).getRegex(),a._label=/(?:\[[^\[\]]*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,a._href=/<(?:\\[<>]?|[^\s<>\\])*>|[^\s\x00-\x1f]*/,a._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,a.link=r(a.link).replace("label",a._label).replace("href",a._href).replace("title",a._title).getRegex(),a.reflink=r(a.reflink).replace("label",a._label).getRegex(),a.normal=i({},a),a.pedantic=i({},a.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/,link:r(/^!?\[(label)\]\((.*?)\)/).replace("label",a._label).getRegex(),reflink:r(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",a._label).getRegex()}),a.gfm=i({},a.normal,{escape:r(a.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^~+(?=\S)([\s\S]*?\S)~+/,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\/i.test(o[0])&&(this.inLink=!1),!this.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(o[0])?this.inRawBlock=!0:this.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(o[0])&&(this.inRawBlock=!1),t=t.substring(o[0].length),c+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(o[0]):a(o[0]):o[0];else if(o=this.rules.link.exec(t)){const n=l(o[2],"()");if(n>-1){const e=(0===o[0].indexOf("!")?5:4)+o[1].length+n;o[2]=o[2].substring(0,n),o[0]=o[0].substring(0,e).trim(),o[3]=""}t=t.substring(o[0].length),this.inLink=!0,r=o[2],this.options.pedantic?(s=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(r))?(r=s[1],i=s[3]):i="":i=o[3]?o[3].slice(1,-1):"",r=r.trim().replace(/^<([\s\S]*)>$/,"$1"),c+=this.outputLink(o,{href:e.escapes(r),title:e.escapes(i)}),this.inLink=!1}else if((o=this.rules.reflink.exec(t))||(o=this.rules.nolink.exec(t))){if(t=t.substring(o[0].length),s=(o[2]||o[1]).replace(/\s+/g," "),!(s=this.links[s.toLowerCase()])||!s.href){c+=o[0].charAt(0),t=o[0].substring(1)+t;continue}this.inLink=!0,c+=this.outputLink(o,s),this.inLink=!1}else if(o=this.rules.strong.exec(t))t=t.substring(o[0].length),c+=this.renderer.strong(this.output(o[4]||o[3]||o[2]||o[1]));else if(o=this.rules.em.exec(t))t=t.substring(o[0].length),c+=this.renderer.em(this.output(o[6]||o[5]||o[4]||o[3]||o[2]||o[1]));else if(o=this.rules.code.exec(t))t=t.substring(o[0].length),c+=this.renderer.codespan(a(o[2].trim(),!0));else if(o=this.rules.br.exec(t))t=t.substring(o[0].length),c+=this.renderer.br();else if(o=this.rules.del.exec(t))t=t.substring(o[0].length),c+=this.renderer.del(this.output(o[1]));else if(o=this.rules.autolink.exec(t))t=t.substring(o[0].length),r="@"===o[2]?"mailto:"+(n=a(this.mangle(o[1]))):n=a(o[1]),c+=this.renderer.link(r,null,n);else if(this.inLink||!(o=this.rules.url.exec(t))){if(o=this.rules.text.exec(t))t=t.substring(o[0].length),this.inRawBlock?c+=this.renderer.text(this.options.sanitize?this.options.sanitizer?this.options.sanitizer(o[0]):a(o[0]):o[0]):c+=this.renderer.text(a(this.smartypants(o[0])));else if(t)throw new Error("Infinite loop on byte: "+t.charCodeAt(0))}else{if("@"===o[2])r="mailto:"+(n=a(o[0]));else{do{h=o[0],o[0]=this.rules._backpedal.exec(o[0])[0]}while(h!==o[0]);n=a(o[0]),r="www."===o[1]?"http://"+n:n}t=t.substring(o[0].length),c+=this.renderer.link(r,null,n)}return c}static escapes(t){return t?t.replace(e.rules._escapes,"$1"):t}outputLink(e,t){const s=t.href,n=t.title?a(t.title):null;return"!"!==e[0].charAt(0)?this.renderer.link(s,n,this.output(e[1])):this.renderer.image(s,n,a(e[1]))}smartypants(e){return this.options.smartypants?e.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…"):e}mangle(e){if(!this.options.mangle)return e;const t=e.length;let s,n="",r=0;for(;r.5&&(s="x"+s.toString(16)),n+="&#"+s+";";return n}}},rUJ1:function(e,t){const s=/[&<>"']/,n=/[&<>"']/g,r=/[<>"']|&(?!#?\w+;)/,i=/[<>"']|&(?!#?\w+;)/g,l={"&":"&","<":"<",">":">",'"':""","'":"'"},a=e=>l[e];const o=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function h(e){return e.replace(o,(e,t)=>"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):"")}const c=/(^|[^\[])\^/g;const p=/[^\w:]/g,u=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;const g={},d=/^[^:]+:\/*[^/]*$/,f=/^([^:]+:)[\s\S]*$/,b=/^([^:]+:\/*[^/]*)[\s\S]*$/;function k(e,t){g[" "+e]||(d.test(e)?g[" "+e]=e+"/":g[" "+e]=m(e,"/",!0));const s=-1===(e=g[" "+e]).indexOf(":");return"//"===t.substring(0,2)?s?t:e.replace(f,"$1")+t:"/"===t.charAt(0)?s?t:e.replace(b,"$1")+t:e+t}function m(e,t,s){const n=e.length;if(0===n)return"";let r=0;for(;r(n=(n=n.source||n).replace(c,"$1"),e=e.replace(t,n),s),getRegex:()=>new RegExp(e,t)};return s},cleanUrl:function(e,t,s){if(e){let e;try{e=decodeURIComponent(h(s)).replace(p,"").toLowerCase()}catch(e){return null}if(0===e.indexOf("javascript:")||0===e.indexOf("vbscript:")||0===e.indexOf("data:"))return null}t&&!u.test(s)&&(s=k(t,s));try{s=encodeURI(s).replace(/%25/g,"%")}catch(e){return null}return s},resolveUrl:k,noopTest:{exec:function(){}},merge:function(e){let t,s,n=1;for(;n{let n=!1,r=t;for(;--r>=0&&"\\"===s[r];)n=!n;return n?"|":" |"}).split(/ \|/);let n=0;if(s.length>t)s.splice(t);else for(;s.lengthAn error occurred:

    "+p(e.message+"",!0)+"
    ";throw e}}f.options=f.setOptions=function(e){return h(f.defaults,e),g(f.defaults),f},f.getDefaults=u,f.defaults=d,f.Parser=r,f.parser=r.parse,f.Renderer=i,f.TextRenderer=l,f.Lexer=n,f.lexer=n.lex,f.InlineLexer=a,f.inlineLexer=a.output,f.Slugger=o,f.parse=f,e.exports=f},"66f7":function(e,t,s){const n=s("SbYC"),r=s("J7Ao"),i=s("hyX7"),l=s("+/fp"),{defaults:a}=s("vbtb"),{merge:o,unescape:h}=s("rUJ1");e.exports=class e{constructor(e){this.tokens=[],this.token=null,this.options=e||a,this.options.renderer=this.options.renderer||new n,this.renderer=this.options.renderer,this.renderer.options=this.options,this.slugger=new r}static parse(t,s){return new e(s).parse(t)}parse(e){this.inline=new i(e.links,this.options),this.inlineText=new i(e.links,o({},this.options,{renderer:new l})),this.tokens=e.reverse();let t="";for(;this.next();)t+=this.tok();return t}next(){return this.token=this.tokens.pop(),this.token}peek(){return this.tokens[this.tokens.length-1]||0}parseText(){let e=this.token.text;for(;"text"===this.peek().type;)e+="\n"+this.next().text;return this.inline.output(e)}tok(){let e="";switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,h(this.inlineText.output(this.token.text)),this.slugger);case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":{let t,s,n,r,i="";for(n="",t=0;t?@[\]^`{|}~]/g,"").replace(/\s/g,"-");if(this.seen.hasOwnProperty(t)){const e=t;do{this.seen[e]++,t=e+"-"+this.seen[e]}while(this.seen.hasOwnProperty(t))}return this.seen[t]=0,t}}},SbYC:function(e,t,s){const{defaults:n}=s("vbtb"),{cleanUrl:r,escape:i}=s("rUJ1");e.exports=class{constructor(e){this.options=e||n}code(e,t,s){const n=(t||"").match(/\S*/)[0];if(this.options.highlight){const t=this.options.highlight(e,n);null!=t&&t!==e&&(s=!0,e=t)}return n?'
    '+(s?e:i(e,!0))+"
    \n":"
    "+(s?e:i(e,!0))+"
    "}blockquote(e){return"
    \n"+e+"
    \n"}html(e){return e}heading(e,t,s,n){return this.options.headerIds?"'+e+"\n":""+e+"\n"}hr(){return this.options.xhtml?"
    \n":"
    \n"}list(e,t,s){const n=t?"ol":"ul";return"<"+n+(t&&1!==s?' start="'+s+'"':"")+">\n"+e+"\n"}listitem(e){return"
  • "+e+"
  • \n"}checkbox(e){return" "}paragraph(e){return"

    "+e+"

    \n"}table(e,t){return t&&(t=""+t+""),"\n\n"+e+"\n"+t+"
    \n"}tablerow(e){return"\n"+e+"\n"}tablecell(e,t){const s=t.header?"th":"td";return(t.align?"<"+s+' align="'+t.align+'">':"<"+s+">")+e+"\n"}strong(e){return""+e+""}em(e){return""+e+""}codespan(e){return""+e+""}br(){return this.options.xhtml?"
    ":"
    "}del(e){return""+e+""}link(e,t,s){if(null===(e=r(this.options.sanitize,this.options.baseUrl,e)))return s;let n='
    "}image(e,t,s){if(null===(e=r(this.options.sanitize,this.options.baseUrl,e)))return s;let n=''+s+'":">"}text(e){return e}}},T9Ld:function(e,t,s){const{defaults:n}=s("vbtb"),{block:r}=s("e56X"),{rtrim:i,splitCells:l,escape:a}=s("rUJ1");e.exports=class e{constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||n,this.rules=r.normal,this.options.pedantic?this.rules=r.pedantic:this.options.gfm&&(this.rules=r.gfm)}static get rules(){return r}static lex(t,s){return new e(s).lex(t)}lex(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," "),this.token(e,!0)}token(e,t){let s,n,o,h,c,p,u,g,d,f,b,k,m,x,_,w;for(e=e.replace(/^ +$/gm,"");e;)if((o=this.rules.newline.exec(e))&&(e=e.substring(o[0].length),o[0].length>1&&this.tokens.push({type:"space"})),o=this.rules.code.exec(e)){const t=this.tokens[this.tokens.length-1];e=e.substring(o[0].length),t&&"paragraph"===t.type?t.text+="\n"+o[0].trimRight():(o=o[0].replace(/^ {4}/gm,""),this.tokens.push({type:"code",codeBlockStyle:"indented",text:this.options.pedantic?o:i(o,"\n")}))}else if(o=this.rules.fences.exec(e))e=e.substring(o[0].length),this.tokens.push({type:"code",lang:o[2]?o[2].trim():o[2],text:o[3]||""});else if(o=this.rules.heading.exec(e))e=e.substring(o[0].length),this.tokens.push({type:"heading",depth:o[1].length,text:o[2]});else if((o=this.rules.nptable.exec(e))&&(p={type:"table",header:l(o[1].replace(/^ *| *\| *$/g,"")),align:o[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:o[3]?o[3].replace(/\n$/,"").split("\n"):[]}).header.length===p.align.length){for(e=e.substring(o[0].length),b=0;b ?/gm,""),this.token(o,t),this.tokens.push({type:"blockquote_end"});else if(o=this.rules.list.exec(e)){for(e=e.substring(o[0].length),u={type:"list_start",ordered:x=(h=o[2]).length>1,start:x?+h:"",loose:!1},this.tokens.push(u),g=[],s=!1,m=(o=o[0].match(this.rules.item)).length,b=0;b1?1===c.length:c.length>1||this.options.smartLists&&c!==h)&&(e=o.slice(b+1).join("\n")+e,b=m-1)),n=s||/\n\n(?!\s*$)/.test(p),b!==m-1&&(s="\n"===p.charAt(p.length-1),n||(n=s)),n&&(u.loose=!0),w=void 0,(_=/^\[[ xX]\] /.test(p))&&(w=" "!==p[1],p=p.replace(/^\[[ xX]\] +/,"")),d={type:"list_item_start",task:_,checked:w,loose:n},g.push(d),this.tokens.push(d),this.token(p,!1),this.tokens.push({type:"list_item_end"});if(u.loose)for(m=g.length,b=0;b ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3})(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:"^ {0,3}(?:<(script|pre|style)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?\\?>\\n*|\\n*|\\n*|)[\\s\\S]*?(?:\\n{2,}|$)|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$))",def:/^ {0,3}\[(label)\]: *\n? *]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,nptable:n,table:n,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\[\[\]]|[^\[\]])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};l.def=r(l.def).replace("label",l._label).replace("title",l._title).getRegex(),l.bullet=/(?:[*+-]|\d{1,9}\.)/,l.item=/^( *)(bull) ?[^\n]*(?:\n(?!\1bull ?)[^\n]*)*/,l.item=r(l.item,"gm").replace(/bull/g,l.bullet).getRegex(),l.list=r(l.list).replace(/bull/g,l.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+l.def.source+")").getRegex(),l._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",l._comment=//,l.html=r(l.html,"i").replace("comment",l._comment).replace("tag",l._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),l.paragraph=r(l._paragraph).replace("hr",l.hr).replace("heading"," {0,3}#{1,6} +").replace("|lheading","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}|~{3,})[^`\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|!--)").replace("tag",l._tag).getRegex(),l.blockquote=r(l.blockquote).replace("paragraph",l.paragraph).getRegex(),l.normal=i({},l),l.gfm=i({},l.normal,{nptable:/^ *([^|\n ].*\|.*)\n *([-:]+ *\|[-| :]*)(?:\n((?:.*[^>\n ].*(?:\n|$))*)\n*|$)/,table:/^ *\|(.+)\n *\|?( *[-:]+[-| :]*)(?:\n((?: *[^>\n ].*(?:\n|$))*)\n*|$)/}),l.pedantic=i({},l.normal,{html:r("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",l._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/,fences:n,paragraph:r(l.normal._paragraph).replace("hr",l.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",l.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});const a={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:n,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,nolink:/^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,strong:/^__([^\s_])__(?!_)|^\*\*([^\s*])\*\*(?!\*)|^__([^\s][\s\S]*?[^\s])__(?!_)|^\*\*([^\s][\s\S]*?[^\s])\*\*(?!\*)/,em:/^_([^\s_])_(?!_)|^\*([^\s*<\[])\*(?!\*)|^_([^\s<][\s\S]*?[^\s_])_(?!_|[^\spunctuation])|^_([^\s_<][\s\S]*?[^\s])_(?!_|[^\spunctuation])|^\*([^\s<"][\s\S]*?[^\s\*])\*(?!\*|[^\spunctuation])|^\*([^\s*"<\[][\s\S]*?[^\s])\*(?!\*)/,code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:n,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\?@\\[^_{|}~"};a.em=r(a.em).replace(/punctuation/g,a._punctuation).getRegex(),a._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,a._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,a._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,a.autolink=r(a.autolink).replace("scheme",a._scheme).replace("email",a._email).getRegex(),a._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,a.tag=r(a.tag).replace("comment",l._comment).replace("attribute",a._attribute).getRegex(),a._label=/(?:\[[^\[\]]*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,a._href=/<(?:\\[<>]?|[^\s<>\\])*>|[^\s\x00-\x1f]*/,a._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,a.link=r(a.link).replace("label",a._label).replace("href",a._href).replace("title",a._title).getRegex(),a.reflink=r(a.reflink).replace("label",a._label).getRegex(),a.normal=i({},a),a.pedantic=i({},a.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/,link:r(/^!?\[(label)\]\((.*?)\)/).replace("label",a._label).getRegex(),reflink:r(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",a._label).getRegex()}),a.gfm=i({},a.normal,{escape:r(a.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^~+(?=\S)([\s\S]*?\S)~+/,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\/i.test(o[0])&&(this.inLink=!1),!this.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(o[0])?this.inRawBlock=!0:this.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(o[0])&&(this.inRawBlock=!1),t=t.substring(o[0].length),c+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(o[0]):a(o[0]):o[0];else if(o=this.rules.link.exec(t)){const n=l(o[2],"()");if(n>-1){const e=(0===o[0].indexOf("!")?5:4)+o[1].length+n;o[2]=o[2].substring(0,n),o[0]=o[0].substring(0,e).trim(),o[3]=""}t=t.substring(o[0].length),this.inLink=!0,r=o[2],this.options.pedantic?(s=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(r))?(r=s[1],i=s[3]):i="":i=o[3]?o[3].slice(1,-1):"",r=r.trim().replace(/^<([\s\S]*)>$/,"$1"),c+=this.outputLink(o,{href:e.escapes(r),title:e.escapes(i)}),this.inLink=!1}else if((o=this.rules.reflink.exec(t))||(o=this.rules.nolink.exec(t))){if(t=t.substring(o[0].length),s=(o[2]||o[1]).replace(/\s+/g," "),!(s=this.links[s.toLowerCase()])||!s.href){c+=o[0].charAt(0),t=o[0].substring(1)+t;continue}this.inLink=!0,c+=this.outputLink(o,s),this.inLink=!1}else if(o=this.rules.strong.exec(t))t=t.substring(o[0].length),c+=this.renderer.strong(this.output(o[4]||o[3]||o[2]||o[1]));else if(o=this.rules.em.exec(t))t=t.substring(o[0].length),c+=this.renderer.em(this.output(o[6]||o[5]||o[4]||o[3]||o[2]||o[1]));else if(o=this.rules.code.exec(t))t=t.substring(o[0].length),c+=this.renderer.codespan(a(o[2].trim(),!0));else if(o=this.rules.br.exec(t))t=t.substring(o[0].length),c+=this.renderer.br();else if(o=this.rules.del.exec(t))t=t.substring(o[0].length),c+=this.renderer.del(this.output(o[1]));else if(o=this.rules.autolink.exec(t))t=t.substring(o[0].length),r="@"===o[2]?"mailto:"+(n=a(this.mangle(o[1]))):n=a(o[1]),c+=this.renderer.link(r,null,n);else if(this.inLink||!(o=this.rules.url.exec(t))){if(o=this.rules.text.exec(t))t=t.substring(o[0].length),this.inRawBlock?c+=this.renderer.text(this.options.sanitize?this.options.sanitizer?this.options.sanitizer(o[0]):a(o[0]):o[0]):c+=this.renderer.text(a(this.smartypants(o[0])));else if(t)throw new Error("Infinite loop on byte: "+t.charCodeAt(0))}else{if("@"===o[2])r="mailto:"+(n=a(o[0]));else{do{h=o[0],o[0]=this.rules._backpedal.exec(o[0])[0]}while(h!==o[0]);n=a(o[0]),r="www."===o[1]?"http://"+n:n}t=t.substring(o[0].length),c+=this.renderer.link(r,null,n)}return c}static escapes(t){return t?t.replace(e.rules._escapes,"$1"):t}outputLink(e,t){const s=t.href,n=t.title?a(t.title):null;return"!"!==e[0].charAt(0)?this.renderer.link(s,n,this.output(e[1])):this.renderer.image(s,n,a(e[1]))}smartypants(e){return this.options.smartypants?e.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…"):e}mangle(e){if(!this.options.mangle)return e;const t=e.length;let s,n="",r=0;for(;r.5&&(s="x"+s.toString(16)),n+="&#"+s+";";return n}}},rUJ1:function(e,t){const s=/[&<>"']/,n=/[&<>"']/g,r=/[<>"']|&(?!#?\w+;)/,i=/[<>"']|&(?!#?\w+;)/g,l={"&":"&","<":"<",">":">",'"':""","'":"'"},a=e=>l[e];const o=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function h(e){return e.replace(o,(e,t)=>"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):"")}const c=/(^|[^\[])\^/g;const p=/[^\w:]/g,u=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;const g={},d=/^[^:]+:\/*[^/]*$/,f=/^([^:]+:)[\s\S]*$/,b=/^([^:]+:\/*[^/]*)[\s\S]*$/;function k(e,t){g[" "+e]||(d.test(e)?g[" "+e]=e+"/":g[" "+e]=m(e,"/",!0));const s=-1===(e=g[" "+e]).indexOf(":");return"//"===t.substring(0,2)?s?t:e.replace(f,"$1")+t:"/"===t.charAt(0)?s?t:e.replace(b,"$1")+t:e+t}function m(e,t,s){const n=e.length;if(0===n)return"";let r=0;for(;r(n=(n=n.source||n).replace(c,"$1"),e=e.replace(t,n),s),getRegex:()=>new RegExp(e,t)};return s},cleanUrl:function(e,t,s){if(e){let e;try{e=decodeURIComponent(h(s)).replace(p,"").toLowerCase()}catch(e){return null}if(0===e.indexOf("javascript:")||0===e.indexOf("vbscript:")||0===e.indexOf("data:"))return null}t&&!u.test(s)&&(s=k(t,s));try{s=encodeURI(s).replace(/%25/g,"%")}catch(e){return null}return s},resolveUrl:k,noopTest:{exec:function(){}},merge:function(e){let t,s,n=1;for(;n{let n=!1,r=t;for(;--r>=0&&"\\"===s[r];)n=!n;return n?"|":" |"}).split(/ \|/);let n=0;if(s.length>t)s.splice(t);else for(;s.length","\"","'","getEscapeReplacement","unescapeTest","_","n","String","fromCharCode","parseInt","caret","nonWordAndColonTest","originIndependentUrl","baseUrls","justDomain","protocol","domain","resolveUrl","base","relativeBase","str","c","invert","suffLen","currChar","substr","encode","regex","obj","name","val","prot","decodeURIComponent","encodeURI","target","key","arguments","tableRow","count","offset","curr","splice","warn","newDefaults"],"mappings":"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","file":"static/js/chunk-7f9e.c49aa694.js","sourcesContent":["/**\n * TextRenderer\n * returns only the textual part of the token\n */\nmodule.exports = class TextRenderer {\n // no need for block level renderers\n strong(text) {\n return text;\n }\n\n em(text) {\n return text;\n }\n\n codespan(text) {\n return text;\n }\n\n del(text) {\n return text;\n }\n\n text(text) {\n return text;\n }\n\n link(href, title, text) {\n return '' + text;\n }\n\n image(href, title, text) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n};\n","const Lexer = require('./Lexer.js');\nconst Parser = require('./Parser.js');\nconst Renderer = require('./Renderer.js');\nconst TextRenderer = require('./TextRenderer.js');\nconst InlineLexer = require('./InlineLexer.js');\nconst Slugger = require('./Slugger.js');\nconst {\n merge,\n checkSanitizeDeprecation,\n escape\n} = require('./helpers.js');\nconst {\n getDefaults,\n changeDefaults,\n defaults\n} = require('./defaults.js');\n\n/**\n * Marked\n */\nfunction marked(src, opt, callback) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked(): input parameter is undefined or null');\n }\n if (typeof src !== 'string') {\n throw new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected');\n }\n\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n const highlight = opt.highlight;\n let tokens,\n pending,\n i = 0;\n\n try {\n tokens = Lexer.lex(src, opt);\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n const done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n let out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occurred:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n changeDefaults(marked.defaults);\n return marked;\n};\n\nmarked.getDefaults = getDefaults;\n\nmarked.defaults = defaults;\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\nmarked.TextRenderer = TextRenderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.Slugger = Slugger;\n\nmarked.parse = marked;\n\nmodule.exports = marked;\n","const Renderer = require('./Renderer.js');\nconst Slugger = require('./Slugger.js');\nconst InlineLexer = require('./InlineLexer.js');\nconst TextRenderer = require('./TextRenderer.js');\nconst { defaults } = require('./defaults.js');\nconst {\n merge,\n unescape\n} = require('./helpers.js');\n\n/**\n * Parsing & Compiling\n */\nmodule.exports = class Parser {\n constructor(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || defaults;\n this.options.renderer = this.options.renderer || new Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.slugger = new Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens, options) {\n const parser = new Parser(options);\n return parser.parse(tokens);\n };\n\n /**\n * Parse Loop\n */\n parse(tokens) {\n this.inline = new InlineLexer(tokens.links, this.options);\n // use an InlineLexer with a TextRenderer to extract pure text\n this.inlineText = new InlineLexer(\n tokens.links,\n merge({}, this.options, { renderer: new TextRenderer() })\n );\n this.tokens = tokens.reverse();\n\n let out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n };\n\n /**\n * Next Token\n */\n next() {\n this.token = this.tokens.pop();\n return this.token;\n };\n\n /**\n * Preview Next Token\n */\n peek() {\n return this.tokens[this.tokens.length - 1] || 0;\n };\n\n /**\n * Parse Text Tokens\n */\n parseText() {\n let body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n };\n\n /**\n * Parse Current Token\n */\n tok() {\n let body = '';\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n unescape(this.inlineText.output(this.token.text)),\n this.slugger);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n let header = '',\n i,\n row,\n cell,\n j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n body = '';\n const ordered = this.token.ordered,\n start = this.token.start;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered, start);\n }\n case 'list_item_start': {\n body = '';\n const loose = this.token.loose;\n const checked = this.token.checked;\n const task = this.token.task;\n\n if (this.token.task) {\n if (loose) {\n if (this.peek().type === 'text') {\n const nextToken = this.peek();\n nextToken.text = this.renderer.checkbox(checked) + ' ' + nextToken.text;\n } else {\n this.tokens.push({\n type: 'text',\n text: this.renderer.checkbox(checked)\n });\n }\n } else {\n body += this.renderer.checkbox(checked);\n }\n }\n\n while (this.next().type !== 'list_item_end') {\n body += !loose && this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n return this.renderer.listitem(body, task, checked);\n }\n case 'html': {\n // TODO parse inline content if parameter markdown=1\n return this.renderer.html(this.token.text);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n default: {\n const errMsg = 'Token with \"' + this.token.type + '\" type was not found.';\n if (this.options.silent) {\n console.log(errMsg);\n } else {\n throw new Error(errMsg);\n }\n }\n }\n };\n};\n","/**\n * Slugger generates header id\n */\nmodule.exports = class Slugger {\n constructor() {\n this.seen = {};\n }\n\n /**\n * Convert string to unique id\n */\n slug(value) {\n let slug = value\n .toLowerCase()\n .trim()\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n\n if (this.seen.hasOwnProperty(slug)) {\n const originalSlug = slug;\n do {\n this.seen[originalSlug]++;\n slug = originalSlug + '-' + this.seen[originalSlug];\n } while (this.seen.hasOwnProperty(slug));\n }\n this.seen[slug] = 0;\n\n return slug;\n };\n};\n","const { defaults } = require('./defaults.js');\nconst {\n cleanUrl,\n escape\n} = require('./helpers.js');\n\n/**\n * Renderer\n */\nmodule.exports = class Renderer {\n constructor(options) {\n this.options = options || defaults;\n }\n\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/\\S*/)[0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n        + (escaped ? code : escape(code, true))\n        + '
    ';\n }\n\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '
    \\n';\n };\n\n blockquote(quote) {\n return '
    \\n' + quote + '
    \\n';\n };\n\n html(html) {\n return html;\n };\n\n heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n return ''\n + text\n + '\\n';\n }\n // ignore IDs\n return '' + text + '\\n';\n };\n\n hr() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n };\n\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n };\n\n listitem(text) {\n return '
  • ' + text + '
  • \\n';\n };\n\n checkbox(checked) {\n return ' ';\n };\n\n paragraph(text) {\n return '

    ' + text + '

    \\n';\n };\n\n table(header, body) {\n if (body) body = '' + body + '';\n\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n };\n\n tablerow(content) {\n return '\\n' + content + '\\n';\n };\n\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? '<' + type + ' align=\"' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n };\n\n // span level renderer\n strong(text) {\n return '' + text + '';\n };\n\n em(text) {\n return '' + text + '';\n };\n\n codespan(text) {\n return '' + text + '';\n };\n\n br() {\n return this.options.xhtml ? '
    ' : '
    ';\n };\n\n del(text) {\n return '' + text + '';\n };\n\n link(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n let out = '
    ';\n return out;\n };\n\n image(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n\n let out = '\"'' : '>';\n return out;\n };\n\n text(text) {\n return text;\n };\n};\n","const { defaults } = require('./defaults.js');\nconst { block } = require('./rules.js');\nconst {\n rtrim,\n splitCells,\n escape\n} = require('./helpers.js');\n\n/**\n * Block Lexer\n */\nmodule.exports = class Lexer {\n constructor(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || defaults;\n this.rules = block.normal;\n\n if (this.options.pedantic) {\n this.rules = block.pedantic;\n } else if (this.options.gfm) {\n this.rules = block.gfm;\n }\n }\n\n /**\n * Expose Block Rules\n */\n static get rules() {\n return block;\n }\n\n /**\n * Static Lex Method\n */\n static lex(src, options) {\n const lexer = new Lexer(options);\n return lexer.lex(src);\n };\n\n /**\n * Preprocessing\n */\n lex(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ');\n\n return this.token(src, true);\n };\n\n /**\n * Lexing\n */\n token(src, top) {\n src = src.replace(/^ +$/gm, '');\n let next,\n loose,\n cap,\n bull,\n b,\n item,\n listStart,\n listItems,\n t,\n space,\n i,\n tag,\n l,\n isordered,\n istask,\n ischecked;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n const lastToken = this.tokens[this.tokens.length - 1];\n src = src.substring(cap[0].length);\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && lastToken.type === 'paragraph') {\n lastToken.text += '\\n' + cap[0].trimRight();\n } else {\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(cap, '\\n')\n : cap\n });\n }\n continue;\n }\n\n // fences\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2] ? cap[2].trim() : cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (cap = this.rules.nptable.exec(src)) {\n item = {\n type: 'table',\n header: splitCells(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n src = src.substring(cap[0].length);\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = splitCells(item.cells[i], item.header.length);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n isordered = bull.length > 1;\n\n listStart = {\n type: 'list_start',\n ordered: isordered,\n start: isordered ? +bull : '',\n loose: false\n };\n\n this.tokens.push(listStart);\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n listItems = [];\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) */, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull.length > 1 ? b.length === 1\n : (b.length > 1 || (this.options.smartLists && b !== bull))) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n if (loose) {\n listStart.loose = true;\n }\n\n // Check for task list items\n istask = /^\\[[ xX]\\] /.test(item);\n ischecked = undefined;\n if (istask) {\n ischecked = item[1] !== ' ';\n item = item.replace(/^\\[[ xX]\\] +/, '');\n }\n\n t = {\n type: 'list_item_start',\n task: istask,\n checked: ischecked,\n loose: loose\n };\n\n listItems.push(t);\n this.tokens.push(t);\n\n // Recurse.\n this.token(item, false);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n if (listStart.loose) {\n l = listItems.length;\n i = 0;\n for (; i < l; i++) {\n listItems[i].loose = true;\n }\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0]\n });\n continue;\n }\n\n // def\n if (top && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);\n tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n if (!this.tokens.links[tag]) {\n this.tokens.links[tag] = {\n href: cap[2],\n title: cap[3]\n };\n }\n continue;\n }\n\n // table (gfm)\n if (cap = this.rules.table.exec(src)) {\n item = {\n type: 'table',\n header: splitCells(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n src = src.substring(cap[0].length);\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = splitCells(\n item.cells[i].replace(/^ *\\| *| *\\| *$/g, ''),\n item.header.length);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n };\n};\n","const {\n noopTest,\n edit,\n merge\n} = require('./helpers.js');\n\n/**\n * Block-Level Grammar\n */\nconst block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: /^ {0,3}(`{3,}|~{3,})([^`~\\n]*)\\n(?:|([\\s\\S]*?)\\n)(?: {0,3}\\1[~`]* *(?:\\n+|$)|$)/,\n hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6}) +([^\\n]*?)(?: +#+)? *(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3})(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?\\\\?>\\\\n*' // (3)\n + '|\\\\n*' // (4)\n + '|\\\\n*' // (5)\n + '|)[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (6)\n + '|<(?!script|pre|style)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *\\n? *]+)>?(?:(?: +\\n? *| *\\n *)(title))? *(?:\\n+|$)/,\n nptable: noopTest,\n table: noopTest,\n lheading: /^([^\\n]+)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\[\\[\\]]|[^\\[\\]])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}\\.)/;\nblock.item = /^( *)(bull) ?[^\\n]*(?:\\n(?!\\1bull ?)[^\\n]*)*/;\nblock.item = edit(block.item, 'gm')\n .replace(/bull/g, block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = //;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} +')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}|~{3,})[^`\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n nptable: /^ *([^|\\n ].*\\|.*)\\n *([-:]+ *\\|[-| :]*)(?:\\n((?:.*[^>\\n ].*(?:\\n|$))*)\\n*|$)/,\n table: /^ *\\|(.+)\\n *\\|?( *[-:]+[-| :]*)(?:\\n((?: *[^>\\n ].*(?:\\n|$))*)\\n*|$)/\n});\n\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = merge({}, block.normal, {\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *(?:#+ *)?(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n paragraph: edit(block.normal._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n});\n\n/**\n * Inline-Level Grammar\n */\nconst inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(?!\\s*\\])((?:\\\\[\\[\\]]?|[^\\[\\]\\\\])+)\\]/,\n nolink: /^!?\\[(?!\\s*\\])((?:\\[[^\\[\\]]*\\]|\\\\[\\[\\]]|[^\\[\\]])*)\\](?:\\[\\])?/,\n strong: /^__([^\\s_])__(?!_)|^\\*\\*([^\\s*])\\*\\*(?!\\*)|^__([^\\s][\\s\\S]*?[^\\s])__(?!_)|^\\*\\*([^\\s][\\s\\S]*?[^\\s])\\*\\*(?!\\*)/,\n em: /^_([^\\s_])_(?!_)|^\\*([^\\s*<\\[])\\*(?!\\*)|^_([^\\s<][\\s\\S]*?[^\\s_])_(?!_|[^\\spunctuation])|^_([^\\s_<][\\s\\S]*?[^\\s])_(?!_|[^\\spunctuation])|^\\*([^\\s<\"][\\s\\S]*?[^\\s\\*])\\*(?!\\*|[^\\spunctuation])|^\\*([^\\s*\"<\\[][\\s\\S]*?[^\\s])\\*(?!\\*)/,\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:[\\s\\S]*?(?:(?=[\\\\?@\\\\[^_{|}~';\ninline.em = edit(inline.em).replace(/punctuation/g, inline._punctuation).getRegex();\n\ninline._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', block._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[[^\\[\\]]*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\[<>]?|[^\\s<>\\\\])*>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,\n del: /^~+(?=\\S)([\\s\\S]*?\\S)~+/,\n text: /^(`+|[^`])(?:[\\s\\S]*?(?:(?=[\\\\/i.test(cap[0])) {\n this.inLink = false;\n }\n if (!this.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.inRawBlock = true;\n } else if (this.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.inRawBlock = false;\n }\n\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0];\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n src = src.substring(cap[0].length);\n this.inLink = true;\n href = cap[2];\n if (this.options.pedantic) {\n link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n } else {\n title = '';\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim().replace(/^<([\\s\\S]*)>$/, '$1');\n out += this.outputLink(cap, {\n href: InlineLexer.escapes(href),\n title: InlineLexer.escapes(title)\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[4] || cap[3] || cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[6] || cap[5] || cap[4] || cap[3] || cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2].trim(), true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = escape(this.mangle(cap[1]));\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n if (cap[2] === '@') {\n text = escape(cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + text;\n } else {\n href = text;\n }\n }\n src = src.substring(cap[0].length);\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n if (this.inRawBlock) {\n out += this.renderer.text(this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0]);\n } else {\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n }\n continue;\n }\n\n if (src) {\n throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n }\n\n static escapes(text) {\n return text ? text.replace(InlineLexer.rules._escapes, '$1') : text;\n }\n\n /**\n * Compile Link\n */\n outputLink(cap, link) {\n const href = link.href,\n title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n }\n\n /**\n * Smartypants Transformations\n */\n smartypants(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n }\n\n /**\n * Mangle Links\n */\n mangle(text) {\n if (!this.options.mangle) return text;\n const l = text.length;\n let out = '',\n i = 0,\n ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n }\n};\n","/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = /[&<>\"']/g;\nconst escapeTestNoEncode = /[<>\"']|&(?!#?\\w+;)/;\nconst escapeReplaceNoEncode = /[<>\"']|&(?!#?\\w+;)/g;\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\nfunction unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\nfunction edit(regex, opt) {\n regex = regex.source || regex;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n val = val.source || val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\nfunction cleanUrl(sanitize, base, href) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\nfunction resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nconst noopTest = { exec: function noopTest() {} };\n\nfunction merge(obj) {\n let i = 1,\n target,\n key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n// Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n// /c*$/ is vulnerable to REDOS.\n// invert: Remove suffix of non-c chars instead. Default falsey.\nfunction rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.substr(0, l - suffLen);\n}\n\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nfunction checkSanitizeDeprecation(opt) {\n if (opt && opt.sanitize && !opt.silent) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n}\n\nmodule.exports = {\n escape,\n unescape,\n edit,\n cleanUrl,\n resolveUrl,\n noopTest,\n merge,\n splitCells,\n rtrim,\n findClosingBracket,\n checkSanitizeDeprecation\n};\n","function getDefaults() {\n return {\n baseUrl: null,\n breaks: false,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartLists: false,\n smartypants: false,\n xhtml: false\n };\n}\n\nfunction changeDefaults(newDefaults) {\n module.exports.defaults = newDefaults;\n}\n\nmodule.exports = {\n defaults: getDefaults(),\n getDefaults,\n changeDefaults\n};\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///./node_modules/marked/src/TextRenderer.js","webpack:///./node_modules/marked/src/marked.js","webpack:///./node_modules/marked/src/Parser.js","webpack:///./node_modules/marked/src/Slugger.js","webpack:///./node_modules/marked/src/Renderer.js","webpack:///./node_modules/marked/src/Lexer.js","webpack:///./node_modules/marked/src/rules.js","webpack:///./node_modules/marked/src/InlineLexer.js","webpack:///./node_modules/marked/src/helpers.js","webpack:///./node_modules/marked/src/defaults.js"],"names":["module","exports","[object Object]","text","href","title","Lexer","__webpack_require__","Parser","Renderer","TextRenderer","InlineLexer","Slugger","merge","checkSanitizeDeprecation","escape","getDefaults","changeDefaults","defaults","marked","src","opt","callback","Error","Object","prototype","toString","call","highlight","tokens","pending","i","lex","e","length","done","err","out","parse","token","type","lang","code","escaped","message","silent","options","setOptions","parser","lexer","inlineLexer","output","unescape","this","renderer","slugger","inline","links","inlineText","reverse","next","tok","pop","body","peek","hr","heading","depth","row","cell","j","header","tablecell","align","tablerow","cells","table","blockquote","ordered","start","list","loose","checked","task","nextToken","checkbox","push","parseText","listitem","html","paragraph","errMsg","console","log","seen","value","slug","toLowerCase","trim","replace","hasOwnProperty","originalSlug","cleanUrl","infostring","match","langPrefix","quote","level","raw","headerIds","headerPrefix","xhtml","content","flags","sanitize","baseUrl","block","rtrim","splitCells","create","rules","normal","pedantic","gfm","top","cap","bull","b","item","listStart","listItems","t","space","tag","l","isordered","istask","ischecked","newline","exec","substring","lastToken","trimRight","codeBlockStyle","fences","nptable","split","test","indexOf","RegExp","bullet","smartLists","slice","join","charAt","undefined","pre","sanitizer","def","lheading","charCodeAt","noopTest","edit","_paragraph","_label","_title","getRegex","source","_tag","_comment","autolink","url","link","reflink","nolink","strong","em","br","del","_punctuation","_escapes","_scheme","_email","_attribute","_href","_extended_email","_backpedal","breaks","findClosingBracket","prevCapZero","inLink","inRawBlock","lastParenIndex","linkLen","outputLink","escapes","codespan","mangle","smartypants","image","ch","Math","random","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","&","<",">","\"","'","getEscapeReplacement","unescapeTest","_","n","String","fromCharCode","parseInt","caret","nonWordAndColonTest","originIndependentUrl","baseUrls","justDomain","protocol","domain","resolveUrl","base","relativeBase","str","c","invert","suffLen","currChar","substr","encode","regex","obj","name","val","prot","decodeURIComponent","encodeURI","target","key","arguments","tableRow","count","offset","curr","splice","warn","newDefaults"],"mappings":"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","file":"static/js/chunk-5118.7c48ad58.js","sourcesContent":["/**\n * TextRenderer\n * returns only the textual part of the token\n */\nmodule.exports = class TextRenderer {\n // no need for block level renderers\n strong(text) {\n return text;\n }\n\n em(text) {\n return text;\n }\n\n codespan(text) {\n return text;\n }\n\n del(text) {\n return text;\n }\n\n text(text) {\n return text;\n }\n\n link(href, title, text) {\n return '' + text;\n }\n\n image(href, title, text) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n};\n","const Lexer = require('./Lexer.js');\nconst Parser = require('./Parser.js');\nconst Renderer = require('./Renderer.js');\nconst TextRenderer = require('./TextRenderer.js');\nconst InlineLexer = require('./InlineLexer.js');\nconst Slugger = require('./Slugger.js');\nconst {\n merge,\n checkSanitizeDeprecation,\n escape\n} = require('./helpers.js');\nconst {\n getDefaults,\n changeDefaults,\n defaults\n} = require('./defaults.js');\n\n/**\n * Marked\n */\nfunction marked(src, opt, callback) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked(): input parameter is undefined or null');\n }\n if (typeof src !== 'string') {\n throw new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected');\n }\n\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n const highlight = opt.highlight;\n let tokens,\n pending,\n i = 0;\n\n try {\n tokens = Lexer.lex(src, opt);\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n const done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n let out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occurred:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n changeDefaults(marked.defaults);\n return marked;\n};\n\nmarked.getDefaults = getDefaults;\n\nmarked.defaults = defaults;\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\nmarked.TextRenderer = TextRenderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.Slugger = Slugger;\n\nmarked.parse = marked;\n\nmodule.exports = marked;\n","const Renderer = require('./Renderer.js');\nconst Slugger = require('./Slugger.js');\nconst InlineLexer = require('./InlineLexer.js');\nconst TextRenderer = require('./TextRenderer.js');\nconst { defaults } = require('./defaults.js');\nconst {\n merge,\n unescape\n} = require('./helpers.js');\n\n/**\n * Parsing & Compiling\n */\nmodule.exports = class Parser {\n constructor(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || defaults;\n this.options.renderer = this.options.renderer || new Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.slugger = new Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens, options) {\n const parser = new Parser(options);\n return parser.parse(tokens);\n };\n\n /**\n * Parse Loop\n */\n parse(tokens) {\n this.inline = new InlineLexer(tokens.links, this.options);\n // use an InlineLexer with a TextRenderer to extract pure text\n this.inlineText = new InlineLexer(\n tokens.links,\n merge({}, this.options, { renderer: new TextRenderer() })\n );\n this.tokens = tokens.reverse();\n\n let out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n };\n\n /**\n * Next Token\n */\n next() {\n this.token = this.tokens.pop();\n return this.token;\n };\n\n /**\n * Preview Next Token\n */\n peek() {\n return this.tokens[this.tokens.length - 1] || 0;\n };\n\n /**\n * Parse Text Tokens\n */\n parseText() {\n let body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n };\n\n /**\n * Parse Current Token\n */\n tok() {\n let body = '';\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n unescape(this.inlineText.output(this.token.text)),\n this.slugger);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n let header = '',\n i,\n row,\n cell,\n j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n body = '';\n const ordered = this.token.ordered,\n start = this.token.start;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered, start);\n }\n case 'list_item_start': {\n body = '';\n const loose = this.token.loose;\n const checked = this.token.checked;\n const task = this.token.task;\n\n if (this.token.task) {\n if (loose) {\n if (this.peek().type === 'text') {\n const nextToken = this.peek();\n nextToken.text = this.renderer.checkbox(checked) + ' ' + nextToken.text;\n } else {\n this.tokens.push({\n type: 'text',\n text: this.renderer.checkbox(checked)\n });\n }\n } else {\n body += this.renderer.checkbox(checked);\n }\n }\n\n while (this.next().type !== 'list_item_end') {\n body += !loose && this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n return this.renderer.listitem(body, task, checked);\n }\n case 'html': {\n // TODO parse inline content if parameter markdown=1\n return this.renderer.html(this.token.text);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n default: {\n const errMsg = 'Token with \"' + this.token.type + '\" type was not found.';\n if (this.options.silent) {\n console.log(errMsg);\n } else {\n throw new Error(errMsg);\n }\n }\n }\n };\n};\n","/**\n * Slugger generates header id\n */\nmodule.exports = class Slugger {\n constructor() {\n this.seen = {};\n }\n\n /**\n * Convert string to unique id\n */\n slug(value) {\n let slug = value\n .toLowerCase()\n .trim()\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n\n if (this.seen.hasOwnProperty(slug)) {\n const originalSlug = slug;\n do {\n this.seen[originalSlug]++;\n slug = originalSlug + '-' + this.seen[originalSlug];\n } while (this.seen.hasOwnProperty(slug));\n }\n this.seen[slug] = 0;\n\n return slug;\n };\n};\n","const { defaults } = require('./defaults.js');\nconst {\n cleanUrl,\n escape\n} = require('./helpers.js');\n\n/**\n * Renderer\n */\nmodule.exports = class Renderer {\n constructor(options) {\n this.options = options || defaults;\n }\n\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/\\S*/)[0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n        + (escaped ? code : escape(code, true))\n        + '
    ';\n }\n\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '
    \\n';\n };\n\n blockquote(quote) {\n return '
    \\n' + quote + '
    \\n';\n };\n\n html(html) {\n return html;\n };\n\n heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n return ''\n + text\n + '\\n';\n }\n // ignore IDs\n return '' + text + '\\n';\n };\n\n hr() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n };\n\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n };\n\n listitem(text) {\n return '
  • ' + text + '
  • \\n';\n };\n\n checkbox(checked) {\n return ' ';\n };\n\n paragraph(text) {\n return '

    ' + text + '

    \\n';\n };\n\n table(header, body) {\n if (body) body = '' + body + '';\n\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n };\n\n tablerow(content) {\n return '\\n' + content + '\\n';\n };\n\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? '<' + type + ' align=\"' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n };\n\n // span level renderer\n strong(text) {\n return '' + text + '';\n };\n\n em(text) {\n return '' + text + '';\n };\n\n codespan(text) {\n return '' + text + '';\n };\n\n br() {\n return this.options.xhtml ? '
    ' : '
    ';\n };\n\n del(text) {\n return '' + text + '';\n };\n\n link(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n let out = '
    ';\n return out;\n };\n\n image(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n\n let out = '\"'' : '>';\n return out;\n };\n\n text(text) {\n return text;\n };\n};\n","const { defaults } = require('./defaults.js');\nconst { block } = require('./rules.js');\nconst {\n rtrim,\n splitCells,\n escape\n} = require('./helpers.js');\n\n/**\n * Block Lexer\n */\nmodule.exports = class Lexer {\n constructor(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || defaults;\n this.rules = block.normal;\n\n if (this.options.pedantic) {\n this.rules = block.pedantic;\n } else if (this.options.gfm) {\n this.rules = block.gfm;\n }\n }\n\n /**\n * Expose Block Rules\n */\n static get rules() {\n return block;\n }\n\n /**\n * Static Lex Method\n */\n static lex(src, options) {\n const lexer = new Lexer(options);\n return lexer.lex(src);\n };\n\n /**\n * Preprocessing\n */\n lex(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ');\n\n return this.token(src, true);\n };\n\n /**\n * Lexing\n */\n token(src, top) {\n src = src.replace(/^ +$/gm, '');\n let next,\n loose,\n cap,\n bull,\n b,\n item,\n listStart,\n listItems,\n t,\n space,\n i,\n tag,\n l,\n isordered,\n istask,\n ischecked;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n const lastToken = this.tokens[this.tokens.length - 1];\n src = src.substring(cap[0].length);\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && lastToken.type === 'paragraph') {\n lastToken.text += '\\n' + cap[0].trimRight();\n } else {\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(cap, '\\n')\n : cap\n });\n }\n continue;\n }\n\n // fences\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2] ? cap[2].trim() : cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (cap = this.rules.nptable.exec(src)) {\n item = {\n type: 'table',\n header: splitCells(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n src = src.substring(cap[0].length);\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = splitCells(item.cells[i], item.header.length);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n isordered = bull.length > 1;\n\n listStart = {\n type: 'list_start',\n ordered: isordered,\n start: isordered ? +bull : '',\n loose: false\n };\n\n this.tokens.push(listStart);\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n listItems = [];\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) */, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull.length > 1 ? b.length === 1\n : (b.length > 1 || (this.options.smartLists && b !== bull))) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n if (loose) {\n listStart.loose = true;\n }\n\n // Check for task list items\n istask = /^\\[[ xX]\\] /.test(item);\n ischecked = undefined;\n if (istask) {\n ischecked = item[1] !== ' ';\n item = item.replace(/^\\[[ xX]\\] +/, '');\n }\n\n t = {\n type: 'list_item_start',\n task: istask,\n checked: ischecked,\n loose: loose\n };\n\n listItems.push(t);\n this.tokens.push(t);\n\n // Recurse.\n this.token(item, false);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n if (listStart.loose) {\n l = listItems.length;\n i = 0;\n for (; i < l; i++) {\n listItems[i].loose = true;\n }\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0]\n });\n continue;\n }\n\n // def\n if (top && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);\n tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n if (!this.tokens.links[tag]) {\n this.tokens.links[tag] = {\n href: cap[2],\n title: cap[3]\n };\n }\n continue;\n }\n\n // table (gfm)\n if (cap = this.rules.table.exec(src)) {\n item = {\n type: 'table',\n header: splitCells(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n src = src.substring(cap[0].length);\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = splitCells(\n item.cells[i].replace(/^ *\\| *| *\\| *$/g, ''),\n item.header.length);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n };\n};\n","const {\n noopTest,\n edit,\n merge\n} = require('./helpers.js');\n\n/**\n * Block-Level Grammar\n */\nconst block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: /^ {0,3}(`{3,}|~{3,})([^`~\\n]*)\\n(?:|([\\s\\S]*?)\\n)(?: {0,3}\\1[~`]* *(?:\\n+|$)|$)/,\n hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6}) +([^\\n]*?)(?: +#+)? *(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3})(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?\\\\?>\\\\n*' // (3)\n + '|\\\\n*' // (4)\n + '|\\\\n*' // (5)\n + '|)[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (6)\n + '|<(?!script|pre|style)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *\\n? *]+)>?(?:(?: +\\n? *| *\\n *)(title))? *(?:\\n+|$)/,\n nptable: noopTest,\n table: noopTest,\n lheading: /^([^\\n]+)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\[\\[\\]]|[^\\[\\]])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}\\.)/;\nblock.item = /^( *)(bull) ?[^\\n]*(?:\\n(?!\\1bull ?)[^\\n]*)*/;\nblock.item = edit(block.item, 'gm')\n .replace(/bull/g, block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = //;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} +')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}|~{3,})[^`\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n nptable: /^ *([^|\\n ].*\\|.*)\\n *([-:]+ *\\|[-| :]*)(?:\\n((?:.*[^>\\n ].*(?:\\n|$))*)\\n*|$)/,\n table: /^ *\\|(.+)\\n *\\|?( *[-:]+[-| :]*)(?:\\n((?: *[^>\\n ].*(?:\\n|$))*)\\n*|$)/\n});\n\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = merge({}, block.normal, {\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *(?:#+ *)?(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n paragraph: edit(block.normal._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n});\n\n/**\n * Inline-Level Grammar\n */\nconst inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(?!\\s*\\])((?:\\\\[\\[\\]]?|[^\\[\\]\\\\])+)\\]/,\n nolink: /^!?\\[(?!\\s*\\])((?:\\[[^\\[\\]]*\\]|\\\\[\\[\\]]|[^\\[\\]])*)\\](?:\\[\\])?/,\n strong: /^__([^\\s_])__(?!_)|^\\*\\*([^\\s*])\\*\\*(?!\\*)|^__([^\\s][\\s\\S]*?[^\\s])__(?!_)|^\\*\\*([^\\s][\\s\\S]*?[^\\s])\\*\\*(?!\\*)/,\n em: /^_([^\\s_])_(?!_)|^\\*([^\\s*<\\[])\\*(?!\\*)|^_([^\\s<][\\s\\S]*?[^\\s_])_(?!_|[^\\spunctuation])|^_([^\\s_<][\\s\\S]*?[^\\s])_(?!_|[^\\spunctuation])|^\\*([^\\s<\"][\\s\\S]*?[^\\s\\*])\\*(?!\\*|[^\\spunctuation])|^\\*([^\\s*\"<\\[][\\s\\S]*?[^\\s])\\*(?!\\*)/,\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:[\\s\\S]*?(?:(?=[\\\\?@\\\\[^_{|}~';\ninline.em = edit(inline.em).replace(/punctuation/g, inline._punctuation).getRegex();\n\ninline._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', block._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[[^\\[\\]]*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\[<>]?|[^\\s<>\\\\])*>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,\n del: /^~+(?=\\S)([\\s\\S]*?\\S)~+/,\n text: /^(`+|[^`])(?:[\\s\\S]*?(?:(?=[\\\\/i.test(cap[0])) {\n this.inLink = false;\n }\n if (!this.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.inRawBlock = true;\n } else if (this.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.inRawBlock = false;\n }\n\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0];\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n src = src.substring(cap[0].length);\n this.inLink = true;\n href = cap[2];\n if (this.options.pedantic) {\n link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n } else {\n title = '';\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim().replace(/^<([\\s\\S]*)>$/, '$1');\n out += this.outputLink(cap, {\n href: InlineLexer.escapes(href),\n title: InlineLexer.escapes(title)\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[4] || cap[3] || cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[6] || cap[5] || cap[4] || cap[3] || cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2].trim(), true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = escape(this.mangle(cap[1]));\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n if (cap[2] === '@') {\n text = escape(cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + text;\n } else {\n href = text;\n }\n }\n src = src.substring(cap[0].length);\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n if (this.inRawBlock) {\n out += this.renderer.text(this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0]);\n } else {\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n }\n continue;\n }\n\n if (src) {\n throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n }\n\n static escapes(text) {\n return text ? text.replace(InlineLexer.rules._escapes, '$1') : text;\n }\n\n /**\n * Compile Link\n */\n outputLink(cap, link) {\n const href = link.href,\n title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n }\n\n /**\n * Smartypants Transformations\n */\n smartypants(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n }\n\n /**\n * Mangle Links\n */\n mangle(text) {\n if (!this.options.mangle) return text;\n const l = text.length;\n let out = '',\n i = 0,\n ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n }\n};\n","/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = /[&<>\"']/g;\nconst escapeTestNoEncode = /[<>\"']|&(?!#?\\w+;)/;\nconst escapeReplaceNoEncode = /[<>\"']|&(?!#?\\w+;)/g;\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\nfunction unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\nfunction edit(regex, opt) {\n regex = regex.source || regex;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n val = val.source || val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\nfunction cleanUrl(sanitize, base, href) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\nfunction resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nconst noopTest = { exec: function noopTest() {} };\n\nfunction merge(obj) {\n let i = 1,\n target,\n key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n// Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n// /c*$/ is vulnerable to REDOS.\n// invert: Remove suffix of non-c chars instead. Default falsey.\nfunction rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.substr(0, l - suffLen);\n}\n\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nfunction checkSanitizeDeprecation(opt) {\n if (opt && opt.sanitize && !opt.silent) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n}\n\nmodule.exports = {\n escape,\n unescape,\n edit,\n cleanUrl,\n resolveUrl,\n noopTest,\n merge,\n splitCells,\n rtrim,\n findClosingBracket,\n checkSanitizeDeprecation\n};\n","function getDefaults() {\n return {\n baseUrl: null,\n breaks: false,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartLists: false,\n smartypants: false,\n xhtml: false\n };\n}\n\nfunction changeDefaults(newDefaults) {\n module.exports.defaults = newDefaults;\n}\n\nmodule.exports = {\n defaults: getDefaults(),\n getDefaults,\n changeDefaults\n};\n"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-5882.7cbc4c1b.js b/priv/static/adminfe/static/js/chunk-5882.7cbc4c1b.js new file mode 100644 index 000000000..a29b6daab --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-5882.7cbc4c1b.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-5882"],{"13xp":function(s,e,t){"use strict";var r=t("2r4G");t.n(r).a},"2r4G":function(s,e,t){},"4bFr":function(s,e,t){"use strict";t.r(e);var r=t("ot3S"),i=t("tPM3"),a=t("o0o1"),n=t.n(a),o=t("yXPU"),u=t.n(o),l=t("XJYT"),c={name:"SecuritySettingsModal",props:{visible:{type:Boolean,default:!1},user:{type:Object,default:function(){return{}}}},data:function(){return{securitySettingsForm:{newEmail:"",newPassword:"",isEmailLoading:!1,isPasswordLoading:!1}}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device},getLabelWidth:function(){return this.isDesktop?"120px":"85px"},userCredentials:function(){return this.$store.state.userProfile.userCredentials}},mounted:function(){var s=u()(n.a.mark(function s(){return n.a.wrap(function(s){for(;;)switch(s.prev=s.next){case 0:return s.next=2,this.$store.dispatch("FetchUserCredentials",{nickname:this.user.nickname});case 2:this.securitySettingsForm.newEmail=this.userCredentials.email;case 3:case"end":return s.stop()}},s,this)}));return function(){return s.apply(this,arguments)}}(),methods:{updateEmail:function(){var s=u()(n.a.mark(function s(){var e;return n.a.wrap(function(s){for(;;)switch(s.prev=s.next){case 0:return e={email:this.securitySettingsForm.newEmail},this.securitySettingsForm.isEmailLoading=!0,s.next=4,this.$store.dispatch("UpdateUserCredentials",{nickname:this.user.nickname,credentials:e});case 4:this.securitySettingsForm.isEmailLoading=!1,Object(l.Message)({message:this.$t("userProfile.securitySettings.emailUpdated"),type:"success",duration:5e3});case 6:case"end":return s.stop()}},s,this)}));return function(){return s.apply(this,arguments)}}(),updatePassword:function(){var s=u()(n.a.mark(function s(){var e;return n.a.wrap(function(s){for(;;)switch(s.prev=s.next){case 0:return e={password:this.securitySettingsForm.newPassword},this.securitySettingsForm.isPasswordLoading=!0,s.next=4,this.$store.dispatch("UpdateUserCredentials",{nickname:this.user.nickname,credentials:e});case 4:this.securitySettingsForm.isPasswordLoading=!1,this.securitySettingsForm.newPassword="",Object(l.Message)({message:this.$t("userProfile.securitySettings.passwordUpdated"),type:"success",duration:5e3});case 7:case"end":return s.stop()}},s,this)}));return function(){return s.apply(this,arguments)}}(),close:function(){this.$emit("close",!0)}}},d=(t("13xp"),t("KHd+")),p=Object(d.a)(c,function(){var s=this,e=s.$createElement,t=s._self._c||e;return t("el-dialog",{staticClass:"security-settings-modal",attrs:{"before-close":s.close,title:s.$t("userProfile.securitySettings.securitySettings"),visible:s.visible}},[t("el-form",{attrs:{model:s.securitySettingsForm,"label-width":s.getLabelWidth}},[t("el-form-item",{attrs:{label:s.$t("userProfile.securitySettings.email")}},[t("el-input",{attrs:{placeholder:s.$t("userProfile.securitySettings.inputNewEmail")},model:{value:s.securitySettingsForm.newEmail,callback:function(e){s.$set(s.securitySettingsForm,"newEmail",e)},expression:"securitySettingsForm.newEmail"}})],1),s._v(" "),t("el-form-item",[t("el-button",{staticClass:"security-settings-submit-button",attrs:{loading:s.securitySettingsForm.isEmailLoading,disabled:!s.securitySettingsForm.newEmail||s.securitySettingsForm.newEmail===s.userCredentials.email,type:"primary"},on:{click:function(e){return s.updateEmail()}}},[s._v("\n "+s._s(s.$t("userProfile.securitySettings.submit"))+"\n ")])],1),s._v(" "),t("el-form-item",{staticClass:"password-input",attrs:{label:s.$t("userProfile.securitySettings.password")}},[t("el-input",{attrs:{placeholder:s.$t("userProfile.securitySettings.inputNewPassword")},model:{value:s.securitySettingsForm.newPassword,callback:function(e){s.$set(s.securitySettingsForm,"newPassword",e)},expression:"securitySettingsForm.newPassword"}}),s._v(" "),t("small",{staticClass:"form-text"},[s._v("\n "+s._s(s.$t("userProfile.securitySettings.passwordLengthNotice",{minLength:8}))+"\n ")])],1),s._v(" "),t("el-alert",{staticClass:"password-alert",attrs:{closable:!1,type:"warning","show-icon":""}},[t("p",[s._v(s._s(s.$t("userProfile.securitySettings.passwordChangeWarning1")))]),s._v(" "),t("p",[s._v(s._s(s.$t("userProfile.securitySettings.passwordChangeWarning2")))])]),s._v(" "),t("el-form-item",[t("el-button",{staticClass:"security-settings-submit-button",attrs:{loading:s.securitySettingsForm.isPasswordLoading,disabled:s.securitySettingsForm.newPassword.length<8,type:"primary"},on:{click:function(e){return s.updatePassword()}}},[s._v("\n "+s._s(s.$t("userProfile.securitySettings.submit"))+"\n ")])],1)],1)],1)},[],!1,null,null,null);p.options.__file="SecuritySettingsModal.vue";var g=p.exports,v=t("rIUS"),_=t("WjBP"),m={name:"UsersShow",components:{ModerationDropdown:i.a,RebootButton:v.a,ResetPasswordDialog:_.a,Status:r.a,SecuritySettingsModal:g},data:function(){return{showPrivate:!1,resetPasswordDialogOpen:!1,securitySettingsModalVisible:!1}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device},isTablet:function(){return"tablet"===this.$store.state.app.device},loading:function(){return this.$store.state.users.loading},statuses:function(){return this.$store.state.userProfile.statuses},statusesLoading:function(){return this.$store.state.userProfile.statusesLoading},user:function(){return this.$store.state.userProfile.user},userProfileLoading:function(){return this.$store.state.userProfile.userProfileLoading},userCredentials:function(){return this.$store.state.userProfile.userCredentials}},mounted:function(){this.$store.dispatch("NeedReboot"),this.$store.dispatch("GetNodeInfo"),this.$store.dispatch("FetchUserProfile",{userId:this.$route.params.id,godmode:!1})},methods:{closeResetPasswordDialog:function(){this.resetPasswordDialogOpen=!1,this.$store.dispatch("RemovePasswordToken")},humanizeTag:function(s){return{force_nsfw:"Force NSFW",strip_media:"Strip Media",force_unlisted:"Force Unlisted",sandbox:"Sandbox",disable_remote_subscription:"Disable remote subscription",disable_any_subscription:"Disable any subscription"}[s]},onTogglePrivate:function(){this.$store.dispatch("FetchUserProfile",{userId:this.$route.params.id,godmode:this.showPrivate})},openResetPasswordDialog:function(){this.resetPasswordDialogOpen=!0},propertyExists:function(s,e){return s[e]}}},h=(t("9IXO"),Object(d.a)(m,function(){var s=this,e=s.$createElement,t=s._self._c||e;return s.userProfileLoading?s._e():t("main",[s.isDesktop||s.isTablet?t("header",{staticClass:"user-page-header"},[t("div",{staticClass:"avatar-name-container"},[s.propertyExists(s.user,"avatar")?t("el-avatar",{attrs:{src:s.user.avatar,size:"large"}}):s._e(),s._v(" "),s.propertyExists(s.user,"nickname")?t("h1",[s._v(s._s(s.user.nickname))]):t("h1",{staticClass:"invalid"},[s._v("("+s._s(s.$t("users.invalidNickname"))+")")]),s._v(" "),s.propertyExists(s.user,"url")?t("a",{attrs:{href:s.user.url,target:"_blank"}},[t("i",{staticClass:"el-icon-top-right",attrs:{title:s.$t("userProfile.openAccountInInstance")}})]):s._e()],1),s._v(" "),t("div",{staticClass:"left-header-container"},[s.propertyExists(s.user,"nickname")?t("moderation-dropdown",{attrs:{user:s.user,page:"userPage"},on:{"open-reset-token-dialog":s.openResetPasswordDialog}}):s._e(),s._v(" "),t("reboot-button")],1)]):s._e(),s._v(" "),s.isMobile?t("div",{staticClass:"user-page-header-container"},[t("header",{staticClass:"user-page-header"},[t("div",{staticClass:"avatar-name-container"},[s.propertyExists(s.user,"avatar")?t("el-avatar",{attrs:{src:s.user.avatar,size:"large"}}):s._e(),s._v(" "),s.propertyExists(s.user,"nickname")?t("h1",[s._v(s._s(s.user.nickname))]):t("h1",{staticClass:"invalid"},[s._v("("+s._s(s.$t("users.invalidNickname"))+")")])],1),s._v(" "),t("reboot-button")],1),s._v(" "),s.propertyExists(s.user,"nickname")?t("moderation-dropdown",{attrs:{user:s.user,page:"userPage"},on:{"open-reset-token-dialog":s.openResetPasswordDialog}}):s._e()],1):s._e(),s._v(" "),t("reset-password-dialog",{attrs:{"reset-password-dialog-open":s.resetPasswordDialogOpen},on:{"close-reset-token-dialog":s.closeResetPasswordDialog}}),s._v(" "),t("div",{staticClass:"user-profile-container"},[t("el-card",{staticClass:"user-profile-card"},[t("div",{staticClass:"el-table el-table--fit el-table--enable-row-hover el-table--enable-row-transition el-table--medium"},[s.propertyExists(s.user,"nickname")?s._e():t("el-tag",{staticClass:"invalid-user-tag",attrs:{type:"info"}},[s._v("\n "+s._s(s.$t("users.invalidAccount"))+"\n ")]),s._v(" "),t("table",{staticClass:"user-profile-table"},[t("tbody",[t("tr",{staticClass:"el-table__row"},[t("td",{staticClass:"name-col"},[s._v("ID")]),s._v(" "),t("td",{staticClass:"value-col"},[s._v("\n "+s._s(s.user.id)+"\n ")])]),s._v(" "),t("tr",{staticClass:"el-table__row"},[t("td",[s._v(s._s(s.$t("userProfile.tags")))]),s._v(" "),t("td",[0!==s.user.tags.length&&s.propertyExists(s.user,"tags")?s._l(s.user.tags,function(e){return t("el-tag",{key:e,staticClass:"user-profile-tag"},[s._v(s._s(s.humanizeTag(e)))])}):t("span",[s._v("—")])],2)]),s._v(" "),t("tr",{staticClass:"el-table__row"},[t("td",[s._v(s._s(s.$t("userProfile.roles")))]),s._v(" "),t("td",[s.user.roles.admin?t("el-tag",{staticClass:"user-profile-tag"},[s._v("\n "+s._s(s.$t("users.admin"))+"\n ")]):s._e(),s._v(" "),s.user.roles.moderator?t("el-tag",{staticClass:"user-profile-tag"},[s._v("\n "+s._s(s.$t("users.moderator"))+"\n ")]):s._e(),s._v(" "),s.propertyExists(s.user,"roles")&&(s.user.roles.moderator||s.user.roles.admin)?s._e():t("span",[s._v("—")])],1)]),s._v(" "),t("tr",{staticClass:"el-table__row"},[t("td",[s._v(s._s(s.$t("userProfile.accountType")))]),s._v(" "),t("td",[s.user.local?t("el-tag",{attrs:{type:"info"}},[s._v(s._s(s.$t("userProfile.local")))]):s._e(),s._v(" "),s.user.local?s._e():t("el-tag",{attrs:{type:"info"}},[s._v(s._s(s.$t("userProfile.external")))])],1)]),s._v(" "),t("tr",{staticClass:"el-table__row"},[t("td",[s._v(s._s(s.$t("userProfile.status")))]),s._v(" "),t("td",[s.user.deactivated?s._e():t("el-tag",{attrs:{type:"success"}},[s._v(s._s(s.$t("userProfile.active")))]),s._v(" "),s.user.deactivated?t("el-tag",{attrs:{type:"danger"}},[s._v(s._s(s.$t("userProfile.deactivated")))]):s._e()],1)])])])],1),s._v(" "),s.propertyExists(s.user,"nickname")?t("el-button",{staticClass:"security-setting-button",attrs:{icon:"el-icon-lock"},on:{click:function(e){s.securitySettingsModalVisible=!0}}},[s._v("\n "+s._s(s.$t("userProfile.securitySettings.securitySettings"))+"\n ")]):s._e(),s._v(" "),s.propertyExists(s.user,"nickname")?t("SecuritySettingsModal",{attrs:{user:s.user,visible:s.securitySettingsModalVisible},on:{close:function(e){s.securitySettingsModalVisible=!1}}}):s._e()],1),s._v(" "),t("div",{staticClass:"recent-statuses-container"},[t("h2",{staticClass:"recent-statuses"},[s._v(s._s(s.$t("userProfile.recentStatuses")))]),s._v(" "),t("el-checkbox",{staticClass:"show-private-statuses",on:{change:s.onTogglePrivate},model:{value:s.showPrivate,callback:function(e){s.showPrivate=e},expression:"showPrivate"}},[s._v("\n "+s._s(s.$t("statuses.showPrivateStatuses"))+"\n ")]),s._v(" "),s.statusesLoading?s._e():t("el-timeline",{staticClass:"statuses"},[s._l(s.statuses,function(e){return t("el-timeline-item",{key:e.id},[t("status",{attrs:{status:e,account:e.account,"show-checkbox":!1,"user-id":s.user.id,godmode:s.showPrivate}})],1)}),s._v(" "),0===s.statuses.length?t("p",{staticClass:"no-statuses"},[s._v(s._s(s.$t("userProfile.noStatuses")))]):s._e()],2)],1)],1)],1)},[],!1,null,null,null));h.options.__file="show.vue";e.default=h.exports},"53Av":function(s,e,t){"use strict";var r=t("lOBV");t.n(r).a},"9IXO":function(s,e,t){"use strict";var r=t("msq4");t.n(r).a},RnhZ:function(s,e,t){var r={"./af":"K/tc","./af.js":"K/tc","./ar":"jnO4","./ar-dz":"o1bE","./ar-dz.js":"o1bE","./ar-kw":"Qj4J","./ar-kw.js":"Qj4J","./ar-ly":"HP3h","./ar-ly.js":"HP3h","./ar-ma":"CoRJ","./ar-ma.js":"CoRJ","./ar-sa":"gjCT","./ar-sa.js":"gjCT","./ar-tn":"bYM6","./ar-tn.js":"bYM6","./ar.js":"jnO4","./az":"SFxW","./az.js":"SFxW","./be":"H8ED","./be.js":"H8ED","./bg":"hKrs","./bg.js":"hKrs","./bm":"p/rL","./bm.js":"p/rL","./bn":"kEOa","./bn.js":"kEOa","./bo":"0mo+","./bo.js":"0mo+","./br":"aIdf","./br.js":"aIdf","./bs":"JVSJ","./bs.js":"JVSJ","./ca":"1xZ4","./ca.js":"1xZ4","./cs":"PA2r","./cs.js":"PA2r","./cv":"A+xa","./cv.js":"A+xa","./cy":"l5ep","./cy.js":"l5ep","./da":"DxQv","./da.js":"DxQv","./de":"tGlX","./de-at":"s+uk","./de-at.js":"s+uk","./de-ch":"u3GI","./de-ch.js":"u3GI","./de.js":"tGlX","./dv":"WYrj","./dv.js":"WYrj","./el":"jUeY","./el.js":"jUeY","./en-SG":"zavE","./en-SG.js":"zavE","./en-au":"Dmvi","./en-au.js":"Dmvi","./en-ca":"OIYi","./en-ca.js":"OIYi","./en-gb":"Oaa7","./en-gb.js":"Oaa7","./en-ie":"4dOw","./en-ie.js":"4dOw","./en-il":"czMo","./en-il.js":"czMo","./en-nz":"b1Dy","./en-nz.js":"b1Dy","./eo":"Zduo","./eo.js":"Zduo","./es":"iYuL","./es-do":"CjzT","./es-do.js":"CjzT","./es-us":"Vclq","./es-us.js":"Vclq","./es.js":"iYuL","./et":"7BjC","./et.js":"7BjC","./eu":"D/JM","./eu.js":"D/JM","./fa":"jfSC","./fa.js":"jfSC","./fi":"gekB","./fi.js":"gekB","./fo":"ByF4","./fo.js":"ByF4","./fr":"nyYc","./fr-ca":"2fjn","./fr-ca.js":"2fjn","./fr-ch":"Dkky","./fr-ch.js":"Dkky","./fr.js":"nyYc","./fy":"cRix","./fy.js":"cRix","./ga":"USCx","./ga.js":"USCx","./gd":"9rRi","./gd.js":"9rRi","./gl":"iEDd","./gl.js":"iEDd","./gom-latn":"DKr+","./gom-latn.js":"DKr+","./gu":"4MV3","./gu.js":"4MV3","./he":"x6pH","./he.js":"x6pH","./hi":"3E1r","./hi.js":"3E1r","./hr":"S6ln","./hr.js":"S6ln","./hu":"WxRl","./hu.js":"WxRl","./hy-am":"1rYy","./hy-am.js":"1rYy","./id":"UDhR","./id.js":"UDhR","./is":"BVg3","./is.js":"BVg3","./it":"bpih","./it-ch":"bxKX","./it-ch.js":"bxKX","./it.js":"bpih","./ja":"B55N","./ja.js":"B55N","./jv":"tUCv","./jv.js":"tUCv","./ka":"IBtZ","./ka.js":"IBtZ","./kk":"bXm7","./kk.js":"bXm7","./km":"6B0Y","./km.js":"6B0Y","./kn":"PpIw","./kn.js":"PpIw","./ko":"Ivi+","./ko.js":"Ivi+","./ku":"JCF/","./ku.js":"JCF/","./ky":"lgnt","./ky.js":"lgnt","./lb":"RAwQ","./lb.js":"RAwQ","./lo":"sp3z","./lo.js":"sp3z","./lt":"JvlW","./lt.js":"JvlW","./lv":"uXwI","./lv.js":"uXwI","./me":"KTz0","./me.js":"KTz0","./mi":"aIsn","./mi.js":"aIsn","./mk":"aQkU","./mk.js":"aQkU","./ml":"AvvY","./ml.js":"AvvY","./mn":"lYtQ","./mn.js":"lYtQ","./mr":"Ob0Z","./mr.js":"Ob0Z","./ms":"6+QB","./ms-my":"ZAMP","./ms-my.js":"ZAMP","./ms.js":"6+QB","./mt":"G0Uy","./mt.js":"G0Uy","./my":"honF","./my.js":"honF","./nb":"bOMt","./nb.js":"bOMt","./ne":"OjkT","./ne.js":"OjkT","./nl":"+s0g","./nl-be":"2ykv","./nl-be.js":"2ykv","./nl.js":"+s0g","./nn":"uEye","./nn.js":"uEye","./pa-in":"8/+R","./pa-in.js":"8/+R","./pl":"jVdC","./pl.js":"jVdC","./pt":"8mBD","./pt-br":"0tRk","./pt-br.js":"0tRk","./pt.js":"8mBD","./ro":"lyxo","./ro.js":"lyxo","./ru":"lXzo","./ru.js":"lXzo","./sd":"Z4QM","./sd.js":"Z4QM","./se":"//9w","./se.js":"//9w","./si":"7aV9","./si.js":"7aV9","./sk":"e+ae","./sk.js":"e+ae","./sl":"gVVK","./sl.js":"gVVK","./sq":"yPMs","./sq.js":"yPMs","./sr":"zx6S","./sr-cyrl":"E+lV","./sr-cyrl.js":"E+lV","./sr.js":"zx6S","./ss":"Ur1D","./ss.js":"Ur1D","./sv":"X709","./sv.js":"X709","./sw":"dNwA","./sw.js":"dNwA","./ta":"PeUW","./ta.js":"PeUW","./te":"XLvN","./te.js":"XLvN","./tet":"V2x9","./tet.js":"V2x9","./tg":"Oxv6","./tg.js":"Oxv6","./th":"EOgW","./th.js":"EOgW","./tl-ph":"Dzi0","./tl-ph.js":"Dzi0","./tlh":"z3Vd","./tlh.js":"z3Vd","./tr":"DoHr","./tr.js":"DoHr","./tzl":"z1FC","./tzl.js":"z1FC","./tzm":"wQk9","./tzm-latn":"tT3J","./tzm-latn.js":"tT3J","./tzm.js":"wQk9","./ug-cn":"YRex","./ug-cn.js":"YRex","./uk":"raLr","./uk.js":"raLr","./ur":"UpQW","./ur.js":"UpQW","./uz":"Loxo","./uz-latn":"AQ68","./uz-latn.js":"AQ68","./uz.js":"Loxo","./vi":"KSF8","./vi.js":"KSF8","./x-pseudo":"/X5v","./x-pseudo.js":"/X5v","./yo":"fzPg","./yo.js":"fzPg","./zh-cn":"XDpg","./zh-cn.js":"XDpg","./zh-hk":"SatO","./zh-hk.js":"SatO","./zh-tw":"kOpN","./zh-tw.js":"kOpN"};function i(s){var e=a(s);return t(e)}function a(s){if(!t.o(r,s)){var e=new Error("Cannot find module '"+s+"'");throw e.code="MODULE_NOT_FOUND",e}return r[s]}i.keys=function(){return Object.keys(r)},i.resolve=a,s.exports=i,i.id="RnhZ"},WjBP:function(s,e,t){"use strict";var r={name:"ResetPasswordDialog",props:{resetPasswordDialogOpen:{type:Boolean,default:!1}},computed:{dialogOpen:function(){return this.resetPasswordDialogOpen},loading:function(){return this.$store.state.users.loading},passwordResetLink:function(){return this.$store.state.users.passwordResetToken.link},passwordResetToken:function(){return this.$store.state.users.passwordResetToken.token}},methods:{closeResetPasswordDialog:function(){this.$emit("close-reset-token-dialog")}}},i=t("KHd+"),a=Object(i.a)(r,function(){var s=this,e=s.$createElement,t=s._self._c||e;return t("el-dialog",{directives:[{name:"loading",rawName:"v-loading",value:s.loading,expression:"loading"}],attrs:{visible:s.dialogOpen,title:s.$t("users.passwordResetTokenCreated"),"custom-class":"password-reset-token-dialog"},on:{close:s.closeResetPasswordDialog}},[t("div",[t("p",{staticClass:"password-reset-token"},[s._v(s._s(s.$t("users.passwordResetTokenGenerated"))+" "+s._s(s.passwordResetToken))]),s._v(" "),t("p",[s._v(s._s(s.$t("users.linkToResetPassword"))+"\n "),t("a",{staticClass:"reset-password-link",attrs:{href:s.passwordResetLink,target:"_blank"}},[s._v(s._s(s.passwordResetLink))])])])])},[],!1,null,null,null);a.options.__file="ResetPasswordDialog.vue";e.a=a.exports},lOBV:function(s,e,t){},msq4:function(s,e,t){},tPM3:function(s,e,t){"use strict";var r={name:"ModerationDropdown",props:{user:{type:Object,default:function(){return{}}},page:{type:String,default:"users"},statusId:{type:String,default:""}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device}},methods:{getPasswordResetToken:function(s){this.$emit("open-reset-token-dialog"),this.$store.dispatch("GetPasswordResetToken",s)},handleConfirmationResend:function(s){this.$store.dispatch("ResendConfirmationEmail",[s])},handleDeletion:function(s){this.$store.dispatch("DeleteUsers",{users:[s],_userId:s.id})},handleEmailConfirmation:function(s){this.$store.dispatch("ConfirmUsersEmail",{users:[s],_userId:s.id,_statusId:this.statusId})},requirePasswordReset:function(s){this.$store.state.user.nodeInfo.metadata.mailerEnabled?this.$store.dispatch("RequirePasswordReset",[s]):this.$alert(this.$t("users.mailerMustBeEnabled"),"Error",{type:"error"})},showAdminAction:function(s){var e=s.local,t=s.id;return e&&this.showDeactivatedButton(t)},showDeactivatedButton:function(s){return this.$store.state.user.id!==s},toggleActivation:function(s){s.deactivated?this.$store.dispatch("ActivateUsers",{users:[s],_userId:s.id}):this.$store.dispatch("DeactivateUsers",{users:[s],_userId:s.id})},toggleTag:function(s,e){s.tags.includes(e)?this.$store.dispatch("RemoveTag",{users:[s],tag:e,_userId:s.id,_statusId:this.statusId}):this.$store.dispatch("AddTag",{users:[s],tag:e,_userId:s.id,_statusId:this.statusId})},toggleUserRight:function(s,e){s.roles[e]?this.$store.dispatch("DeleteRight",{users:[s],right:e,_userId:s.id,_statusId:this.statusId}):this.$store.dispatch("AddRight",{users:[s],right:e,_userId:s.id,_statusId:this.statusId})}}},i=(t("53Av"),t("KHd+")),a=Object(i.a)(r,function(){var s=this,e=s.$createElement,t=s._self._c||e;return t("el-dropdown",{attrs:{"hide-on-click":!1,size:"small",trigger:"click",placement:"top-start"},nativeOn:{click:function(s){s.stopPropagation()}}},[t("div",["users"===s.page?t("el-button",{staticClass:"el-dropdown-link",attrs:{type:"text"}},[s._v("\n "+s._s(s.$t("users.moderation"))+"\n "),s.isDesktop?t("i",{staticClass:"el-icon-arrow-down el-icon--right"}):s._e()]):s._e(),s._v(" "),"userPage"===s.page||"statusPage"===s.page?t("el-button",{staticClass:"moderate-user-button"},[t("span",{staticClass:"moderate-user-button-container"},[t("span",[t("i",{staticClass:"el-icon-edit"}),s._v("\n "+s._s(s.$t("users.moderateUser"))+"\n ")]),s._v(" "),t("i",{staticClass:"el-icon-arrow-down el-icon--right"})])]):s._e()],1),s._v(" "),t("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[s.showAdminAction(s.user)?t("el-dropdown-item",{nativeOn:{click:function(e){return s.toggleUserRight(s.user,"admin")}}},[s._v("\n "+s._s(s.user.roles.admin?s.$t("users.revokeAdmin"):s.$t("users.grantAdmin"))+"\n ")]):s._e(),s._v(" "),s.showAdminAction(s.user)?t("el-dropdown-item",{nativeOn:{click:function(e){return s.toggleUserRight(s.user,"moderator")}}},[s._v("\n "+s._s(s.user.roles.moderator?s.$t("users.revokeModerator"):s.$t("users.grantModerator"))+"\n ")]):s._e(),s._v(" "),s.showDeactivatedButton(s.user.id)&&"statusPage"!==s.page?t("el-dropdown-item",{attrs:{divided:s.showAdminAction(s.user)},nativeOn:{click:function(e){return s.toggleActivation(s.user)}}},[s._v("\n "+s._s(s.user.deactivated?s.$t("users.activateAccount"):s.$t("users.deactivateAccount"))+"\n ")]):s._e(),s._v(" "),s.showDeactivatedButton(s.user.id)&&"statusPage"!==s.page?t("el-dropdown-item",{nativeOn:{click:function(e){return s.handleDeletion(s.user)}}},[s._v("\n "+s._s(s.$t("users.deleteAccount"))+"\n ")]):s._e(),s._v(" "),s.user.local&&s.user.confirmation_pending?t("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(e){return s.handleEmailConfirmation(s.user)}}},[s._v("\n "+s._s(s.$t("users.confirmAccount"))+"\n ")]):s._e(),s._v(" "),s.user.local&&s.user.confirmation_pending?t("el-dropdown-item",{nativeOn:{click:function(e){return s.handleConfirmationResend(s.user)}}},[s._v("\n "+s._s(s.$t("users.resendConfirmation"))+"\n ")]):s._e(),s._v(" "),t("el-dropdown-item",{class:{"active-tag":s.user.tags.includes("force_nsfw")},attrs:{divided:s.showAdminAction(s.user)},nativeOn:{click:function(e){return s.toggleTag(s.user,"force_nsfw")}}},[s._v("\n "+s._s(s.$t("users.forceNsfw"))+"\n "),s.user.tags.includes("force_nsfw")?t("i",{staticClass:"el-icon-check"}):s._e()]),s._v(" "),t("el-dropdown-item",{class:{"active-tag":s.user.tags.includes("strip_media")},nativeOn:{click:function(e){return s.toggleTag(s.user,"strip_media")}}},[s._v("\n "+s._s(s.$t("users.stripMedia"))+"\n "),s.user.tags.includes("strip_media")?t("i",{staticClass:"el-icon-check"}):s._e()]),s._v(" "),t("el-dropdown-item",{class:{"active-tag":s.user.tags.includes("force_unlisted")},nativeOn:{click:function(e){return s.toggleTag(s.user,"force_unlisted")}}},[s._v("\n "+s._s(s.$t("users.forceUnlisted"))+"\n "),s.user.tags.includes("force_unlisted")?t("i",{staticClass:"el-icon-check"}):s._e()]),s._v(" "),t("el-dropdown-item",{class:{"active-tag":s.user.tags.includes("sandbox")},nativeOn:{click:function(e){return s.toggleTag(s.user,"sandbox")}}},[s._v("\n "+s._s(s.$t("users.sandbox"))+"\n "),s.user.tags.includes("sandbox")?t("i",{staticClass:"el-icon-check"}):s._e()]),s._v(" "),s.user.local?t("el-dropdown-item",{class:{"active-tag":s.user.tags.includes("disable_remote_subscription")},nativeOn:{click:function(e){return s.toggleTag(s.user,"disable_remote_subscription")}}},[s._v("\n "+s._s(s.$t("users.disableRemoteSubscription"))+"\n "),s.user.tags.includes("disable_remote_subscription")?t("i",{staticClass:"el-icon-check"}):s._e()]):s._e(),s._v(" "),s.user.local?t("el-dropdown-item",{class:{"active-tag":s.user.tags.includes("disable_any_subscription")},nativeOn:{click:function(e){return s.toggleTag(s.user,"disable_any_subscription")}}},[s._v("\n "+s._s(s.$t("users.disableAnySubscription"))+"\n "),s.user.tags.includes("disable_any_subscription")?t("i",{staticClass:"el-icon-check"}):s._e()]):s._e(),s._v(" "),s.user.local?t("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(e){return s.getPasswordResetToken(s.user.nickname)}}},[s._v("\n "+s._s(s.$t("users.getPasswordResetToken"))+"\n ")]):s._e(),s._v(" "),s.user.local?t("el-dropdown-item",{nativeOn:{click:function(e){return s.requirePasswordReset(s.user)}}},[s._v("\n "+s._s(s.$t("users.requirePasswordReset"))+"\n ")]):s._e()],1)],1)},[],!1,null,null,null);a.options.__file="ModerationDropdown.vue";e.a=a.exports}}]); +//# sourceMappingURL=chunk-5882.7cbc4c1b.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-5882.7cbc4c1b.js.map b/priv/static/adminfe/static/js/chunk-5882.7cbc4c1b.js.map new file mode 100644 index 000000000..d1aa2037f --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-5882.7cbc4c1b.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/users/components/SecuritySettingsModal.vue?5147","webpack:///./src/views/users/show.vue?ef54","webpack:///./src/views/users/components/SecuritySettingsModal.vue?49db","webpack:///src/views/users/components/SecuritySettingsModal.vue","webpack:///./src/views/users/components/SecuritySettingsModal.vue","webpack:///./src/views/users/components/SecuritySettingsModal.vue?dd3f","webpack:///./src/views/users/show.vue?ac8b","webpack:///src/views/users/show.vue","webpack:///./src/views/users/show.vue","webpack:///./src/views/users/components/ModerationDropdown.vue?e3f0","webpack:///./src/views/users/show.vue?aed3","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/views/users/components/ResetPasswordDialog.vue?0b2b","webpack:///./src/views/users/components/ResetPasswordDialog.vue?31da","webpack:///src/views/users/components/ResetPasswordDialog.vue","webpack:///./src/views/users/components/ResetPasswordDialog.vue","webpack:///./src/views/users/components/ModerationDropdown.vue?ff75","webpack:///./src/views/users/components/ModerationDropdown.vue?676e","webpack:///src/views/users/components/ModerationDropdown.vue","webpack:///./src/views/users/components/ModerationDropdown.vue"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_SecuritySettingsModal_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","components_SecuritySettingsModalvue_type_script_lang_js_","name","props","visible","type","Boolean","default","user","Object","data","securitySettingsForm","newEmail","newPassword","isEmailLoading","isPasswordLoading","computed","isDesktop","this","$store","state","app","device","getLabelWidth","userCredentials","userProfile","mounted","_mounted","asyncToGenerator_default","regenerator_default","a","mark","_callee","wrap","_context","prev","next","dispatch","nickname","email","stop","apply","arguments","methods","updateEmail","_updateEmail","_callee2","credentials","_context2","element_ui_common","message","$t","duration","updatePassword","_updatePassword","_callee3","_context3","password","close","$emit","component","componentNormalizer","_vm","_h","$createElement","_c","_self","staticClass","attrs","before-close","title","model","label-width","label","placeholder","value","callback","$$v","$set","expression","_v","loading","disabled","on","click","$event","_s","minLength","closable","show-icon","length","options","__file","SecuritySettingsModal","users_showvue_type_script_lang_js_","components","ModerationDropdown","RebootButton","ResetPasswordDialog","Status","showPrivate","resetPasswordDialogOpen","securitySettingsModalVisible","isMobile","isTablet","users","statuses","statusesLoading","userProfileLoading","userId","$route","params","id","godmode","closeResetPasswordDialog","humanizeTag","tag","force_nsfw","strip_media","force_unlisted","sandbox","disable_remote_subscription","disable_any_subscription","onTogglePrivate","openResetPasswordDialog","propertyExists","account","property","show_component","_e","src","avatar","size","href","url","target","page","open-reset-token-dialog","reset-password-dialog-open","close-reset-token-dialog","tags","_l","key","roles","moderator","admin","local","deactivated","icon","change","status","show-checkbox","user-id","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ModerationDropdown_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_show_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","map","./af","./af.js","./ar","./ar-dz","./ar-dz.js","./ar-kw","./ar-kw.js","./ar-ly","./ar-ly.js","./ar-ma","./ar-ma.js","./ar-sa","./ar-sa.js","./ar-tn","./ar-tn.js","./ar.js","./az","./az.js","./be","./be.js","./bg","./bg.js","./bm","./bm.js","./bn","./bn.js","./bo","./bo.js","./br","./br.js","./bs","./bs.js","./ca","./ca.js","./cs","./cs.js","./cv","./cv.js","./cy","./cy.js","./da","./da.js","./de","./de-at","./de-at.js","./de-ch","./de-ch.js","./de.js","./dv","./dv.js","./el","./el.js","./en-SG","./en-SG.js","./en-au","./en-au.js","./en-ca","./en-ca.js","./en-gb","./en-gb.js","./en-ie","./en-ie.js","./en-il","./en-il.js","./en-nz","./en-nz.js","./eo","./eo.js","./es","./es-do","./es-do.js","./es-us","./es-us.js","./es.js","./et","./et.js","./eu","./eu.js","./fa","./fa.js","./fi","./fi.js","./fo","./fo.js","./fr","./fr-ca","./fr-ca.js","./fr-ch","./fr-ch.js","./fr.js","./fy","./fy.js","./ga","./ga.js","./gd","./gd.js","./gl","./gl.js","./gom-latn","./gom-latn.js","./gu","./gu.js","./he","./he.js","./hi","./hi.js","./hr","./hr.js","./hu","./hu.js","./hy-am","./hy-am.js","./id","./id.js","./is","./is.js","./it","./it-ch","./it-ch.js","./it.js","./ja","./ja.js","./jv","./jv.js","./ka","./ka.js","./kk","./kk.js","./km","./km.js","./kn","./kn.js","./ko","./ko.js","./ku","./ku.js","./ky","./ky.js","./lb","./lb.js","./lo","./lo.js","./lt","./lt.js","./lv","./lv.js","./me","./me.js","./mi","./mi.js","./mk","./mk.js","./ml","./ml.js","./mn","./mn.js","./mr","./mr.js","./ms","./ms-my","./ms-my.js","./ms.js","./mt","./mt.js","./my","./my.js","./nb","./nb.js","./ne","./ne.js","./nl","./nl-be","./nl-be.js","./nl.js","./nn","./nn.js","./pa-in","./pa-in.js","./pl","./pl.js","./pt","./pt-br","./pt-br.js","./pt.js","./ro","./ro.js","./ru","./ru.js","./sd","./sd.js","./se","./se.js","./si","./si.js","./sk","./sk.js","./sl","./sl.js","./sq","./sq.js","./sr","./sr-cyrl","./sr-cyrl.js","./sr.js","./ss","./ss.js","./sv","./sv.js","./sw","./sw.js","./ta","./ta.js","./te","./te.js","./tet","./tet.js","./tg","./tg.js","./th","./th.js","./tl-ph","./tl-ph.js","./tlh","./tlh.js","./tr","./tr.js","./tzl","./tzl.js","./tzm","./tzm-latn","./tzm-latn.js","./tzm.js","./ug-cn","./ug-cn.js","./uk","./uk.js","./ur","./ur.js","./uz","./uz-latn","./uz-latn.js","./uz.js","./vi","./vi.js","./x-pseudo","./x-pseudo.js","./yo","./yo.js","./zh-cn","./zh-cn.js","./zh-hk","./zh-hk.js","./zh-tw","./zh-tw.js","webpackContext","req","webpackContextResolve","o","e","Error","code","keys","resolve","module","exports","components_ResetPasswordDialogvue_type_script_lang_js_","dialogOpen","passwordResetLink","passwordResetToken","link","token","directives","rawName","custom-class","components_ModerationDropdownvue_type_script_lang_js_","String","statusId","getPasswordResetToken","handleConfirmationResend","handleDeletion","_userId","handleEmailConfirmation","_statusId","requirePasswordReset","nodeInfo","metadata","mailerEnabled","$alert","showAdminAction","_ref","showDeactivatedButton","toggleActivation","toggleTag","includes","toggleUserRight","right","hide-on-click","trigger","placement","nativeOn","stopPropagation","slot","divided","confirmation_pending","class","active-tag"],"mappings":"wGAAA,IAAAA,EAAAC,EAAA,QAAAA,EAAAC,EAAAF,GAAyf,uECAzf,kFCAgOG,GCoDhOC,KAAA,wBACAC,OACAC,SACAC,KAAAC,QACAC,SAAA,GAEAC,MACAH,KAAAI,OACAF,QAAA,WACA,YAIAG,KAdA,WAeA,OACAC,sBACAC,SAAA,GACAC,YAAA,GACAC,gBAAA,EACAC,mBAAA,KAIAC,UACAC,UADA,WAEA,kBAAAC,KAAAC,OAAAC,MAAAC,IAAAC,QAEAC,cAJA,WAKA,OAAAL,KAAAD,UAAA,gBAEAO,gBAPA,WAQA,OAAAN,KAAAC,OAAAC,MAAAK,YAAAD,kBAGAE,QAAA,eAAAC,EAAAC,IAAAC,EAAAC,EAAAC,KAAA,SAAAC,IAAA,OAAAH,EAAAC,EAAAG,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACAlB,KAAAC,OAAAkB,SAAA,wBAAAC,SAAApB,KAAAV,KAAA8B,WADA,OAEApB,KAAAP,qBAAAC,SAAAM,KAAAM,gBAAAe,MAFA,wBAAAL,EAAAM,SAAAR,EAAAd,SAAA,yBAAAS,EAAAc,MAAAvB,KAAAwB,YAAA,GAIAC,SACAC,YADA,eAAAC,EAAAjB,IAAAC,EAAAC,EAAAC,KAAA,SAAAe,IAAA,IAAAC,EAAA,OAAAlB,EAAAC,EAAAG,KAAA,SAAAe,GAAA,cAAAA,EAAAb,KAAAa,EAAAZ,MAAA,cAEAW,GAAAR,MAAArB,KAAAP,qBAAAC,UACAM,KAAAP,qBAAAG,gBAAA,EAHAkC,EAAAZ,KAAA,EAIAlB,KAAAC,OAAAkB,SAAA,yBAAAC,SAAApB,KAAAV,KAAA8B,SAAAS,gBAJA,OAKA7B,KAAAP,qBAAAG,gBAAA,EACAL,OAAAwC,EAAA,QAAAxC,EACAyC,QAAAhC,KAAAiC,GAAA,6CACA9C,KAAA,UACA+C,SAAA,MATA,wBAAAJ,EAAAR,SAAAM,EAAA5B,SAAA,yBAAA2B,EAAAJ,MAAAvB,KAAAwB,YAAA,GAYAW,eAZA,eAAAC,EAAA1B,IAAAC,EAAAC,EAAAC,KAAA,SAAAwB,IAAA,IAAAR,EAAA,OAAAlB,EAAAC,EAAAG,KAAA,SAAAuB,GAAA,cAAAA,EAAArB,KAAAqB,EAAApB,MAAA,cAaAW,GAAAU,SAAAvC,KAAAP,qBAAAE,aACAK,KAAAP,qBAAAI,mBAAA,EAdAyC,EAAApB,KAAA,EAeAlB,KAAAC,OAAAkB,SAAA,yBAAAC,SAAApB,KAAAV,KAAA8B,SAAAS,gBAfA,OAgBA7B,KAAAP,qBAAAI,mBAAA,EACAG,KAAAP,qBAAAE,YAAA,GACAJ,OAAAwC,EAAA,QAAAxC,EACAyC,QAAAhC,KAAAiC,GAAA,gDACA9C,KAAA,UACA+C,SAAA,MArBA,wBAAAI,EAAAhB,SAAAe,EAAArC,SAAA,yBAAAoC,EAAAb,MAAAvB,KAAAwB,YAAA,GAwBAgB,MAxBA,WAyBAxC,KAAAyC,MAAA,uCC3GAC,EAAgBnD,OAAAoD,EAAA,EAAApD,CACdR,ECTQ,WAAgB,IAAA6D,EAAA5C,KAAa6C,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,aAAuBE,YAAA,0BAAAC,OAA6CC,eAAAP,EAAAJ,MAAAY,MAAAR,EAAAX,GAAA,iDAAA/C,QAAA0D,EAAA1D,WAAgH6D,EAAA,WAAgBG,OAAOG,MAAAT,EAAAnD,qBAAA6D,cAAAV,EAAAvC,iBAAkE0C,EAAA,gBAAqBG,OAAOK,MAAAX,EAAAX,GAAA,yCAAsDc,EAAA,YAAiBG,OAAOM,YAAAZ,EAAAX,GAAA,+CAAmEoB,OAAQI,MAAAb,EAAAnD,qBAAA,SAAAiE,SAAA,SAAAC,GAAmEf,EAAAgB,KAAAhB,EAAAnD,qBAAA,WAAAkE,IAAoDE,WAAA,oCAA6C,GAAAjB,EAAAkB,GAAA,KAAAf,EAAA,gBAAAA,EAAA,aAAqDE,YAAA,kCAAAC,OAAqDa,QAAAnB,EAAAnD,qBAAAG,eAAAoE,UAAApB,EAAAnD,qBAAAC,UAAAkD,EAAAnD,qBAAAC,WAAAkD,EAAAtC,gBAAAe,MAAAlC,KAAA,WAAoL8E,IAAKC,MAAA,SAAAC,GAAyB,OAAAvB,EAAAlB,kBAA2BkB,EAAAkB,GAAA,aAAAlB,EAAAwB,GAAAxB,EAAAX,GAAA,0DAAAW,EAAAkB,GAAA,KAAAf,EAAA,gBAA6HE,YAAA,iBAAAC,OAAoCK,MAAAX,EAAAX,GAAA,4CAAyDc,EAAA,YAAiBG,OAAOM,YAAAZ,EAAAX,GAAA,kDAAsEoB,OAAQI,MAAAb,EAAAnD,qBAAA,YAAAiE,SAAA,SAAAC,GAAsEf,EAAAgB,KAAAhB,EAAAnD,qBAAA,cAAAkE,IAAuDE,WAAA,sCAAgDjB,EAAAkB,GAAA,KAAAf,EAAA,SAA0BE,YAAA,cAAwBL,EAAAkB,GAAA,aAAAlB,EAAAwB,GAAAxB,EAAAX,GAAA,qDAA0FoC,UAAA,KAAe,kBAAAzB,EAAAkB,GAAA,KAAAf,EAAA,YAAgDE,YAAA,iBAAAC,OAAoCoB,UAAA,EAAAnF,KAAA,UAAAoF,YAAA,MAAkDxB,EAAA,KAAAH,EAAAkB,GAAAlB,EAAAwB,GAAAxB,EAAAX,GAAA,2DAAAW,EAAAkB,GAAA,KAAAf,EAAA,KAAAH,EAAAkB,GAAAlB,EAAAwB,GAAAxB,EAAAX,GAAA,6DAAAW,EAAAkB,GAAA,KAAAf,EAAA,gBAAAA,EAAA,aAA+OE,YAAA,kCAAAC,OAAqDa,QAAAnB,EAAAnD,qBAAAI,kBAAAmE,SAAApB,EAAAnD,qBAAAE,YAAA6E,OAAA,EAAArF,KAAA,WAAiI8E,IAAKC,MAAA,SAAAC,GAAyB,OAAAvB,EAAAT,qBAA8BS,EAAAkB,GAAA,aAAAlB,EAAAwB,GAAAxB,EAAAX,GAAA,uEDYrwE,EACA,KACA,KACA,MAIAS,EAAA+B,QAAAC,OAAA,4BACe,IAAAC,EAAAjC,kCEpB0LkC,GCyHzM5F,KAAA,YACA6F,YAAAC,qBAAA,EAAAC,eAAA,EAAAC,sBAAA,EAAAC,SAAA,EAAAN,yBACAnF,KAHA,WAIA,OACA0F,aAAA,EACAC,yBAAA,EACAC,8BAAA,IAGAtF,UACAC,UADA,WAEA,kBAAAC,KAAAC,OAAAC,MAAAC,IAAAC,QAEAiF,SAJA,WAKA,iBAAArF,KAAAC,OAAAC,MAAAC,IAAAC,QAEAkF,SAPA,WAQA,iBAAAtF,KAAAC,OAAAC,MAAAC,IAAAC,QAEA2D,QAVA,WAWA,OAAA/D,KAAAC,OAAAC,MAAAqF,MAAAxB,SAEAyB,SAbA,WAcA,OAAAxF,KAAAC,OAAAC,MAAAK,YAAAiF,UAEAC,gBAhBA,WAiBA,OAAAzF,KAAAC,OAAAC,MAAAK,YAAAkF,iBAEAnG,KAnBA,WAoBA,OAAAU,KAAAC,OAAAC,MAAAK,YAAAjB,MAEAoG,mBAtBA,WAuBA,OAAA1F,KAAAC,OAAAC,MAAAK,YAAAmF,oBAEApF,gBAzBA,WA0BA,OAAAN,KAAAC,OAAAC,MAAAK,YAAAD,kBAGAE,QAAA,WACAR,KAAAC,OAAAkB,SAAA,cACAnB,KAAAC,OAAAkB,SAAA,eACAnB,KAAAC,OAAAkB,SAAA,oBAAAwE,OAAA3F,KAAA4F,OAAAC,OAAAC,GAAAC,SAAA,KAEAtE,SACAuE,yBADA,WAEAhG,KAAAmF,yBAAA,EACAnF,KAAAC,OAAAkB,SAAA,wBAEA8E,YALA,SAKAC,GASA,OAPAC,WAAA,aACAC,YAAA,cACAC,eAAA,iBACAC,QAAA,UACAC,4BAAA,8BACAC,yBAAA,4BAEAN,IAEAO,gBAhBA,WAiBAzG,KAAAC,OAAAkB,SAAA,oBAAAwE,OAAA3F,KAAA4F,OAAAC,OAAAC,GAAAC,QAAA/F,KAAAkF,eAEAwB,wBAnBA,WAoBA1G,KAAAmF,yBAAA,GAEAwB,eAtBA,SAsBAC,EAAAC,GACA,OAAAD,EAAAC,MCnLIC,aAAYvH,OAAAoD,EAAA,EAAApD,CACdqF,EPTF,WAA0B,IAAAhC,EAAA5C,KAAa6C,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAD,EAAA8C,mBAA0lL9C,EAAAmE,KAA1lLhE,EAAA,QAAAH,EAAA7C,WAAA6C,EAAA0C,SAAAvC,EAAA,UAAyFE,YAAA,qBAA+BF,EAAA,OAAYE,YAAA,0BAAoCL,EAAA+D,eAAA/D,EAAAtD,KAAA,UAAAyD,EAAA,aAA2DG,OAAO8D,IAAApE,EAAAtD,KAAA2H,OAAAC,KAAA,WAAsCtE,EAAAmE,KAAAnE,EAAAkB,GAAA,KAAAlB,EAAA+D,eAAA/D,EAAAtD,KAAA,YAAAyD,EAAA,MAAAH,EAAAkB,GAAAlB,EAAAwB,GAAAxB,EAAAtD,KAAA8B,aAAA2B,EAAA,MAAwHE,YAAA,YAAsBL,EAAAkB,GAAA,IAAAlB,EAAAwB,GAAAxB,EAAAX,GAAA,iCAAAW,EAAAkB,GAAA,KAAAlB,EAAA+D,eAAA/D,EAAAtD,KAAA,OAAAyD,EAAA,KAAsHG,OAAOiE,KAAAvE,EAAAtD,KAAA8H,IAAAC,OAAA,YAAuCtE,EAAA,KAAUE,YAAA,oBAAAC,OAAuCE,MAAAR,EAAAX,GAAA,0CAAqDW,EAAAmE,MAAA,GAAAnE,EAAAkB,GAAA,KAAAf,EAAA,OAAuCE,YAAA,0BAAoCL,EAAA+D,eAAA/D,EAAAtD,KAAA,YAAAyD,EAAA,uBAAuEG,OAAO5D,KAAAsD,EAAAtD,KAAAgI,KAAA,YAAkCrD,IAAKsD,0BAAA3E,EAAA8D,2BAAuD9D,EAAAmE,KAAAnE,EAAAkB,GAAA,KAAAf,EAAA,uBAAAH,EAAAmE,KAAAnE,EAAAkB,GAAA,KAAAlB,EAAA,SAAAG,EAAA,OAA+FE,YAAA,+BAAyCF,EAAA,UAAeE,YAAA,qBAA+BF,EAAA,OAAYE,YAAA,0BAAoCL,EAAA+D,eAAA/D,EAAAtD,KAAA,UAAAyD,EAAA,aAA2DG,OAAO8D,IAAApE,EAAAtD,KAAA2H,OAAAC,KAAA,WAAsCtE,EAAAmE,KAAAnE,EAAAkB,GAAA,KAAAlB,EAAA+D,eAAA/D,EAAAtD,KAAA,YAAAyD,EAAA,MAAAH,EAAAkB,GAAAlB,EAAAwB,GAAAxB,EAAAtD,KAAA8B,aAAA2B,EAAA,MAAwHE,YAAA,YAAsBL,EAAAkB,GAAA,IAAAlB,EAAAwB,GAAAxB,EAAAX,GAAA,qCAAAW,EAAAkB,GAAA,KAAAf,EAAA,qBAAAH,EAAAkB,GAAA,KAAAlB,EAAA+D,eAAA/D,EAAAtD,KAAA,YAAAyD,EAAA,uBAAqLG,OAAO5D,KAAAsD,EAAAtD,KAAAgI,KAAA,YAAkCrD,IAAKsD,0BAAA3E,EAAA8D,2BAAuD9D,EAAAmE,MAAA,GAAAnE,EAAAmE,KAAAnE,EAAAkB,GAAA,KAAAf,EAAA,yBAAgEG,OAAOsE,6BAAA5E,EAAAuC,yBAAyDlB,IAAKwD,2BAAA7E,EAAAoD,4BAAyDpD,EAAAkB,GAAA,KAAAf,EAAA,OAAwBE,YAAA,2BAAqCF,EAAA,WAAgBE,YAAA,sBAAgCF,EAAA,OAAYE,YAAA,uGAAiHL,EAAA+D,eAAA/D,EAAAtD,KAAA,YAAgHsD,EAAAmE,KAAhHhE,EAAA,UAA2DE,YAAA,mBAAAC,OAAsC/D,KAAA,UAAeyD,EAAAkB,GAAA,eAAAlB,EAAAwB,GAAAxB,EAAAX,GAAA,yCAAAW,EAAAkB,GAAA,KAAAf,EAAA,SAAgHE,YAAA,uBAAiCF,EAAA,SAAAA,EAAA,MAAuBE,YAAA,kBAA4BF,EAAA,MAAWE,YAAA,aAAuBL,EAAAkB,GAAA,QAAAlB,EAAAkB,GAAA,KAAAf,EAAA,MAAsCE,YAAA,cAAwBL,EAAAkB,GAAA,qBAAAlB,EAAAwB,GAAAxB,EAAAtD,KAAAwG,IAAA,wBAAAlD,EAAAkB,GAAA,KAAAf,EAAA,MAA+FE,YAAA,kBAA4BF,EAAA,MAAAH,EAAAkB,GAAAlB,EAAAwB,GAAAxB,EAAAX,GAAA,wBAAAW,EAAAkB,GAAA,KAAAf,EAAA,UAAAH,EAAAtD,KAAAoI,KAAAlD,QAAA5B,EAAA+D,eAAA/D,EAAAtD,KAAA,QAAAsD,EAAA+E,GAAA/E,EAAAtD,KAAA,cAAA4G,GAAiN,OAAAnD,EAAA,UAAoB6E,IAAA1B,EAAAjD,YAAA,qBAAuCL,EAAAkB,GAAAlB,EAAAwB,GAAAxB,EAAAqD,YAAAC,SAA5QnD,EAAA,QAAAH,EAAAkB,GAAA,QAAqT,KAAAlB,EAAAkB,GAAA,KAAAf,EAAA,MAA6BE,YAAA,kBAA4BF,EAAA,MAAAH,EAAAkB,GAAAlB,EAAAwB,GAAAxB,EAAAX,GAAA,yBAAAW,EAAAkB,GAAA,KAAAf,EAAA,MAAAH,EAAAtD,KAAAuI,MAAA,MAAA9E,EAAA,UAAkHE,YAAA,qBAA+BL,EAAAkB,GAAA,uBAAAlB,EAAAwB,GAAAxB,EAAAX,GAAA,wCAAAW,EAAAmE,KAAAnE,EAAAkB,GAAA,KAAAlB,EAAAtD,KAAAuI,MAAA,UAAA9E,EAAA,UAAmJE,YAAA,qBAA+BL,EAAAkB,GAAA,uBAAAlB,EAAAwB,GAAAxB,EAAAX,GAAA,4CAAAW,EAAAmE,KAAAnE,EAAAkB,GAAA,KAAAlB,EAAA+D,eAAA/D,EAAAtD,KAAA,WAAAsD,EAAAtD,KAAAuI,MAAAC,WAAAlF,EAAAtD,KAAAuI,MAAAE,OAAAnF,EAAAmE,KAAAhE,EAAA,QAAAH,EAAAkB,GAAA,aAAAlB,EAAAkB,GAAA,KAAAf,EAAA,MAA6QE,YAAA,kBAA4BF,EAAA,MAAAH,EAAAkB,GAAAlB,EAAAwB,GAAAxB,EAAAX,GAAA,+BAAAW,EAAAkB,GAAA,KAAAf,EAAA,MAAAH,EAAAtD,KAAA,MAAAyD,EAAA,UAAkHG,OAAO/D,KAAA,UAAeyD,EAAAkB,GAAAlB,EAAAwB,GAAAxB,EAAAX,GAAA,yBAAAW,EAAAmE,KAAAnE,EAAAkB,GAAA,KAAAlB,EAAAtD,KAAA0I,MAA0HpF,EAAAmE,KAA1HhE,EAAA,UAAoGG,OAAO/D,KAAA,UAAeyD,EAAAkB,GAAAlB,EAAAwB,GAAAxB,EAAAX,GAAA,kCAAAW,EAAAkB,GAAA,KAAAf,EAAA,MAAuFE,YAAA,kBAA4BF,EAAA,MAAAH,EAAAkB,GAAAlB,EAAAwB,GAAAxB,EAAAX,GAAA,0BAAAW,EAAAkB,GAAA,KAAAf,EAAA,MAAAH,EAAAtD,KAAA2I,YAA6IrF,EAAAmE,KAA7IhE,EAAA,UAAoHG,OAAO/D,KAAA,aAAkByD,EAAAkB,GAAAlB,EAAAwB,GAAAxB,EAAAX,GAAA,0BAAAW,EAAAkB,GAAA,KAAAlB,EAAAtD,KAAA,YAAAyD,EAAA,UAA0GG,OAAO/D,KAAA,YAAiByD,EAAAkB,GAAAlB,EAAAwB,GAAAxB,EAAAX,GAAA,+BAAAW,EAAAmE,MAAA,aAAAnE,EAAAkB,GAAA,KAAAlB,EAAA+D,eAAA/D,EAAAtD,KAAA,YAAAyD,EAAA,aAAoJE,YAAA,0BAAAC,OAA6CgF,KAAA,gBAAsBjE,IAAKC,MAAA,SAAAC,GAAyBvB,EAAAwC,8BAAA,MAA0CxC,EAAAkB,GAAA,aAAAlB,EAAAwB,GAAAxB,EAAAX,GAAA,gEAAAW,EAAAmE,KAAAnE,EAAAkB,GAAA,KAAAlB,EAAA+D,eAAA/D,EAAAtD,KAAA,YAAAyD,EAAA,yBAAgMG,OAAO5D,KAAAsD,EAAAtD,KAAAJ,QAAA0D,EAAAwC,8BAA2DnB,IAAKzB,MAAA,SAAA2B,GAAyBvB,EAAAwC,8BAAA,MAA2CxC,EAAAmE,MAAA,GAAAnE,EAAAkB,GAAA,KAAAf,EAAA,OAAqCE,YAAA,8BAAwCF,EAAA,MAAWE,YAAA,oBAA8BL,EAAAkB,GAAAlB,EAAAwB,GAAAxB,EAAAX,GAAA,kCAAAW,EAAAkB,GAAA,KAAAf,EAAA,eAAuFE,YAAA,wBAAAgB,IAAwCkE,OAAAvF,EAAA6D,iBAA6BpD,OAAQI,MAAAb,EAAA,YAAAc,SAAA,SAAAC,GAAiDf,EAAAsC,YAAAvB,GAAoBE,WAAA,iBAA2BjB,EAAAkB,GAAA,aAAAlB,EAAAwB,GAAAxB,EAAAX,GAAA,+CAAAW,EAAAkB,GAAA,KAAAlB,EAAA6C,gBAA4c7C,EAAAmE,KAA5chE,EAAA,eAAwIE,YAAA,aAAuBL,EAAA+E,GAAA/E,EAAA,kBAAAwF,GAAyC,OAAArF,EAAA,oBAA8B6E,IAAAQ,EAAAtC,KAAc/C,EAAA,UAAeG,OAAOkF,SAAAxB,QAAAwB,EAAAxB,QAAAyB,iBAAA,EAAAC,UAAA1F,EAAAtD,KAAAwG,GAAAC,QAAAnD,EAAAsC,gBAAgH,KAAMtC,EAAAkB,GAAA,SAAAlB,EAAA4C,SAAAhB,OAAAzB,EAAA,KAAkDE,YAAA,gBAA0BL,EAAAkB,GAAAlB,EAAAwB,GAAAxB,EAAAX,GAAA,8BAAAW,EAAAmE,MAAA,oBOYnrL,EACA,KACA,KACA,OAIAD,EAASrC,QAAAC,OAAA,WACM6D,EAAA,QAAAzB,+CCpBf,IAAA0B,EAAA3J,EAAA,QAAAA,EAAAC,EAAA0J,GAAsf,uCCAtf,IAAAC,EAAA5J,EAAA,QAAAA,EAAAC,EAAA2J,GAAsd,wBCAtd,IAAAC,GACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,YAAA,OACAC,eAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,QAAA,OACAC,WAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,QAAA,OACAC,WAAA,OACAC,OAAA,OACAC,UAAA,OACAC,QAAA,OACAC,WAAA,OACAC,QAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,WAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,YAAA,OACAC,eAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,OAAA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","file":"static/js/chunk-5882.7cbc4c1b.js","sourcesContent":["import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SecuritySettingsModal.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SecuritySettingsModal.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.userProfileLoading)?_c('main',[(_vm.isDesktop || _vm.isTablet)?_c('header',{staticClass:\"user-page-header\"},[_c('div',{staticClass:\"avatar-name-container\"},[(_vm.propertyExists(_vm.user, 'avatar'))?_c('el-avatar',{attrs:{\"src\":_vm.user.avatar,\"size\":\"large\"}}):_vm._e(),_vm._v(\" \"),(_vm.propertyExists(_vm.user, 'nickname'))?_c('h1',[_vm._v(_vm._s(_vm.user.nickname))]):_c('h1',{staticClass:\"invalid\"},[_vm._v(\"(\"+_vm._s(_vm.$t('users.invalidNickname'))+\")\")]),_vm._v(\" \"),(_vm.propertyExists(_vm.user, 'url'))?_c('a',{attrs:{\"href\":_vm.user.url,\"target\":\"_blank\"}},[_c('i',{staticClass:\"el-icon-top-right\",attrs:{\"title\":_vm.$t('userProfile.openAccountInInstance')}})]):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"left-header-container\"},[(_vm.propertyExists(_vm.user, 'nickname'))?_c('moderation-dropdown',{attrs:{\"user\":_vm.user,\"page\":'userPage'},on:{\"open-reset-token-dialog\":_vm.openResetPasswordDialog}}):_vm._e(),_vm._v(\" \"),_c('reboot-button')],1)]):_vm._e(),_vm._v(\" \"),(_vm.isMobile)?_c('div',{staticClass:\"user-page-header-container\"},[_c('header',{staticClass:\"user-page-header\"},[_c('div',{staticClass:\"avatar-name-container\"},[(_vm.propertyExists(_vm.user, 'avatar'))?_c('el-avatar',{attrs:{\"src\":_vm.user.avatar,\"size\":\"large\"}}):_vm._e(),_vm._v(\" \"),(_vm.propertyExists(_vm.user, 'nickname'))?_c('h1',[_vm._v(_vm._s(_vm.user.nickname))]):_c('h1',{staticClass:\"invalid\"},[_vm._v(\"(\"+_vm._s(_vm.$t('users.invalidNickname'))+\")\")])],1),_vm._v(\" \"),_c('reboot-button')],1),_vm._v(\" \"),(_vm.propertyExists(_vm.user, 'nickname'))?_c('moderation-dropdown',{attrs:{\"user\":_vm.user,\"page\":'userPage'},on:{\"open-reset-token-dialog\":_vm.openResetPasswordDialog}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('reset-password-dialog',{attrs:{\"reset-password-dialog-open\":_vm.resetPasswordDialogOpen},on:{\"close-reset-token-dialog\":_vm.closeResetPasswordDialog}}),_vm._v(\" \"),_c('div',{staticClass:\"user-profile-container\"},[_c('el-card',{staticClass:\"user-profile-card\"},[_c('div',{staticClass:\"el-table el-table--fit el-table--enable-row-hover el-table--enable-row-transition el-table--medium\"},[(!_vm.propertyExists(_vm.user, 'nickname'))?_c('el-tag',{staticClass:\"invalid-user-tag\",attrs:{\"type\":\"info\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.invalidAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('table',{staticClass:\"user-profile-table\"},[_c('tbody',[_c('tr',{staticClass:\"el-table__row\"},[_c('td',{staticClass:\"name-col\"},[_vm._v(\"ID\")]),_vm._v(\" \"),_c('td',{staticClass:\"value-col\"},[_vm._v(\"\\n \"+_vm._s(_vm.user.id)+\"\\n \")])]),_vm._v(\" \"),_c('tr',{staticClass:\"el-table__row\"},[_c('td',[_vm._v(_vm._s(_vm.$t('userProfile.tags')))]),_vm._v(\" \"),_c('td',[(_vm.user.tags.length === 0 || !_vm.propertyExists(_vm.user, 'tags'))?_c('span',[_vm._v(\"—\")]):_vm._l((_vm.user.tags),function(tag){return _c('el-tag',{key:tag,staticClass:\"user-profile-tag\"},[_vm._v(_vm._s(_vm.humanizeTag(tag)))])})],2)]),_vm._v(\" \"),_c('tr',{staticClass:\"el-table__row\"},[_c('td',[_vm._v(_vm._s(_vm.$t('userProfile.roles')))]),_vm._v(\" \"),_c('td',[(_vm.user.roles.admin)?_c('el-tag',{staticClass:\"user-profile-tag\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.admin'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.roles.moderator)?_c('el-tag',{staticClass:\"user-profile-tag\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.moderator'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(!_vm.propertyExists(_vm.user, 'roles') || (!_vm.user.roles.moderator && !_vm.user.roles.admin))?_c('span',[_vm._v(\"—\")]):_vm._e()],1)]),_vm._v(\" \"),_c('tr',{staticClass:\"el-table__row\"},[_c('td',[_vm._v(_vm._s(_vm.$t('userProfile.accountType')))]),_vm._v(\" \"),_c('td',[(_vm.user.local)?_c('el-tag',{attrs:{\"type\":\"info\"}},[_vm._v(_vm._s(_vm.$t('userProfile.local')))]):_vm._e(),_vm._v(\" \"),(!_vm.user.local)?_c('el-tag',{attrs:{\"type\":\"info\"}},[_vm._v(_vm._s(_vm.$t('userProfile.external')))]):_vm._e()],1)]),_vm._v(\" \"),_c('tr',{staticClass:\"el-table__row\"},[_c('td',[_vm._v(_vm._s(_vm.$t('userProfile.status')))]),_vm._v(\" \"),_c('td',[(!_vm.user.deactivated)?_c('el-tag',{attrs:{\"type\":\"success\"}},[_vm._v(_vm._s(_vm.$t('userProfile.active')))]):_vm._e(),_vm._v(\" \"),(_vm.user.deactivated)?_c('el-tag',{attrs:{\"type\":\"danger\"}},[_vm._v(_vm._s(_vm.$t('userProfile.deactivated')))]):_vm._e()],1)])])])],1),_vm._v(\" \"),(_vm.propertyExists(_vm.user, 'nickname'))?_c('el-button',{staticClass:\"security-setting-button\",attrs:{\"icon\":\"el-icon-lock\"},on:{\"click\":function($event){_vm.securitySettingsModalVisible = true}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('userProfile.securitySettings.securitySettings'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.propertyExists(_vm.user, 'nickname'))?_c('SecuritySettingsModal',{attrs:{\"user\":_vm.user,\"visible\":_vm.securitySettingsModalVisible},on:{\"close\":function($event){_vm.securitySettingsModalVisible = false}}}):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"recent-statuses-container\"},[_c('h2',{staticClass:\"recent-statuses\"},[_vm._v(_vm._s(_vm.$t('userProfile.recentStatuses')))]),_vm._v(\" \"),_c('el-checkbox',{staticClass:\"show-private-statuses\",on:{\"change\":_vm.onTogglePrivate},model:{value:(_vm.showPrivate),callback:function ($$v) {_vm.showPrivate=$$v},expression:\"showPrivate\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.showPrivateStatuses'))+\"\\n \")]),_vm._v(\" \"),(!_vm.statusesLoading)?_c('el-timeline',{staticClass:\"statuses\"},[_vm._l((_vm.statuses),function(status){return _c('el-timeline-item',{key:status.id},[_c('status',{attrs:{\"status\":status,\"account\":status.account,\"show-checkbox\":false,\"user-id\":_vm.user.id,\"godmode\":_vm.showPrivate}})],1)}),_vm._v(\" \"),(_vm.statuses.length === 0)?_c('p',{staticClass:\"no-statuses\"},[_vm._v(_vm._s(_vm.$t('userProfile.noStatuses')))]):_vm._e()],2):_vm._e()],1)],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SecuritySettingsModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SecuritySettingsModal.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./SecuritySettingsModal.vue?vue&type=template&id=7fb08478&\"\nimport script from \"./SecuritySettingsModal.vue?vue&type=script&lang=js&\"\nexport * from \"./SecuritySettingsModal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SecuritySettingsModal.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"SecuritySettingsModal.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{staticClass:\"security-settings-modal\",attrs:{\"before-close\":_vm.close,\"title\":_vm.$t('userProfile.securitySettings.securitySettings'),\"visible\":_vm.visible}},[_c('el-form',{attrs:{\"model\":_vm.securitySettingsForm,\"label-width\":_vm.getLabelWidth}},[_c('el-form-item',{attrs:{\"label\":_vm.$t('userProfile.securitySettings.email')}},[_c('el-input',{attrs:{\"placeholder\":_vm.$t('userProfile.securitySettings.inputNewEmail')},model:{value:(_vm.securitySettingsForm.newEmail),callback:function ($$v) {_vm.$set(_vm.securitySettingsForm, \"newEmail\", $$v)},expression:\"securitySettingsForm.newEmail\"}})],1),_vm._v(\" \"),_c('el-form-item',[_c('el-button',{staticClass:\"security-settings-submit-button\",attrs:{\"loading\":_vm.securitySettingsForm.isEmailLoading,\"disabled\":!_vm.securitySettingsForm.newEmail || _vm.securitySettingsForm.newEmail === _vm.userCredentials.email,\"type\":\"primary\"},on:{\"click\":function($event){return _vm.updateEmail()}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('userProfile.securitySettings.submit'))+\"\\n \")])],1),_vm._v(\" \"),_c('el-form-item',{staticClass:\"password-input\",attrs:{\"label\":_vm.$t('userProfile.securitySettings.password')}},[_c('el-input',{attrs:{\"placeholder\":_vm.$t('userProfile.securitySettings.inputNewPassword')},model:{value:(_vm.securitySettingsForm.newPassword),callback:function ($$v) {_vm.$set(_vm.securitySettingsForm, \"newPassword\", $$v)},expression:\"securitySettingsForm.newPassword\"}}),_vm._v(\" \"),_c('small',{staticClass:\"form-text\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('userProfile.securitySettings.passwordLengthNotice', { minLength: 8 }))+\"\\n \")])],1),_vm._v(\" \"),_c('el-alert',{staticClass:\"password-alert\",attrs:{\"closable\":false,\"type\":\"warning\",\"show-icon\":\"\"}},[_c('p',[_vm._v(_vm._s(_vm.$t('userProfile.securitySettings.passwordChangeWarning1')))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('userProfile.securitySettings.passwordChangeWarning2')))])]),_vm._v(\" \"),_c('el-form-item',[_c('el-button',{staticClass:\"security-settings-submit-button\",attrs:{\"loading\":_vm.securitySettingsForm.isPasswordLoading,\"disabled\":_vm.securitySettingsForm.newPassword.length < 8,\"type\":\"primary\"},on:{\"click\":function($event){return _vm.updatePassword()}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('userProfile.securitySettings.submit'))+\"\\n \")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./show.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./show.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./show.vue?vue&type=template&id=36e4a678&\"\nimport script from \"./show.vue?vue&type=script&lang=js&\"\nexport * from \"./show.vue?vue&type=script&lang=js&\"\nimport style0 from \"./show.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"show.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./show.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./show.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var map = {\n\t\"./af\": \"K/tc\",\n\t\"./af.js\": \"K/tc\",\n\t\"./ar\": \"jnO4\",\n\t\"./ar-dz\": \"o1bE\",\n\t\"./ar-dz.js\": \"o1bE\",\n\t\"./ar-kw\": \"Qj4J\",\n\t\"./ar-kw.js\": \"Qj4J\",\n\t\"./ar-ly\": \"HP3h\",\n\t\"./ar-ly.js\": \"HP3h\",\n\t\"./ar-ma\": \"CoRJ\",\n\t\"./ar-ma.js\": \"CoRJ\",\n\t\"./ar-sa\": \"gjCT\",\n\t\"./ar-sa.js\": \"gjCT\",\n\t\"./ar-tn\": \"bYM6\",\n\t\"./ar-tn.js\": \"bYM6\",\n\t\"./ar.js\": \"jnO4\",\n\t\"./az\": \"SFxW\",\n\t\"./az.js\": \"SFxW\",\n\t\"./be\": \"H8ED\",\n\t\"./be.js\": \"H8ED\",\n\t\"./bg\": \"hKrs\",\n\t\"./bg.js\": \"hKrs\",\n\t\"./bm\": \"p/rL\",\n\t\"./bm.js\": \"p/rL\",\n\t\"./bn\": \"kEOa\",\n\t\"./bn.js\": \"kEOa\",\n\t\"./bo\": \"0mo+\",\n\t\"./bo.js\": \"0mo+\",\n\t\"./br\": \"aIdf\",\n\t\"./br.js\": \"aIdf\",\n\t\"./bs\": \"JVSJ\",\n\t\"./bs.js\": \"JVSJ\",\n\t\"./ca\": \"1xZ4\",\n\t\"./ca.js\": \"1xZ4\",\n\t\"./cs\": \"PA2r\",\n\t\"./cs.js\": \"PA2r\",\n\t\"./cv\": \"A+xa\",\n\t\"./cv.js\": \"A+xa\",\n\t\"./cy\": \"l5ep\",\n\t\"./cy.js\": \"l5ep\",\n\t\"./da\": \"DxQv\",\n\t\"./da.js\": \"DxQv\",\n\t\"./de\": \"tGlX\",\n\t\"./de-at\": \"s+uk\",\n\t\"./de-at.js\": \"s+uk\",\n\t\"./de-ch\": \"u3GI\",\n\t\"./de-ch.js\": \"u3GI\",\n\t\"./de.js\": \"tGlX\",\n\t\"./dv\": \"WYrj\",\n\t\"./dv.js\": \"WYrj\",\n\t\"./el\": \"jUeY\",\n\t\"./el.js\": \"jUeY\",\n\t\"./en-SG\": \"zavE\",\n\t\"./en-SG.js\": \"zavE\",\n\t\"./en-au\": \"Dmvi\",\n\t\"./en-au.js\": \"Dmvi\",\n\t\"./en-ca\": \"OIYi\",\n\t\"./en-ca.js\": \"OIYi\",\n\t\"./en-gb\": \"Oaa7\",\n\t\"./en-gb.js\": \"Oaa7\",\n\t\"./en-ie\": \"4dOw\",\n\t\"./en-ie.js\": \"4dOw\",\n\t\"./en-il\": \"czMo\",\n\t\"./en-il.js\": \"czMo\",\n\t\"./en-nz\": \"b1Dy\",\n\t\"./en-nz.js\": \"b1Dy\",\n\t\"./eo\": \"Zduo\",\n\t\"./eo.js\": \"Zduo\",\n\t\"./es\": \"iYuL\",\n\t\"./es-do\": \"CjzT\",\n\t\"./es-do.js\": \"CjzT\",\n\t\"./es-us\": \"Vclq\",\n\t\"./es-us.js\": \"Vclq\",\n\t\"./es.js\": \"iYuL\",\n\t\"./et\": \"7BjC\",\n\t\"./et.js\": \"7BjC\",\n\t\"./eu\": \"D/JM\",\n\t\"./eu.js\": \"D/JM\",\n\t\"./fa\": \"jfSC\",\n\t\"./fa.js\": \"jfSC\",\n\t\"./fi\": \"gekB\",\n\t\"./fi.js\": \"gekB\",\n\t\"./fo\": \"ByF4\",\n\t\"./fo.js\": \"ByF4\",\n\t\"./fr\": \"nyYc\",\n\t\"./fr-ca\": \"2fjn\",\n\t\"./fr-ca.js\": \"2fjn\",\n\t\"./fr-ch\": \"Dkky\",\n\t\"./fr-ch.js\": \"Dkky\",\n\t\"./fr.js\": \"nyYc\",\n\t\"./fy\": \"cRix\",\n\t\"./fy.js\": \"cRix\",\n\t\"./ga\": \"USCx\",\n\t\"./ga.js\": \"USCx\",\n\t\"./gd\": \"9rRi\",\n\t\"./gd.js\": \"9rRi\",\n\t\"./gl\": \"iEDd\",\n\t\"./gl.js\": \"iEDd\",\n\t\"./gom-latn\": \"DKr+\",\n\t\"./gom-latn.js\": \"DKr+\",\n\t\"./gu\": \"4MV3\",\n\t\"./gu.js\": \"4MV3\",\n\t\"./he\": \"x6pH\",\n\t\"./he.js\": \"x6pH\",\n\t\"./hi\": \"3E1r\",\n\t\"./hi.js\": \"3E1r\",\n\t\"./hr\": \"S6ln\",\n\t\"./hr.js\": \"S6ln\",\n\t\"./hu\": \"WxRl\",\n\t\"./hu.js\": \"WxRl\",\n\t\"./hy-am\": \"1rYy\",\n\t\"./hy-am.js\": \"1rYy\",\n\t\"./id\": \"UDhR\",\n\t\"./id.js\": \"UDhR\",\n\t\"./is\": \"BVg3\",\n\t\"./is.js\": \"BVg3\",\n\t\"./it\": \"bpih\",\n\t\"./it-ch\": \"bxKX\",\n\t\"./it-ch.js\": \"bxKX\",\n\t\"./it.js\": \"bpih\",\n\t\"./ja\": \"B55N\",\n\t\"./ja.js\": \"B55N\",\n\t\"./jv\": \"tUCv\",\n\t\"./jv.js\": \"tUCv\",\n\t\"./ka\": \"IBtZ\",\n\t\"./ka.js\": \"IBtZ\",\n\t\"./kk\": \"bXm7\",\n\t\"./kk.js\": \"bXm7\",\n\t\"./km\": \"6B0Y\",\n\t\"./km.js\": \"6B0Y\",\n\t\"./kn\": \"PpIw\",\n\t\"./kn.js\": \"PpIw\",\n\t\"./ko\": \"Ivi+\",\n\t\"./ko.js\": \"Ivi+\",\n\t\"./ku\": \"JCF/\",\n\t\"./ku.js\": \"JCF/\",\n\t\"./ky\": \"lgnt\",\n\t\"./ky.js\": \"lgnt\",\n\t\"./lb\": \"RAwQ\",\n\t\"./lb.js\": \"RAwQ\",\n\t\"./lo\": \"sp3z\",\n\t\"./lo.js\": \"sp3z\",\n\t\"./lt\": \"JvlW\",\n\t\"./lt.js\": \"JvlW\",\n\t\"./lv\": \"uXwI\",\n\t\"./lv.js\": \"uXwI\",\n\t\"./me\": \"KTz0\",\n\t\"./me.js\": \"KTz0\",\n\t\"./mi\": \"aIsn\",\n\t\"./mi.js\": \"aIsn\",\n\t\"./mk\": \"aQkU\",\n\t\"./mk.js\": \"aQkU\",\n\t\"./ml\": \"AvvY\",\n\t\"./ml.js\": \"AvvY\",\n\t\"./mn\": \"lYtQ\",\n\t\"./mn.js\": \"lYtQ\",\n\t\"./mr\": \"Ob0Z\",\n\t\"./mr.js\": \"Ob0Z\",\n\t\"./ms\": \"6+QB\",\n\t\"./ms-my\": \"ZAMP\",\n\t\"./ms-my.js\": \"ZAMP\",\n\t\"./ms.js\": \"6+QB\",\n\t\"./mt\": \"G0Uy\",\n\t\"./mt.js\": \"G0Uy\",\n\t\"./my\": \"honF\",\n\t\"./my.js\": \"honF\",\n\t\"./nb\": \"bOMt\",\n\t\"./nb.js\": \"bOMt\",\n\t\"./ne\": \"OjkT\",\n\t\"./ne.js\": \"OjkT\",\n\t\"./nl\": \"+s0g\",\n\t\"./nl-be\": \"2ykv\",\n\t\"./nl-be.js\": \"2ykv\",\n\t\"./nl.js\": \"+s0g\",\n\t\"./nn\": \"uEye\",\n\t\"./nn.js\": \"uEye\",\n\t\"./pa-in\": \"8/+R\",\n\t\"./pa-in.js\": \"8/+R\",\n\t\"./pl\": \"jVdC\",\n\t\"./pl.js\": \"jVdC\",\n\t\"./pt\": \"8mBD\",\n\t\"./pt-br\": \"0tRk\",\n\t\"./pt-br.js\": \"0tRk\",\n\t\"./pt.js\": \"8mBD\",\n\t\"./ro\": \"lyxo\",\n\t\"./ro.js\": \"lyxo\",\n\t\"./ru\": \"lXzo\",\n\t\"./ru.js\": \"lXzo\",\n\t\"./sd\": \"Z4QM\",\n\t\"./sd.js\": \"Z4QM\",\n\t\"./se\": \"//9w\",\n\t\"./se.js\": \"//9w\",\n\t\"./si\": \"7aV9\",\n\t\"./si.js\": \"7aV9\",\n\t\"./sk\": \"e+ae\",\n\t\"./sk.js\": \"e+ae\",\n\t\"./sl\": \"gVVK\",\n\t\"./sl.js\": \"gVVK\",\n\t\"./sq\": \"yPMs\",\n\t\"./sq.js\": \"yPMs\",\n\t\"./sr\": \"zx6S\",\n\t\"./sr-cyrl\": \"E+lV\",\n\t\"./sr-cyrl.js\": \"E+lV\",\n\t\"./sr.js\": \"zx6S\",\n\t\"./ss\": \"Ur1D\",\n\t\"./ss.js\": \"Ur1D\",\n\t\"./sv\": \"X709\",\n\t\"./sv.js\": \"X709\",\n\t\"./sw\": \"dNwA\",\n\t\"./sw.js\": \"dNwA\",\n\t\"./ta\": \"PeUW\",\n\t\"./ta.js\": \"PeUW\",\n\t\"./te\": \"XLvN\",\n\t\"./te.js\": \"XLvN\",\n\t\"./tet\": \"V2x9\",\n\t\"./tet.js\": \"V2x9\",\n\t\"./tg\": \"Oxv6\",\n\t\"./tg.js\": \"Oxv6\",\n\t\"./th\": \"EOgW\",\n\t\"./th.js\": \"EOgW\",\n\t\"./tl-ph\": \"Dzi0\",\n\t\"./tl-ph.js\": \"Dzi0\",\n\t\"./tlh\": \"z3Vd\",\n\t\"./tlh.js\": \"z3Vd\",\n\t\"./tr\": \"DoHr\",\n\t\"./tr.js\": \"DoHr\",\n\t\"./tzl\": \"z1FC\",\n\t\"./tzl.js\": \"z1FC\",\n\t\"./tzm\": \"wQk9\",\n\t\"./tzm-latn\": \"tT3J\",\n\t\"./tzm-latn.js\": \"tT3J\",\n\t\"./tzm.js\": \"wQk9\",\n\t\"./ug-cn\": \"YRex\",\n\t\"./ug-cn.js\": \"YRex\",\n\t\"./uk\": \"raLr\",\n\t\"./uk.js\": \"raLr\",\n\t\"./ur\": \"UpQW\",\n\t\"./ur.js\": \"UpQW\",\n\t\"./uz\": \"Loxo\",\n\t\"./uz-latn\": \"AQ68\",\n\t\"./uz-latn.js\": \"AQ68\",\n\t\"./uz.js\": \"Loxo\",\n\t\"./vi\": \"KSF8\",\n\t\"./vi.js\": \"KSF8\",\n\t\"./x-pseudo\": \"/X5v\",\n\t\"./x-pseudo.js\": \"/X5v\",\n\t\"./yo\": \"fzPg\",\n\t\"./yo.js\": \"fzPg\",\n\t\"./zh-cn\": \"XDpg\",\n\t\"./zh-cn.js\": \"XDpg\",\n\t\"./zh-hk\": \"SatO\",\n\t\"./zh-hk.js\": \"SatO\",\n\t\"./zh-tw\": \"kOpN\",\n\t\"./zh-tw.js\": \"kOpN\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"RnhZ\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],attrs:{\"visible\":_vm.dialogOpen,\"title\":_vm.$t('users.passwordResetTokenCreated'),\"custom-class\":\"password-reset-token-dialog\"},on:{\"close\":_vm.closeResetPasswordDialog}},[_c('div',[_c('p',{staticClass:\"password-reset-token\"},[_vm._v(_vm._s(_vm.$t('users.passwordResetTokenGenerated'))+\" \"+_vm._s(_vm.passwordResetToken))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('users.linkToResetPassword'))+\"\\n \"),_c('a',{staticClass:\"reset-password-link\",attrs:{\"href\":_vm.passwordResetLink,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.passwordResetLink))])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPasswordDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPasswordDialog.vue?vue&type=script&lang=js&\"","\n\n\n\n","import { render, staticRenderFns } from \"./ResetPasswordDialog.vue?vue&type=template&id=e7d3eed4&\"\nimport script from \"./ResetPasswordDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./ResetPasswordDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"ResetPasswordDialog.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dropdown',{attrs:{\"hide-on-click\":false,\"size\":\"small\",\"trigger\":\"click\",\"placement\":\"top-start\"},nativeOn:{\"click\":function($event){$event.stopPropagation();}}},[_c('div',[(_vm.page === 'users')?_c('el-button',{staticClass:\"el-dropdown-link\",attrs:{\"type\":\"text\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.moderation'))+\"\\n \"),(_vm.isDesktop)?_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.page === 'userPage' || _vm.page === 'statusPage')?_c('el-button',{staticClass:\"moderate-user-button\"},[_c('span',{staticClass:\"moderate-user-button-container\"},[_c('span',[_c('i',{staticClass:\"el-icon-edit\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('users.moderateUser'))+\"\\n \")]),_vm._v(\" \"),_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"})])]):_vm._e()],1),_vm._v(\" \"),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[(_vm.showAdminAction(_vm.user))?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.toggleUserRight(_vm.user, 'admin')}}},[_vm._v(\"\\n \"+_vm._s(_vm.user.roles.admin ? _vm.$t('users.revokeAdmin') : _vm.$t('users.grantAdmin'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showAdminAction(_vm.user))?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.toggleUserRight(_vm.user, 'moderator')}}},[_vm._v(\"\\n \"+_vm._s(_vm.user.roles.moderator ? _vm.$t('users.revokeModerator') : _vm.$t('users.grantModerator'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showDeactivatedButton(_vm.user.id) && _vm.page !== 'statusPage')?_c('el-dropdown-item',{attrs:{\"divided\":_vm.showAdminAction(_vm.user)},nativeOn:{\"click\":function($event){return _vm.toggleActivation(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.user.deactivated ? _vm.$t('users.activateAccount') : _vm.$t('users.deactivateAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showDeactivatedButton(_vm.user.id) && _vm.page !== 'statusPage')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleDeletion(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.deleteAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.user.confirmation_pending)?_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.handleEmailConfirmation(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.confirmAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.user.confirmation_pending)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleConfirmationResend(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.resendConfirmation'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('force_nsfw') },attrs:{\"divided\":_vm.showAdminAction(_vm.user)},nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'force_nsfw')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.forceNsfw'))+\"\\n \"),(_vm.user.tags.includes('force_nsfw'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('strip_media') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'strip_media')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.stripMedia'))+\"\\n \"),(_vm.user.tags.includes('strip_media'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('force_unlisted') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'force_unlisted')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.forceUnlisted'))+\"\\n \"),(_vm.user.tags.includes('force_unlisted'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('sandbox') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'sandbox')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.sandbox'))+\"\\n \"),(_vm.user.tags.includes('sandbox'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('disable_remote_subscription') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'disable_remote_subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableRemoteSubscription'))+\"\\n \"),(_vm.user.tags.includes('disable_remote_subscription'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('disable_any_subscription') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'disable_any_subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableAnySubscription'))+\"\\n \"),(_vm.user.tags.includes('disable_any_subscription'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.getPasswordResetToken(_vm.user.nickname)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.getPasswordResetToken'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.requirePasswordReset(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.requirePasswordReset'))+\"\\n \")]):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./ModerationDropdown.vue?vue&type=template&id=25dd4f14&\"\nimport script from \"./ModerationDropdown.vue?vue&type=script&lang=js&\"\nexport * from \"./ModerationDropdown.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ModerationDropdown.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"ModerationDropdown.vue\"\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-6b68.fbc0f684.js b/priv/static/adminfe/static/js/chunk-6b68.fbc0f684.js deleted file mode 100644 index bfdf936f8..000000000 --- a/priv/static/adminfe/static/js/chunk-6b68.fbc0f684.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-6b68"],{DMFV:function(t,e,r){},"O/DJ":function(t,e,r){"use strict";var n=r("DMFV");r.n(n).a},i7Kn:function(t,e,r){"use strict";var n=r("o0o1"),s=r.n(n),i=r("yXPU"),a=r.n(i),o={props:{selectedUsers:{type:Array,default:function(){return[]}}},computed:{showDropdownForMultipleUsers:function(){return this.$props.selectedUsers.length>0},isDesktop:function(){return"desktop"===this.$store.state.app.device}},methods:{mappers:function(){var t=this,e=function(){var e=a()(s.a.mark(function e(r,n){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,n(r);case 2:t.$emit("apply-action");case 3:case"end":return e.stop()}},e)}));return function(t,r){return e.apply(this,arguments)}}();return{grantRight:function(r){return function(){var n=function(){var e=a()(s.a.mark(function e(n){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$store.dispatch("AddRight",{users:n,right:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),i=t.selectedUsers.filter(function(e){return e.local&&!e.roles[r]&&t.$store.state.user.id!==e.id});e(i,n)}},revokeRight:function(r){return function(){var n=function(){var e=a()(s.a.mark(function e(n){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$store.dispatch("DeleteRight",{users:n,right:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),i=t.selectedUsers.filter(function(e){return e.local&&e.roles[r]&&t.$store.state.user.id!==e.id});e(i,n)}},activate:function(){var r=t.selectedUsers.filter(function(e){return e.deactivated&&t.$store.state.user.id!==e.id});e(r,function(){var e=a()(s.a.mark(function e(r){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$store.dispatch("ActivateUsers",{users:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}())},deactivate:function(){var r=t.selectedUsers.filter(function(e){return!e.deactivated&&t.$store.state.user.id!==e.id});e(r,function(){var e=a()(s.a.mark(function e(r){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$store.dispatch("DeactivateUsers",{users:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}())},remove:function(){var r=t.selectedUsers.filter(function(e){return t.$store.state.user.id!==e.id});e(r,function(){var e=a()(s.a.mark(function e(r){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$store.dispatch("DeleteUsers",{users:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}())},addTag:function(r){return function(){var n=t.selectedUsers.filter(function(t){return"disable_remote_subscription"===r||"disable_any_subscription"===r?t.local&&!t.tags.includes(r):!t.tags.includes(r)});e(n,function(){var e=a()(s.a.mark(function e(n){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$store.dispatch("AddTag",{users:n,tag:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}())}},removeTag:function(r){return a()(s.a.mark(function n(){var i;return s.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:i=t.selectedUsers.filter(function(t){return"disable_remote_subscription"===r||"disable_any_subscription"===r?t.local&&t.tags.includes(r):t.tags.includes(r)}),e(i,function(){var e=a()(s.a.mark(function e(n){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$store.dispatch("RemoveTag",{users:n,tag:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}());case 3:case"end":return n.stop()}},n)}))},requirePasswordReset:function(){var r=t.selectedUsers.filter(function(t){return t.local});e(r,function(){var e=a()(s.a.mark(function e(r){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$store.dispatch("RequirePasswordReset",r);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}())},confirmAccounts:function(){var r=t.selectedUsers.filter(function(t){return t.local&&t.confirmation_pending});e(r,function(){var e=a()(s.a.mark(function e(r){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$store.dispatch("ConfirmUsersEmail",{users:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}())},resendConfirmation:function(){var r=t.selectedUsers.filter(function(t){return t.local&&t.confirmation_pending});e(r,function(){var e=a()(s.a.mark(function e(r){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$store.dispatch("ResendConfirmationEmail",r);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}())}}},grantRightToMultipleUsers:function(t){var e=this.mappers().grantRight;this.confirmMessage(this.$t("users.grantRightConfirmation",{right:t}),e(t))},revokeRightFromMultipleUsers:function(t){var e=this.mappers().revokeRight;this.confirmMessage(this.$t("users.revokeRightConfirmation",{right:t}),e(t))},activateMultipleUsers:function(){var t=this.mappers().activate;this.confirmMessage(this.$t("users.activateMultipleUsersConfirmation"),t)},deactivateMultipleUsers:function(){var t=this.mappers().deactivate;this.confirmMessage(this.$t("users.deactivateMultipleUsersConfirmation"),t)},deleteMultipleUsers:function(){var t=this.mappers().remove;this.confirmMessage(this.$t("users.deleteMultipleUsersConfirmation"),t)},requirePasswordReset:function(){if(this.$store.state.user.nodeInfo.metadata.mailerEnabled){var t=this.mappers().requirePasswordReset;this.confirmMessage(this.$t("users.requirePasswordResetConfirmation"),t)}else this.$alert(this.$t("users.mailerMustBeEnabled"),"Error",{type:"error"})},addTagForMultipleUsers:function(t){var e=this.mappers().addTag;this.confirmMessage(this.$t("users.addTagForMultipleUsersConfirmation"),e(t))},removeTagFromMultipleUsers:function(t){var e=this.mappers().removeTag;this.confirmMessage(this.$t("users.removeTagFromMultipleUsersConfirmation"),e(t))},confirmAccountsForMultipleUsers:function(){var t=this.mappers().confirmAccounts;this.confirmMessage(this.$t("users.confirmAccountsConfirmation"),t)},resendConfirmationForMultipleUsers:function(){var t=this.mappers().resendConfirmation;this.confirmMessage(this.$t("users.resendEmailConfirmation"),t)},confirmMessage:function(t,e){var r=this;this.$confirm(t,{confirmButtonText:this.$t("users.ok"),cancelButtonText:this.$t("users.cancel"),type:"warning"}).then(function(){e()}).catch(function(){r.$message({type:"info",message:r.$t("users.canceled")})})}}},u=(r("O/DJ"),r("KHd+")),c=Object(u.a)(o,function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("el-dropdown",{attrs:{size:"small",trigger:"click",placement:"bottom-start"}},[t.isDesktop?r("el-button",{staticClass:"actions-button"},[r("span",{staticClass:"actions-button-container"},[r("span",[r("i",{staticClass:"el-icon-edit"}),t._v("\n "+t._s(t.$t("users.moderateUsers"))+"\n ")]),t._v(" "),r("i",{staticClass:"el-icon-arrow-down el-icon--right"})])]):t._e(),t._v(" "),t.showDropdownForMultipleUsers?r("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[r("el-dropdown-item",{nativeOn:{click:function(e){return t.grantRightToMultipleUsers("admin")}}},[t._v("\n "+t._s(t.$t("users.grantAdmin"))+"\n ")]),t._v(" "),r("el-dropdown-item",{nativeOn:{click:function(e){return t.revokeRightFromMultipleUsers("admin")}}},[t._v("\n "+t._s(t.$t("users.revokeAdmin"))+"\n ")]),t._v(" "),r("el-dropdown-item",{nativeOn:{click:function(e){return t.grantRightToMultipleUsers("moderator")}}},[t._v("\n "+t._s(t.$t("users.grantModerator"))+"\n ")]),t._v(" "),r("el-dropdown-item",{nativeOn:{click:function(e){return t.revokeRightFromMultipleUsers("moderator")}}},[t._v("\n "+t._s(t.$t("users.revokeModerator"))+"\n ")]),t._v(" "),r("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(e){return t.confirmAccountsForMultipleUsers(e)}}},[t._v("\n "+t._s(t.$t("users.confirmAccounts"))+"\n ")]),t._v(" "),r("el-dropdown-item",{nativeOn:{click:function(e){return t.resendConfirmationForMultipleUsers(e)}}},[t._v("\n "+t._s(t.$t("users.resendConfirmation"))+"\n ")]),t._v(" "),r("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(e){return t.activateMultipleUsers(e)}}},[t._v("\n "+t._s(t.$t("users.activateAccounts"))+"\n ")]),t._v(" "),r("el-dropdown-item",{nativeOn:{click:function(e){return t.deactivateMultipleUsers(e)}}},[t._v("\n "+t._s(t.$t("users.deactivateAccounts"))+"\n ")]),t._v(" "),r("el-dropdown-item",{nativeOn:{click:function(e){return t.deleteMultipleUsers(e)}}},[t._v("\n "+t._s(t.$t("users.deleteAccounts"))+"\n ")]),t._v(" "),r("el-dropdown-item",{nativeOn:{click:function(e){return t.requirePasswordReset(e)}}},[t._v("\n "+t._s(t.$t("users.requirePasswordReset"))+"\n ")]),t._v(" "),r("el-dropdown-item",{staticClass:"no-hover",attrs:{divided:""}},[r("div",{staticClass:"tag-container"},[r("span",{staticClass:"tag-text"},[t._v(t._s(t.$t("users.forceNsfw")))]),t._v(" "),r("el-button-group",{staticClass:"tag-button-group"},[r("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.addTagForMultipleUsers("force_nsfw")}}},[t._v("\n "+t._s(t.$t("users.apply"))+"\n ")]),t._v(" "),r("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.removeTagFromMultipleUsers("force_nsfw")}}},[t._v("\n "+t._s(t.$t("users.remove"))+"\n ")])],1)],1)]),t._v(" "),r("el-dropdown-item",{staticClass:"no-hover"},[r("div",{staticClass:"tag-container"},[r("span",{staticClass:"tag-text"},[t._v(t._s(t.$t("users.stripMedia")))]),t._v(" "),r("el-button-group",{staticClass:"tag-button-group"},[r("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.addTagForMultipleUsers("strip_media")}}},[t._v("\n "+t._s(t.$t("users.apply"))+"\n ")]),t._v(" "),r("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.removeTagFromMultipleUsers("strip_media")}}},[t._v("\n "+t._s(t.$t("users.remove"))+"\n ")])],1)],1)]),t._v(" "),r("el-dropdown-item",{staticClass:"no-hover"},[r("div",{staticClass:"tag-container"},[r("span",{staticClass:"tag-text"},[t._v(t._s(t.$t("users.forceUnlisted")))]),t._v(" "),r("el-button-group",{staticClass:"tag-button-group"},[r("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.addTagForMultipleUsers("force_unlisted")}}},[t._v("\n "+t._s(t.$t("users.apply"))+"\n ")]),t._v(" "),r("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.removeTagFromMultipleUsers("force_unlisted")}}},[t._v("\n "+t._s(t.$t("users.remove"))+"\n ")])],1)],1)]),t._v(" "),r("el-dropdown-item",{staticClass:"no-hover"},[r("div",{staticClass:"tag-container"},[r("span",{staticClass:"tag-text"},[t._v(t._s(t.$t("users.sandbox")))]),t._v(" "),r("el-button-group",{staticClass:"tag-button-group"},[r("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.addTagForMultipleUsers("sandbox")}}},[t._v("\n "+t._s(t.$t("users.apply"))+"\n ")]),t._v(" "),r("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.removeTagFromMultipleUsers("sandbox")}}},[t._v("\n "+t._s(t.$t("users.remove"))+"\n ")])],1)],1)]),t._v(" "),r("el-dropdown-item",{staticClass:"no-hover"},[r("div",{staticClass:"tag-container"},[r("span",{staticClass:"tag-text"},[t._v(t._s(t.$t("users.disableRemoteSubscriptionForMultiple")))]),t._v(" "),r("el-button-group",{staticClass:"tag-button-group"},[r("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.addTagForMultipleUsers("disable_remote_subscription")}}},[t._v("\n "+t._s(t.$t("users.apply"))+"\n ")]),t._v(" "),r("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.removeTagFromMultipleUsers("disable_remote_subscription")}}},[t._v("\n "+t._s(t.$t("users.remove"))+"\n ")])],1)],1)]),t._v(" "),r("el-dropdown-item",{staticClass:"no-hover"},[r("div",{staticClass:"tag-container"},[r("span",{staticClass:"tag-text"},[t._v(t._s(t.$t("users.disableAnySubscriptionForMultiple")))]),t._v(" "),r("el-button-group",{staticClass:"tag-button-group"},[r("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.addTagForMultipleUsers("disable_any_subscription")}}},[t._v("\n "+t._s(t.$t("users.apply"))+"\n ")]),t._v(" "),r("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.removeTagFromMultipleUsers("disable_any_subscription")}}},[t._v("\n "+t._s(t.$t("users.remove"))+"\n ")])],1)],1)])],1):r("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[r("el-dropdown-item",[t._v("\n "+t._s(t.$t("users.selectUsers"))+"\n ")])],1)],1)},[],!1,null,"3850612b",null);c.options.__file="MultipleUsersMenu.vue";e.a=c.exports},rIUS:function(t,e,r){"use strict";var n=r("o0o1"),s=r.n(n),i=r("yXPU"),a=r.n(i),o=r("mSNy"),u={name:"RebootButton",computed:{needReboot:function(){return this.$store.state.app.needReboot}},methods:{restartApp:function(){var t=a()(s.a.mark(function t(){return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("RestartApplication");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.restartSuccess")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},c=r("KHd+"),l=Object(c.a)(u,function(){var t=this.$createElement,e=this._self._c||t;return this.needReboot?e("el-tooltip",{attrs:{content:this.$t("settings.restartApp"),placement:"bottom-end"}},[e("el-button",{staticClass:"reboot-button",attrs:{type:"warning"},on:{click:this.restartApp}},[e("span",[e("i",{staticClass:"el-icon-refresh"}),this._v("\n "+this._s(this.$t("settings.instanceReboot"))+"\n ")])])],1):this._e()},[],!1,null,null,null);l.options.__file="index.vue";e.a=l.exports}}]); -//# sourceMappingURL=chunk-6b68.fbc0f684.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-6b68.fbc0f684.js.map b/priv/static/adminfe/static/js/chunk-6b68.fbc0f684.js.map deleted file mode 100644 index d1d728b80..000000000 --- a/priv/static/adminfe/static/js/chunk-6b68.fbc0f684.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./src/views/users/components/MultipleUsersMenu.vue?64bc","webpack:///./src/views/users/components/MultipleUsersMenu.vue?25e9","webpack:///./src/views/users/components/MultipleUsersMenu.vue?56ef","webpack:///src/views/users/components/MultipleUsersMenu.vue","webpack:///./src/views/users/components/MultipleUsersMenu.vue","webpack:///./src/components/RebootButton/index.vue?8db4","webpack:///./src/components/RebootButton/index.vue?2f45","webpack:///src/components/RebootButton/index.vue","webpack:///./src/components/RebootButton/index.vue"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_MultipleUsersMenu_vue_vue_type_style_index_0_id_3850612b_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","components_MultipleUsersMenuvue_type_script_lang_js_","props","selectedUsers","type","Array","default","computed","showDropdownForMultipleUsers","this","$props","length","isDesktop","$store","state","app","device","methods","mappers","_this","applyAction","_ref","asyncToGenerator_default","regenerator_default","a","mark","_callee","users","dispatchAction","wrap","_context","prev","next","$emit","stop","_x","_x2","apply","arguments","grantRight","right","addRightFn","_ref2","_callee2","_context2","dispatch","abrupt","sent","_x3","filtered","filter","user","local","roles","id","revokeRight","deleteRightFn","_ref3","_callee3","_context3","_x4","activate","deactivated","_ref4","_callee4","_context4","_x5","deactivate","_ref5","_callee5","_context5","_x6","remove","_ref6","_callee6","_context6","_x7","addTag","tag","tags","includes","_ref7","_callee7","_context7","_x8","removeTag","_callee9","_context9","_ref9","_callee8","_context8","_x9","requirePasswordReset","_ref10","_callee10","_context10","_x10","confirmAccounts","confirmation_pending","_ref11","_callee11","_context11","_x11","resendConfirmation","_ref12","_callee12","_context12","_x12","grantRightToMultipleUsers","confirmMessage","$t","revokeRightFromMultipleUsers","activateMultipleUsers","deactivateMultipleUsers","deleteMultipleUsers","nodeInfo","metadata","mailerEnabled","$alert","addTagForMultipleUsers","removeTagFromMultipleUsers","confirmAccountsForMultipleUsers","resendConfirmationForMultipleUsers","message","_this2","$confirm","confirmButtonText","cancelButtonText","then","catch","$message","component","Object","componentNormalizer","_vm","_h","$createElement","_c","_self","attrs","size","trigger","placement","staticClass","_v","_s","_e","slot","nativeOn","click","$event","divided","options","__file","__webpack_exports__","components_RebootButtonvue_type_script_lang_js_","name","needReboot","restartApp","_restartApp","t0","lang","t","content","on"],"mappings":"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","file":"static/js/chunk-6b68.fbc0f684.js","sourcesContent":["import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MultipleUsersMenu.vue?vue&type=style&index=0&id=3850612b&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MultipleUsersMenu.vue?vue&type=style&index=0&id=3850612b&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dropdown',{attrs:{\"size\":\"small\",\"trigger\":\"click\",\"placement\":\"bottom-start\"}},[(_vm.isDesktop)?_c('el-button',{staticClass:\"actions-button\"},[_c('span',{staticClass:\"actions-button-container\"},[_c('span',[_c('i',{staticClass:\"el-icon-edit\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('users.moderateUsers'))+\"\\n \")]),_vm._v(\" \"),_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"})])]):_vm._e(),_vm._v(\" \"),(_vm.showDropdownForMultipleUsers)?_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.grantRightToMultipleUsers('admin')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.grantAdmin'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.revokeRightFromMultipleUsers('admin')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.revokeAdmin'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.grantRightToMultipleUsers('moderator')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.grantModerator'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.revokeRightFromMultipleUsers('moderator')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.revokeModerator'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.confirmAccountsForMultipleUsers($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.confirmAccounts'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.resendConfirmationForMultipleUsers($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.resendConfirmation'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.activateMultipleUsers($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.activateAccounts'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.deactivateMultipleUsers($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.deactivateAccounts'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.deleteMultipleUsers($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.deleteAccounts'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.requirePasswordReset($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.requirePasswordReset'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{staticClass:\"no-hover\",attrs:{\"divided\":\"\"}},[_c('div',{staticClass:\"tag-container\"},[_c('span',{staticClass:\"tag-text\"},[_vm._v(_vm._s(_vm.$t('users.forceNsfw')))]),_vm._v(\" \"),_c('el-button-group',{staticClass:\"tag-button-group\"},[_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.addTagForMultipleUsers('force_nsfw')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.apply'))+\"\\n \")]),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.removeTagFromMultipleUsers('force_nsfw')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.remove'))+\"\\n \")])],1)],1)]),_vm._v(\" \"),_c('el-dropdown-item',{staticClass:\"no-hover\"},[_c('div',{staticClass:\"tag-container\"},[_c('span',{staticClass:\"tag-text\"},[_vm._v(_vm._s(_vm.$t('users.stripMedia')))]),_vm._v(\" \"),_c('el-button-group',{staticClass:\"tag-button-group\"},[_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.addTagForMultipleUsers('strip_media')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.apply'))+\"\\n \")]),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.removeTagFromMultipleUsers('strip_media')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.remove'))+\"\\n \")])],1)],1)]),_vm._v(\" \"),_c('el-dropdown-item',{staticClass:\"no-hover\"},[_c('div',{staticClass:\"tag-container\"},[_c('span',{staticClass:\"tag-text\"},[_vm._v(_vm._s(_vm.$t('users.forceUnlisted')))]),_vm._v(\" \"),_c('el-button-group',{staticClass:\"tag-button-group\"},[_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.addTagForMultipleUsers('force_unlisted')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.apply'))+\"\\n \")]),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.removeTagFromMultipleUsers('force_unlisted')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.remove'))+\"\\n \")])],1)],1)]),_vm._v(\" \"),_c('el-dropdown-item',{staticClass:\"no-hover\"},[_c('div',{staticClass:\"tag-container\"},[_c('span',{staticClass:\"tag-text\"},[_vm._v(_vm._s(_vm.$t('users.sandbox')))]),_vm._v(\" \"),_c('el-button-group',{staticClass:\"tag-button-group\"},[_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.addTagForMultipleUsers('sandbox')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.apply'))+\"\\n \")]),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.removeTagFromMultipleUsers('sandbox')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.remove'))+\"\\n \")])],1)],1)]),_vm._v(\" \"),_c('el-dropdown-item',{staticClass:\"no-hover\"},[_c('div',{staticClass:\"tag-container\"},[_c('span',{staticClass:\"tag-text\"},[_vm._v(_vm._s(_vm.$t('users.disableRemoteSubscriptionForMultiple')))]),_vm._v(\" \"),_c('el-button-group',{staticClass:\"tag-button-group\"},[_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.addTagForMultipleUsers('disable_remote_subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.apply'))+\"\\n \")]),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.removeTagFromMultipleUsers('disable_remote_subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.remove'))+\"\\n \")])],1)],1)]),_vm._v(\" \"),_c('el-dropdown-item',{staticClass:\"no-hover\"},[_c('div',{staticClass:\"tag-container\"},[_c('span',{staticClass:\"tag-text\"},[_vm._v(_vm._s(_vm.$t('users.disableAnySubscriptionForMultiple')))]),_vm._v(\" \"),_c('el-button-group',{staticClass:\"tag-button-group\"},[_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.addTagForMultipleUsers('disable_any_subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.apply'))+\"\\n \")]),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.removeTagFromMultipleUsers('disable_any_subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.remove'))+\"\\n \")])],1)],1)])],1):_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[_c('el-dropdown-item',[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.selectUsers'))+\"\\n \")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MultipleUsersMenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MultipleUsersMenu.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./MultipleUsersMenu.vue?vue&type=template&id=3850612b&scoped=true&\"\nimport script from \"./MultipleUsersMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./MultipleUsersMenu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MultipleUsersMenu.vue?vue&type=style&index=0&id=3850612b&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3850612b\",\n null\n \n)\n\ncomponent.options.__file = \"MultipleUsersMenu.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.needReboot)?_c('el-tooltip',{attrs:{\"content\":_vm.$t('settings.restartApp'),\"placement\":\"bottom-end\"}},[_c('el-button',{staticClass:\"reboot-button\",attrs:{\"type\":\"warning\"},on:{\"click\":_vm.restartApp}},[_c('span',[_c('i',{staticClass:\"el-icon-refresh\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.instanceReboot'))+\"\\n \")])])],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=53cfaf1d&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-6e81.3733ace2.js b/priv/static/adminfe/static/js/chunk-6e81.6efb01f4.js similarity index 97% rename from priv/static/adminfe/static/js/chunk-6e81.3733ace2.js rename to priv/static/adminfe/static/js/chunk-6e81.6efb01f4.js index c888ce03f..f40d31879 100644 --- a/priv/static/adminfe/static/js/chunk-6e81.3733ace2.js +++ b/priv/static/adminfe/static/js/chunk-6e81.6efb01f4.js @@ -1,2 +1,2 @@ (window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-6e81"],{BF41:function(t,a,i){},"UUO+":function(t,a,i){"use strict";i.r(a);var e=i("zGwZ"),s=i.n(e),r={name:"Page401",data:function(){return{errGif:s.a+"?"+ +new Date,ewizardClap:"https://wpimg.wallstcn.com/007ef517-bafd-4066-aae4-6883632d9646",dialogVisible:!1}},methods:{back:function(){this.$route.query.noGoBack?this.$router.push({path:"/dashboard"}):this.$router.go(-1)}}},n=(i("UrVv"),i("KHd+")),l=Object(n.a)(r,function(){var t=this,a=t.$createElement,i=t._self._c||a;return i("div",{staticClass:"errPage-container"},[i("el-button",{staticClass:"pan-back-btn",attrs:{icon:"arrow-left"},on:{click:t.back}},[t._v("返回")]),t._v(" "),i("el-row",[i("el-col",{attrs:{span:12}},[i("h1",{staticClass:"text-jumbo text-ginormous"},[t._v("Oops!")]),t._v("\n gif来源"),i("a",{attrs:{href:"https://zh.airbnb.com/",target:"_blank"}},[t._v("airbnb")]),t._v(" 页面\n "),i("h2",[t._v("你没有权限去该页面")]),t._v(" "),i("h6",[t._v("如有不满请联系你领导")]),t._v(" "),i("ul",{staticClass:"list-unstyled"},[i("li",[t._v("或者你可以去:")]),t._v(" "),i("li",{staticClass:"link-type"},[i("router-link",{attrs:{to:"/dashboard"}},[t._v("回首页")])],1),t._v(" "),i("li",{staticClass:"link-type"},[i("a",{attrs:{href:"https://www.taobao.com/"}},[t._v("随便看看")])]),t._v(" "),i("li",[i("a",{attrs:{href:"#"},on:{click:function(a){a.preventDefault(),t.dialogVisible=!0}}},[t._v("点我看图")])])])]),t._v(" "),i("el-col",{attrs:{span:12}},[i("img",{attrs:{src:t.errGif,width:"313",height:"428",alt:"Girl has dropped her ice cream."}})])],1),t._v(" "),i("el-dialog",{attrs:{visible:t.dialogVisible,title:"随便看"},on:{"update:visible":function(a){t.dialogVisible=a}}},[i("img",{staticClass:"pan-img",attrs:{src:t.ewizardClap}})])],1)},[],!1,null,"ab9be52c",null);l.options.__file="401.vue";a.default=l.exports},UrVv:function(t,a,i){"use strict";var e=i("BF41");i.n(e).a},zGwZ:function(t,a,i){t.exports=i.p+"static/img/401.089007e.gif"}}]); -//# sourceMappingURL=chunk-6e81.3733ace2.js.map \ No newline at end of file +//# sourceMappingURL=chunk-6e81.6efb01f4.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-6e81.3733ace2.js.map b/priv/static/adminfe/static/js/chunk-6e81.6efb01f4.js.map similarity index 98% rename from priv/static/adminfe/static/js/chunk-6e81.3733ace2.js.map rename to priv/static/adminfe/static/js/chunk-6e81.6efb01f4.js.map index 63128dd67..0390c3309 100644 --- a/priv/static/adminfe/static/js/chunk-6e81.3733ace2.js.map +++ b/priv/static/adminfe/static/js/chunk-6e81.6efb01f4.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///./src/views/errorPage/401.vue?e7a2","webpack:///./src/views/errorPage/401.vue?6307","webpack:///src/views/errorPage/401.vue","webpack:///./src/views/errorPage/401.vue","webpack:///./src/views/errorPage/401.vue?2b76","webpack:///./src/assets/401_images/401.gif"],"names":["errorPage_401vue_type_script_lang_js_","name","data","errGif","_401_default","a","Date","ewizardClap","dialogVisible","methods","back","this","$route","query","noGoBack","$router","push","path","go","component","Object","componentNormalizer","_vm","_h","$createElement","_c","_self","staticClass","attrs","icon","on","click","_v","span","href","target","to","$event","preventDefault","src","width","height","alt","visible","title","update:visible","options","__file","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_401_vue_vue_type_style_index_0_id_ab9be52c_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","module","exports","p"],"mappings":"sIAAA,yBCAwMA,GCgCxMC,KAAA,UACAC,KAAA,WACA,OACAC,OAAAC,EAAAC,EAAA,UAAAC,KACAC,YAAA,kEACAC,eAAA,IAGAC,SACAC,KADA,WAEAC,KAAAC,OAAAC,MAAAC,SACAH,KAAAI,QAAAC,MAAAC,KAAA,eAEAN,KAAAI,QAAAG,IAAA,8BCrCAC,EAAgBC,OAAAC,EAAA,EAAAD,CACdpB,EHTF,WAA0B,IAAAsB,EAAAX,KAAaY,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,sBAAgCF,EAAA,aAAkBE,YAAA,eAAAC,OAAkCC,KAAA,cAAoBC,IAAKC,MAAAT,EAAAZ,QAAkBY,EAAAU,GAAA,QAAAV,EAAAU,GAAA,KAAAP,EAAA,UAAAA,EAAA,UAAuDG,OAAOK,KAAA,MAAWR,EAAA,MAAWE,YAAA,8BAAwCL,EAAAU,GAAA,WAAAV,EAAAU,GAAA,iBAAAP,EAAA,KAAoDG,OAAOM,KAAA,yBAAAC,OAAA,YAAmDb,EAAAU,GAAA,YAAAV,EAAAU,GAAA,eAAAP,EAAA,MAAAH,EAAAU,GAAA,eAAAV,EAAAU,GAAA,KAAAP,EAAA,MAAAH,EAAAU,GAAA,gBAAAV,EAAAU,GAAA,KAAAP,EAAA,MAA2IE,YAAA,kBAA4BF,EAAA,MAAAH,EAAAU,GAAA,aAAAV,EAAAU,GAAA,KAAAP,EAAA,MAAoDE,YAAA,cAAwBF,EAAA,eAAoBG,OAAOQ,GAAA,gBAAmBd,EAAAU,GAAA,aAAAV,EAAAU,GAAA,KAAAP,EAAA,MAA2CE,YAAA,cAAwBF,EAAA,KAAUG,OAAOM,KAAA,6BAAkCZ,EAAAU,GAAA,YAAAV,EAAAU,GAAA,KAAAP,EAAA,MAAAA,EAAA,KAAkDG,OAAOM,KAAA,KAAWJ,IAAKC,MAAA,SAAAM,GAAyBA,EAAAC,iBAAwBhB,EAAAd,eAAA,MAAyBc,EAAAU,GAAA,gBAAAV,EAAAU,GAAA,KAAAP,EAAA,UAAkDG,OAAOK,KAAA,MAAWR,EAAA,OAAYG,OAAOW,IAAAjB,EAAAnB,OAAAqC,MAAA,MAAAC,OAAA,MAAAC,IAAA,wCAAuF,GAAApB,EAAAU,GAAA,KAAAP,EAAA,aAAoCG,OAAOe,QAAArB,EAAAd,cAAAoC,MAAA,OAA0Cd,IAAKe,iBAAA,SAAAR,GAAkCf,EAAAd,cAAA6B,MAA2BZ,EAAA,OAAYE,YAAA,UAAAC,OAA6BW,IAAAjB,EAAAf,kBAAuB,QGYl4C,EACA,KACA,WACA,MAIAY,EAAA2B,QAAAC,OAAA,UACeC,EAAA,QAAA7B,6CCpBf,IAAA8B,EAAAC,EAAA,QAAAA,EAAAC,EAAAF,GAA6e,wBCA7eG,EAAAC,QAAiBH,EAAAI,EAAuB","file":"static/js/chunk-6e81.3733ace2.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"errPage-container\"},[_c('el-button',{staticClass:\"pan-back-btn\",attrs:{\"icon\":\"arrow-left\"},on:{\"click\":_vm.back}},[_vm._v(\"返回\")]),_vm._v(\" \"),_c('el-row',[_c('el-col',{attrs:{\"span\":12}},[_c('h1',{staticClass:\"text-jumbo text-ginormous\"},[_vm._v(\"Oops!\")]),_vm._v(\"\\n gif来源\"),_c('a',{attrs:{\"href\":\"https://zh.airbnb.com/\",\"target\":\"_blank\"}},[_vm._v(\"airbnb\")]),_vm._v(\" 页面\\n \"),_c('h2',[_vm._v(\"你没有权限去该页面\")]),_vm._v(\" \"),_c('h6',[_vm._v(\"如有不满请联系你领导\")]),_vm._v(\" \"),_c('ul',{staticClass:\"list-unstyled\"},[_c('li',[_vm._v(\"或者你可以去:\")]),_vm._v(\" \"),_c('li',{staticClass:\"link-type\"},[_c('router-link',{attrs:{\"to\":\"/dashboard\"}},[_vm._v(\"回首页\")])],1),_vm._v(\" \"),_c('li',{staticClass:\"link-type\"},[_c('a',{attrs:{\"href\":\"https://www.taobao.com/\"}},[_vm._v(\"随便看看\")])]),_vm._v(\" \"),_c('li',[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.dialogVisible=true}}},[_vm._v(\"点我看图\")])])])]),_vm._v(\" \"),_c('el-col',{attrs:{\"span\":12}},[_c('img',{attrs:{\"src\":_vm.errGif,\"width\":\"313\",\"height\":\"428\",\"alt\":\"Girl has dropped her ice cream.\"}})])],1),_vm._v(\" \"),_c('el-dialog',{attrs:{\"visible\":_vm.dialogVisible,\"title\":\"随便看\"},on:{\"update:visible\":function($event){_vm.dialogVisible=$event}}},[_c('img',{staticClass:\"pan-img\",attrs:{\"src\":_vm.ewizardClap}})])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./401.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./401.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./401.vue?vue&type=template&id=ab9be52c&scoped=true&\"\nimport script from \"./401.vue?vue&type=script&lang=js&\"\nexport * from \"./401.vue?vue&type=script&lang=js&\"\nimport style0 from \"./401.vue?vue&type=style&index=0&id=ab9be52c&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ab9be52c\",\n null\n \n)\n\ncomponent.options.__file = \"401.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./401.vue?vue&type=style&index=0&id=ab9be52c&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./401.vue?vue&type=style&index=0&id=ab9be52c&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"static/img/401.089007e.gif\";"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///./src/views/errorPage/401.vue?e7a2","webpack:///./src/views/errorPage/401.vue?6307","webpack:///src/views/errorPage/401.vue","webpack:///./src/views/errorPage/401.vue","webpack:///./src/views/errorPage/401.vue?2b76","webpack:///./src/assets/401_images/401.gif"],"names":["errorPage_401vue_type_script_lang_js_","name","data","errGif","_401_default","a","Date","ewizardClap","dialogVisible","methods","back","this","$route","query","noGoBack","$router","push","path","go","component","Object","componentNormalizer","_vm","_h","$createElement","_c","_self","staticClass","attrs","icon","on","click","_v","span","href","target","to","$event","preventDefault","src","width","height","alt","visible","title","update:visible","options","__file","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_401_vue_vue_type_style_index_0_id_ab9be52c_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","module","exports","p"],"mappings":"sIAAA,yBCAwMA,GCgCxMC,KAAA,UACAC,KAAA,WACA,OACAC,OAAAC,EAAAC,EAAA,UAAAC,KACAC,YAAA,kEACAC,eAAA,IAGAC,SACAC,KADA,WAEAC,KAAAC,OAAAC,MAAAC,SACAH,KAAAI,QAAAC,MAAAC,KAAA,eAEAN,KAAAI,QAAAG,IAAA,8BCrCAC,EAAgBC,OAAAC,EAAA,EAAAD,CACdpB,EHTF,WAA0B,IAAAsB,EAAAX,KAAaY,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,sBAAgCF,EAAA,aAAkBE,YAAA,eAAAC,OAAkCC,KAAA,cAAoBC,IAAKC,MAAAT,EAAAZ,QAAkBY,EAAAU,GAAA,QAAAV,EAAAU,GAAA,KAAAP,EAAA,UAAAA,EAAA,UAAuDG,OAAOK,KAAA,MAAWR,EAAA,MAAWE,YAAA,8BAAwCL,EAAAU,GAAA,WAAAV,EAAAU,GAAA,iBAAAP,EAAA,KAAoDG,OAAOM,KAAA,yBAAAC,OAAA,YAAmDb,EAAAU,GAAA,YAAAV,EAAAU,GAAA,eAAAP,EAAA,MAAAH,EAAAU,GAAA,eAAAV,EAAAU,GAAA,KAAAP,EAAA,MAAAH,EAAAU,GAAA,gBAAAV,EAAAU,GAAA,KAAAP,EAAA,MAA2IE,YAAA,kBAA4BF,EAAA,MAAAH,EAAAU,GAAA,aAAAV,EAAAU,GAAA,KAAAP,EAAA,MAAoDE,YAAA,cAAwBF,EAAA,eAAoBG,OAAOQ,GAAA,gBAAmBd,EAAAU,GAAA,aAAAV,EAAAU,GAAA,KAAAP,EAAA,MAA2CE,YAAA,cAAwBF,EAAA,KAAUG,OAAOM,KAAA,6BAAkCZ,EAAAU,GAAA,YAAAV,EAAAU,GAAA,KAAAP,EAAA,MAAAA,EAAA,KAAkDG,OAAOM,KAAA,KAAWJ,IAAKC,MAAA,SAAAM,GAAyBA,EAAAC,iBAAwBhB,EAAAd,eAAA,MAAyBc,EAAAU,GAAA,gBAAAV,EAAAU,GAAA,KAAAP,EAAA,UAAkDG,OAAOK,KAAA,MAAWR,EAAA,OAAYG,OAAOW,IAAAjB,EAAAnB,OAAAqC,MAAA,MAAAC,OAAA,MAAAC,IAAA,wCAAuF,GAAApB,EAAAU,GAAA,KAAAP,EAAA,aAAoCG,OAAOe,QAAArB,EAAAd,cAAAoC,MAAA,OAA0Cd,IAAKe,iBAAA,SAAAR,GAAkCf,EAAAd,cAAA6B,MAA2BZ,EAAA,OAAYE,YAAA,UAAAC,OAA6BW,IAAAjB,EAAAf,kBAAuB,QGYl4C,EACA,KACA,WACA,MAIAY,EAAA2B,QAAAC,OAAA,UACeC,EAAA,QAAA7B,6CCpBf,IAAA8B,EAAAC,EAAA,QAAAA,EAAAC,EAAAF,GAA6e,wBCA7eG,EAAAC,QAAiBH,EAAAI,EAAuB","file":"static/js/chunk-6e81.6efb01f4.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"errPage-container\"},[_c('el-button',{staticClass:\"pan-back-btn\",attrs:{\"icon\":\"arrow-left\"},on:{\"click\":_vm.back}},[_vm._v(\"返回\")]),_vm._v(\" \"),_c('el-row',[_c('el-col',{attrs:{\"span\":12}},[_c('h1',{staticClass:\"text-jumbo text-ginormous\"},[_vm._v(\"Oops!\")]),_vm._v(\"\\n gif来源\"),_c('a',{attrs:{\"href\":\"https://zh.airbnb.com/\",\"target\":\"_blank\"}},[_vm._v(\"airbnb\")]),_vm._v(\" 页面\\n \"),_c('h2',[_vm._v(\"你没有权限去该页面\")]),_vm._v(\" \"),_c('h6',[_vm._v(\"如有不满请联系你领导\")]),_vm._v(\" \"),_c('ul',{staticClass:\"list-unstyled\"},[_c('li',[_vm._v(\"或者你可以去:\")]),_vm._v(\" \"),_c('li',{staticClass:\"link-type\"},[_c('router-link',{attrs:{\"to\":\"/dashboard\"}},[_vm._v(\"回首页\")])],1),_vm._v(\" \"),_c('li',{staticClass:\"link-type\"},[_c('a',{attrs:{\"href\":\"https://www.taobao.com/\"}},[_vm._v(\"随便看看\")])]),_vm._v(\" \"),_c('li',[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.dialogVisible=true}}},[_vm._v(\"点我看图\")])])])]),_vm._v(\" \"),_c('el-col',{attrs:{\"span\":12}},[_c('img',{attrs:{\"src\":_vm.errGif,\"width\":\"313\",\"height\":\"428\",\"alt\":\"Girl has dropped her ice cream.\"}})])],1),_vm._v(\" \"),_c('el-dialog',{attrs:{\"visible\":_vm.dialogVisible,\"title\":\"随便看\"},on:{\"update:visible\":function($event){_vm.dialogVisible=$event}}},[_c('img',{staticClass:\"pan-img\",attrs:{\"src\":_vm.ewizardClap}})])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./401.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./401.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./401.vue?vue&type=template&id=ab9be52c&scoped=true&\"\nimport script from \"./401.vue?vue&type=script&lang=js&\"\nexport * from \"./401.vue?vue&type=script&lang=js&\"\nimport style0 from \"./401.vue?vue&type=style&index=0&id=ab9be52c&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ab9be52c\",\n null\n \n)\n\ncomponent.options.__file = \"401.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./401.vue?vue&type=style&index=0&id=ab9be52c&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./401.vue?vue&type=style&index=0&id=ab9be52c&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"static/img/401.089007e.gif\";"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-7506.a3364e53.js b/priv/static/adminfe/static/js/chunk-7506.a3364e53.js new file mode 100644 index 000000000..d4eaa356a --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-7506.a3364e53.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-7506"],{"53Av":function(s,e,t){"use strict";var a=t("lOBV");t.n(a).a},RnhZ:function(s,e,t){var a={"./af":"K/tc","./af.js":"K/tc","./ar":"jnO4","./ar-dz":"o1bE","./ar-dz.js":"o1bE","./ar-kw":"Qj4J","./ar-kw.js":"Qj4J","./ar-ly":"HP3h","./ar-ly.js":"HP3h","./ar-ma":"CoRJ","./ar-ma.js":"CoRJ","./ar-sa":"gjCT","./ar-sa.js":"gjCT","./ar-tn":"bYM6","./ar-tn.js":"bYM6","./ar.js":"jnO4","./az":"SFxW","./az.js":"SFxW","./be":"H8ED","./be.js":"H8ED","./bg":"hKrs","./bg.js":"hKrs","./bm":"p/rL","./bm.js":"p/rL","./bn":"kEOa","./bn.js":"kEOa","./bo":"0mo+","./bo.js":"0mo+","./br":"aIdf","./br.js":"aIdf","./bs":"JVSJ","./bs.js":"JVSJ","./ca":"1xZ4","./ca.js":"1xZ4","./cs":"PA2r","./cs.js":"PA2r","./cv":"A+xa","./cv.js":"A+xa","./cy":"l5ep","./cy.js":"l5ep","./da":"DxQv","./da.js":"DxQv","./de":"tGlX","./de-at":"s+uk","./de-at.js":"s+uk","./de-ch":"u3GI","./de-ch.js":"u3GI","./de.js":"tGlX","./dv":"WYrj","./dv.js":"WYrj","./el":"jUeY","./el.js":"jUeY","./en-SG":"zavE","./en-SG.js":"zavE","./en-au":"Dmvi","./en-au.js":"Dmvi","./en-ca":"OIYi","./en-ca.js":"OIYi","./en-gb":"Oaa7","./en-gb.js":"Oaa7","./en-ie":"4dOw","./en-ie.js":"4dOw","./en-il":"czMo","./en-il.js":"czMo","./en-nz":"b1Dy","./en-nz.js":"b1Dy","./eo":"Zduo","./eo.js":"Zduo","./es":"iYuL","./es-do":"CjzT","./es-do.js":"CjzT","./es-us":"Vclq","./es-us.js":"Vclq","./es.js":"iYuL","./et":"7BjC","./et.js":"7BjC","./eu":"D/JM","./eu.js":"D/JM","./fa":"jfSC","./fa.js":"jfSC","./fi":"gekB","./fi.js":"gekB","./fo":"ByF4","./fo.js":"ByF4","./fr":"nyYc","./fr-ca":"2fjn","./fr-ca.js":"2fjn","./fr-ch":"Dkky","./fr-ch.js":"Dkky","./fr.js":"nyYc","./fy":"cRix","./fy.js":"cRix","./ga":"USCx","./ga.js":"USCx","./gd":"9rRi","./gd.js":"9rRi","./gl":"iEDd","./gl.js":"iEDd","./gom-latn":"DKr+","./gom-latn.js":"DKr+","./gu":"4MV3","./gu.js":"4MV3","./he":"x6pH","./he.js":"x6pH","./hi":"3E1r","./hi.js":"3E1r","./hr":"S6ln","./hr.js":"S6ln","./hu":"WxRl","./hu.js":"WxRl","./hy-am":"1rYy","./hy-am.js":"1rYy","./id":"UDhR","./id.js":"UDhR","./is":"BVg3","./is.js":"BVg3","./it":"bpih","./it-ch":"bxKX","./it-ch.js":"bxKX","./it.js":"bpih","./ja":"B55N","./ja.js":"B55N","./jv":"tUCv","./jv.js":"tUCv","./ka":"IBtZ","./ka.js":"IBtZ","./kk":"bXm7","./kk.js":"bXm7","./km":"6B0Y","./km.js":"6B0Y","./kn":"PpIw","./kn.js":"PpIw","./ko":"Ivi+","./ko.js":"Ivi+","./ku":"JCF/","./ku.js":"JCF/","./ky":"lgnt","./ky.js":"lgnt","./lb":"RAwQ","./lb.js":"RAwQ","./lo":"sp3z","./lo.js":"sp3z","./lt":"JvlW","./lt.js":"JvlW","./lv":"uXwI","./lv.js":"uXwI","./me":"KTz0","./me.js":"KTz0","./mi":"aIsn","./mi.js":"aIsn","./mk":"aQkU","./mk.js":"aQkU","./ml":"AvvY","./ml.js":"AvvY","./mn":"lYtQ","./mn.js":"lYtQ","./mr":"Ob0Z","./mr.js":"Ob0Z","./ms":"6+QB","./ms-my":"ZAMP","./ms-my.js":"ZAMP","./ms.js":"6+QB","./mt":"G0Uy","./mt.js":"G0Uy","./my":"honF","./my.js":"honF","./nb":"bOMt","./nb.js":"bOMt","./ne":"OjkT","./ne.js":"OjkT","./nl":"+s0g","./nl-be":"2ykv","./nl-be.js":"2ykv","./nl.js":"+s0g","./nn":"uEye","./nn.js":"uEye","./pa-in":"8/+R","./pa-in.js":"8/+R","./pl":"jVdC","./pl.js":"jVdC","./pt":"8mBD","./pt-br":"0tRk","./pt-br.js":"0tRk","./pt.js":"8mBD","./ro":"lyxo","./ro.js":"lyxo","./ru":"lXzo","./ru.js":"lXzo","./sd":"Z4QM","./sd.js":"Z4QM","./se":"//9w","./se.js":"//9w","./si":"7aV9","./si.js":"7aV9","./sk":"e+ae","./sk.js":"e+ae","./sl":"gVVK","./sl.js":"gVVK","./sq":"yPMs","./sq.js":"yPMs","./sr":"zx6S","./sr-cyrl":"E+lV","./sr-cyrl.js":"E+lV","./sr.js":"zx6S","./ss":"Ur1D","./ss.js":"Ur1D","./sv":"X709","./sv.js":"X709","./sw":"dNwA","./sw.js":"dNwA","./ta":"PeUW","./ta.js":"PeUW","./te":"XLvN","./te.js":"XLvN","./tet":"V2x9","./tet.js":"V2x9","./tg":"Oxv6","./tg.js":"Oxv6","./th":"EOgW","./th.js":"EOgW","./tl-ph":"Dzi0","./tl-ph.js":"Dzi0","./tlh":"z3Vd","./tlh.js":"z3Vd","./tr":"DoHr","./tr.js":"DoHr","./tzl":"z1FC","./tzl.js":"z1FC","./tzm":"wQk9","./tzm-latn":"tT3J","./tzm-latn.js":"tT3J","./tzm.js":"wQk9","./ug-cn":"YRex","./ug-cn.js":"YRex","./uk":"raLr","./uk.js":"raLr","./ur":"UpQW","./ur.js":"UpQW","./uz":"Loxo","./uz-latn":"AQ68","./uz-latn.js":"AQ68","./uz.js":"Loxo","./vi":"KSF8","./vi.js":"KSF8","./x-pseudo":"/X5v","./x-pseudo.js":"/X5v","./yo":"fzPg","./yo.js":"fzPg","./zh-cn":"XDpg","./zh-cn.js":"XDpg","./zh-hk":"SatO","./zh-hk.js":"SatO","./zh-tw":"kOpN","./zh-tw.js":"kOpN"};function r(s){var e=n(s);return t(e)}function n(s){if(!t.o(a,s)){var e=new Error("Cannot find module '"+s+"'");throw e.code="MODULE_NOT_FOUND",e}return a[s]}r.keys=function(){return Object.keys(a)},r.resolve=n,s.exports=r,r.id="RnhZ"},S3Ak:function(s,e,t){"use strict";var a=t("lGnS");t.n(a).a},WjBP:function(s,e,t){"use strict";var a={name:"ResetPasswordDialog",props:{resetPasswordDialogOpen:{type:Boolean,default:!1}},computed:{dialogOpen:function(){return this.resetPasswordDialogOpen},loading:function(){return this.$store.state.users.loading},passwordResetLink:function(){return this.$store.state.users.passwordResetToken.link},passwordResetToken:function(){return this.$store.state.users.passwordResetToken.token}},methods:{closeResetPasswordDialog:function(){this.$emit("close-reset-token-dialog")}}},r=t("KHd+"),n=Object(r.a)(a,function(){var s=this,e=s.$createElement,t=s._self._c||e;return t("el-dialog",{directives:[{name:"loading",rawName:"v-loading",value:s.loading,expression:"loading"}],attrs:{visible:s.dialogOpen,title:s.$t("users.passwordResetTokenCreated"),"custom-class":"password-reset-token-dialog"},on:{close:s.closeResetPasswordDialog}},[t("div",[t("p",{staticClass:"password-reset-token"},[s._v(s._s(s.$t("users.passwordResetTokenGenerated"))+" "+s._s(s.passwordResetToken))]),s._v(" "),t("p",[s._v(s._s(s.$t("users.linkToResetPassword"))+"\n "),t("a",{staticClass:"reset-password-link",attrs:{href:s.passwordResetLink,target:"_blank"}},[s._v(s._s(s.passwordResetLink))])])])])},[],!1,null,null,null);n.options.__file="ResetPasswordDialog.vue";e.a=n.exports},lGnS:function(s,e,t){},lOBV:function(s,e,t){},rwwt:function(s,e,t){"use strict";t.r(e);var a=t("ot3S"),r=t("tPM3"),n=t("rIUS"),i=t("WjBP"),o={name:"StatusShow",components:{ModerationDropdown:r.a,RebootButton:n.a,ResetPasswordDialog:i.a,Status:a.a},data:function(){return{showPrivate:!1,resetPasswordDialogOpen:!1}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device},isTablet:function(){return"tablet"===this.$store.state.app.device},loading:function(){return this.$store.state.status.loading},status:function(){return this.$store.state.status.fetchedStatus},statuses:function(){return this.$store.state.userProfile.statuses},statusesLoading:function(){return this.$store.state.userProfile.statusesLoading},user:function(){return this.$store.state.status.statusAuthor}},beforeMount:function(){this.$store.dispatch("NeedReboot"),this.$store.dispatch("GetNodeInfo"),this.$store.dispatch("FetchStatus",this.$route.params.id)},methods:{closeResetPasswordDialog:function(){this.resetPasswordDialogOpen=!1,this.$store.dispatch("RemovePasswordToken")},onTogglePrivate:function(){this.$store.dispatch("FetchUserStatuses",{userId:this.user.id,godmode:this.showPrivate})},openResetPasswordDialog:function(){this.resetPasswordDialogOpen=!0},propertyExists:function(s,e){return s[e]}}},u=(t("S3Ak"),t("KHd+")),d=Object(u.a)(o,function(){var s=this,e=s.$createElement,t=s._self._c||e;return s.loading?s._e():t("div",{staticClass:"status-show-container"},[s.isDesktop||s.isTablet?t("header",{staticClass:"user-page-header"},[t("div",{staticClass:"avatar-name-container"},[s.propertyExists(s.user,"id")?t("router-link",{staticClass:"router-link",attrs:{to:{name:"UsersShow",params:{id:s.user.id}}}},[t("div",{staticClass:"avatar-name-header"},[s.propertyExists(s.user,"avatar")?t("el-avatar",{attrs:{src:s.user.avatar,size:"large"}}):s._e(),s._v(" "),s.propertyExists(s.user,"nickname")?t("h1",[s._v(s._s(s.user.nickname))]):t("h1",{staticClass:"invalid"},[s._v("("+s._s(s.$t("users.invalidNickname"))+")")])],1)]):s._e(),s._v(" "),s.propertyExists(s.user,"url")?t("a",{attrs:{href:s.user.url,target:"_blank"}},[t("i",{staticClass:"el-icon-top-right",attrs:{title:s.$t("userProfile.openAccountInInstance")}})]):s._e()],1),s._v(" "),t("div",{staticClass:"left-header-container"},[t("moderation-dropdown",{attrs:{user:s.user,page:"statusPage","status-id":s.status.id},on:{"open-reset-token-dialog":s.openResetPasswordDialog}}),s._v(" "),t("reboot-button")],1)]):s._e(),s._v(" "),s.isMobile?t("div",{staticClass:"status-page-header-container"},[t("header",{staticClass:"user-page-header"},[t("div",{staticClass:"avatar-name-container"},[s.propertyExists(s.user,"avatar")?t("el-avatar",{attrs:{src:s.user.avatar,size:"large"}}):s._e(),s._v(" "),s.propertyExists(s.user,"nickname")?t("h1",[s._v(s._s(s.user.nickname))]):s._e()],1),s._v(" "),t("reboot-button")],1),s._v(" "),t("moderation-dropdown",{attrs:{user:s.user,page:"userPage"},on:{"open-reset-token-dialog":s.openResetPasswordDialog}})],1):s._e(),s._v(" "),t("reset-password-dialog",{attrs:{"reset-password-dialog-open":s.resetPasswordDialogOpen},on:{"close-reset-token-dialog":s.closeResetPasswordDialog}}),s._v(" "),t("div",{staticClass:"status-container"},[t("status",{attrs:{status:s.status,account:s.user,"show-checkbox":!1,godmode:s.showPrivate}})],1),s._v(" "),t("div",{staticClass:"recent-statuses-container-show"},[s.propertyExists(s.user,"nickname")?t("h2",{staticClass:"recent-statuses"},[s._v("\n "+s._s(s.$t("userProfile.recentStatuses"))+" by "+s._s(s.user.nickname)+"\n ")]):t("h2",{staticClass:"recent-statuses"},[s._v(s._s(s.$t("userProfile.recentStatuses")))]),s._v(" "),t("el-checkbox",{staticClass:"show-private-statuses",on:{change:s.onTogglePrivate},model:{value:s.showPrivate,callback:function(e){s.showPrivate=e},expression:"showPrivate"}},[s._v("\n "+s._s(s.$t("statuses.showPrivateStatuses"))+"\n ")]),s._v(" "),s.statusesLoading?s._e():t("el-timeline",{staticClass:"statuses"},[s._l(s.statuses,function(e){return t("el-timeline-item",{key:e.id},[t("status",{attrs:{status:e,account:e.account,"show-checkbox":!1,"user-id":s.user.id,godmode:s.showPrivate}})],1)}),s._v(" "),0===s.statuses.length?t("p",{staticClass:"no-statuses"},[s._v(s._s(s.$t("userProfile.noStatuses")))]):s._e()],2)],1)],1)},[],!1,null,null,null);d.options.__file="show.vue";e.default=d.exports},tPM3:function(s,e,t){"use strict";var a={name:"ModerationDropdown",props:{user:{type:Object,default:function(){return{}}},page:{type:String,default:"users"},statusId:{type:String,default:""}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device}},methods:{getPasswordResetToken:function(s){this.$emit("open-reset-token-dialog"),this.$store.dispatch("GetPasswordResetToken",s)},handleConfirmationResend:function(s){this.$store.dispatch("ResendConfirmationEmail",[s])},handleDeletion:function(s){this.$store.dispatch("DeleteUsers",{users:[s],_userId:s.id})},handleEmailConfirmation:function(s){this.$store.dispatch("ConfirmUsersEmail",{users:[s],_userId:s.id,_statusId:this.statusId})},requirePasswordReset:function(s){this.$store.state.user.nodeInfo.metadata.mailerEnabled?this.$store.dispatch("RequirePasswordReset",[s]):this.$alert(this.$t("users.mailerMustBeEnabled"),"Error",{type:"error"})},showAdminAction:function(s){var e=s.local,t=s.id;return e&&this.showDeactivatedButton(t)},showDeactivatedButton:function(s){return this.$store.state.user.id!==s},toggleActivation:function(s){s.deactivated?this.$store.dispatch("ActivateUsers",{users:[s],_userId:s.id}):this.$store.dispatch("DeactivateUsers",{users:[s],_userId:s.id})},toggleTag:function(s,e){s.tags.includes(e)?this.$store.dispatch("RemoveTag",{users:[s],tag:e,_userId:s.id,_statusId:this.statusId}):this.$store.dispatch("AddTag",{users:[s],tag:e,_userId:s.id,_statusId:this.statusId})},toggleUserRight:function(s,e){s.roles[e]?this.$store.dispatch("DeleteRight",{users:[s],right:e,_userId:s.id,_statusId:this.statusId}):this.$store.dispatch("AddRight",{users:[s],right:e,_userId:s.id,_statusId:this.statusId})}}},r=(t("53Av"),t("KHd+")),n=Object(r.a)(a,function(){var s=this,e=s.$createElement,t=s._self._c||e;return t("el-dropdown",{attrs:{"hide-on-click":!1,size:"small",trigger:"click",placement:"top-start"},nativeOn:{click:function(s){s.stopPropagation()}}},[t("div",["users"===s.page?t("el-button",{staticClass:"el-dropdown-link",attrs:{type:"text"}},[s._v("\n "+s._s(s.$t("users.moderation"))+"\n "),s.isDesktop?t("i",{staticClass:"el-icon-arrow-down el-icon--right"}):s._e()]):s._e(),s._v(" "),"userPage"===s.page||"statusPage"===s.page?t("el-button",{staticClass:"moderate-user-button"},[t("span",{staticClass:"moderate-user-button-container"},[t("span",[t("i",{staticClass:"el-icon-edit"}),s._v("\n "+s._s(s.$t("users.moderateUser"))+"\n ")]),s._v(" "),t("i",{staticClass:"el-icon-arrow-down el-icon--right"})])]):s._e()],1),s._v(" "),t("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[s.showAdminAction(s.user)?t("el-dropdown-item",{nativeOn:{click:function(e){return s.toggleUserRight(s.user,"admin")}}},[s._v("\n "+s._s(s.user.roles.admin?s.$t("users.revokeAdmin"):s.$t("users.grantAdmin"))+"\n ")]):s._e(),s._v(" "),s.showAdminAction(s.user)?t("el-dropdown-item",{nativeOn:{click:function(e){return s.toggleUserRight(s.user,"moderator")}}},[s._v("\n "+s._s(s.user.roles.moderator?s.$t("users.revokeModerator"):s.$t("users.grantModerator"))+"\n ")]):s._e(),s._v(" "),s.showDeactivatedButton(s.user.id)&&"statusPage"!==s.page?t("el-dropdown-item",{attrs:{divided:s.showAdminAction(s.user)},nativeOn:{click:function(e){return s.toggleActivation(s.user)}}},[s._v("\n "+s._s(s.user.deactivated?s.$t("users.activateAccount"):s.$t("users.deactivateAccount"))+"\n ")]):s._e(),s._v(" "),s.showDeactivatedButton(s.user.id)&&"statusPage"!==s.page?t("el-dropdown-item",{nativeOn:{click:function(e){return s.handleDeletion(s.user)}}},[s._v("\n "+s._s(s.$t("users.deleteAccount"))+"\n ")]):s._e(),s._v(" "),s.user.local&&s.user.confirmation_pending?t("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(e){return s.handleEmailConfirmation(s.user)}}},[s._v("\n "+s._s(s.$t("users.confirmAccount"))+"\n ")]):s._e(),s._v(" "),s.user.local&&s.user.confirmation_pending?t("el-dropdown-item",{nativeOn:{click:function(e){return s.handleConfirmationResend(s.user)}}},[s._v("\n "+s._s(s.$t("users.resendConfirmation"))+"\n ")]):s._e(),s._v(" "),t("el-dropdown-item",{class:{"active-tag":s.user.tags.includes("force_nsfw")},attrs:{divided:s.showAdminAction(s.user)},nativeOn:{click:function(e){return s.toggleTag(s.user,"force_nsfw")}}},[s._v("\n "+s._s(s.$t("users.forceNsfw"))+"\n "),s.user.tags.includes("force_nsfw")?t("i",{staticClass:"el-icon-check"}):s._e()]),s._v(" "),t("el-dropdown-item",{class:{"active-tag":s.user.tags.includes("strip_media")},nativeOn:{click:function(e){return s.toggleTag(s.user,"strip_media")}}},[s._v("\n "+s._s(s.$t("users.stripMedia"))+"\n "),s.user.tags.includes("strip_media")?t("i",{staticClass:"el-icon-check"}):s._e()]),s._v(" "),t("el-dropdown-item",{class:{"active-tag":s.user.tags.includes("force_unlisted")},nativeOn:{click:function(e){return s.toggleTag(s.user,"force_unlisted")}}},[s._v("\n "+s._s(s.$t("users.forceUnlisted"))+"\n "),s.user.tags.includes("force_unlisted")?t("i",{staticClass:"el-icon-check"}):s._e()]),s._v(" "),t("el-dropdown-item",{class:{"active-tag":s.user.tags.includes("sandbox")},nativeOn:{click:function(e){return s.toggleTag(s.user,"sandbox")}}},[s._v("\n "+s._s(s.$t("users.sandbox"))+"\n "),s.user.tags.includes("sandbox")?t("i",{staticClass:"el-icon-check"}):s._e()]),s._v(" "),s.user.local?t("el-dropdown-item",{class:{"active-tag":s.user.tags.includes("disable_remote_subscription")},nativeOn:{click:function(e){return s.toggleTag(s.user,"disable_remote_subscription")}}},[s._v("\n "+s._s(s.$t("users.disableRemoteSubscription"))+"\n "),s.user.tags.includes("disable_remote_subscription")?t("i",{staticClass:"el-icon-check"}):s._e()]):s._e(),s._v(" "),s.user.local?t("el-dropdown-item",{class:{"active-tag":s.user.tags.includes("disable_any_subscription")},nativeOn:{click:function(e){return s.toggleTag(s.user,"disable_any_subscription")}}},[s._v("\n "+s._s(s.$t("users.disableAnySubscription"))+"\n "),s.user.tags.includes("disable_any_subscription")?t("i",{staticClass:"el-icon-check"}):s._e()]):s._e(),s._v(" "),s.user.local?t("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(e){return s.getPasswordResetToken(s.user.nickname)}}},[s._v("\n "+s._s(s.$t("users.getPasswordResetToken"))+"\n ")]):s._e(),s._v(" "),s.user.local?t("el-dropdown-item",{nativeOn:{click:function(e){return s.requirePasswordReset(s.user)}}},[s._v("\n "+s._s(s.$t("users.requirePasswordReset"))+"\n ")]):s._e()],1)],1)},[],!1,null,null,null);n.options.__file="ModerationDropdown.vue";e.a=n.exports}}]); +//# sourceMappingURL=chunk-7506.a3364e53.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-7506.a3364e53.js.map b/priv/static/adminfe/static/js/chunk-7506.a3364e53.js.map new file mode 100644 index 000000000..c8e9db8e0 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-7506.a3364e53.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/users/components/ModerationDropdown.vue?e3f0","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/views/statuses/show.vue?2896","webpack:///./src/views/users/components/ResetPasswordDialog.vue?0b2b","webpack:///./src/views/users/components/ResetPasswordDialog.vue?31da","webpack:///src/views/users/components/ResetPasswordDialog.vue","webpack:///./src/views/users/components/ResetPasswordDialog.vue","webpack:///./src/views/statuses/show.vue?82c4","webpack:///./src/views/statuses/show.vue?6fdf","webpack:///src/views/statuses/show.vue","webpack:///./src/views/statuses/show.vue","webpack:///./src/views/users/components/ModerationDropdown.vue?ff75","webpack:///./src/views/users/components/ModerationDropdown.vue?676e","webpack:///src/views/users/components/ModerationDropdown.vue","webpack:///./src/views/users/components/ModerationDropdown.vue"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ModerationDropdown_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","map","./af","./af.js","./ar","./ar-dz","./ar-dz.js","./ar-kw","./ar-kw.js","./ar-ly","./ar-ly.js","./ar-ma","./ar-ma.js","./ar-sa","./ar-sa.js","./ar-tn","./ar-tn.js","./ar.js","./az","./az.js","./be","./be.js","./bg","./bg.js","./bm","./bm.js","./bn","./bn.js","./bo","./bo.js","./br","./br.js","./bs","./bs.js","./ca","./ca.js","./cs","./cs.js","./cv","./cv.js","./cy","./cy.js","./da","./da.js","./de","./de-at","./de-at.js","./de-ch","./de-ch.js","./de.js","./dv","./dv.js","./el","./el.js","./en-SG","./en-SG.js","./en-au","./en-au.js","./en-ca","./en-ca.js","./en-gb","./en-gb.js","./en-ie","./en-ie.js","./en-il","./en-il.js","./en-nz","./en-nz.js","./eo","./eo.js","./es","./es-do","./es-do.js","./es-us","./es-us.js","./es.js","./et","./et.js","./eu","./eu.js","./fa","./fa.js","./fi","./fi.js","./fo","./fo.js","./fr","./fr-ca","./fr-ca.js","./fr-ch","./fr-ch.js","./fr.js","./fy","./fy.js","./ga","./ga.js","./gd","./gd.js","./gl","./gl.js","./gom-latn","./gom-latn.js","./gu","./gu.js","./he","./he.js","./hi","./hi.js","./hr","./hr.js","./hu","./hu.js","./hy-am","./hy-am.js","./id","./id.js","./is","./is.js","./it","./it-ch","./it-ch.js","./it.js","./ja","./ja.js","./jv","./jv.js","./ka","./ka.js","./kk","./kk.js","./km","./km.js","./kn","./kn.js","./ko","./ko.js","./ku","./ku.js","./ky","./ky.js","./lb","./lb.js","./lo","./lo.js","./lt","./lt.js","./lv","./lv.js","./me","./me.js","./mi","./mi.js","./mk","./mk.js","./ml","./ml.js","./mn","./mn.js","./mr","./mr.js","./ms","./ms-my","./ms-my.js","./ms.js","./mt","./mt.js","./my","./my.js","./nb","./nb.js","./ne","./ne.js","./nl","./nl-be","./nl-be.js","./nl.js","./nn","./nn.js","./pa-in","./pa-in.js","./pl","./pl.js","./pt","./pt-br","./pt-br.js","./pt.js","./ro","./ro.js","./ru","./ru.js","./sd","./sd.js","./se","./se.js","./si","./si.js","./sk","./sk.js","./sl","./sl.js","./sq","./sq.js","./sr","./sr-cyrl","./sr-cyrl.js","./sr.js","./ss","./ss.js","./sv","./sv.js","./sw","./sw.js","./ta","./ta.js","./te","./te.js","./tet","./tet.js","./tg","./tg.js","./th","./th.js","./tl-ph","./tl-ph.js","./tlh","./tlh.js","./tr","./tr.js","./tzl","./tzl.js","./tzm","./tzm-latn","./tzm-latn.js","./tzm.js","./ug-cn","./ug-cn.js","./uk","./uk.js","./ur","./ur.js","./uz","./uz-latn","./uz-latn.js","./uz.js","./vi","./vi.js","./x-pseudo","./x-pseudo.js","./yo","./yo.js","./zh-cn","./zh-cn.js","./zh-hk","./zh-hk.js","./zh-tw","./zh-tw.js","webpackContext","req","id","webpackContextResolve","o","e","Error","code","keys","Object","resolve","module","exports","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_show_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","components_ResetPasswordDialogvue_type_script_lang_js_","name","props","resetPasswordDialogOpen","type","Boolean","default","computed","dialogOpen","this","loading","$store","state","users","passwordResetLink","passwordResetToken","link","token","methods","closeResetPasswordDialog","$emit","component","componentNormalizer","_vm","_h","$createElement","_c","_self","directives","rawName","value","expression","attrs","visible","title","$t","custom-class","on","close","staticClass","_v","_s","href","target","options","__file","__webpack_exports__","statuses_showvue_type_script_lang_js_","components","ModerationDropdown","RebootButton","ResetPasswordDialog","Status","data","showPrivate","isDesktop","app","device","isMobile","isTablet","status","fetchedStatus","statuses","userProfile","statusesLoading","user","statusAuthor","beforeMount","dispatch","$route","params","onTogglePrivate","userId","godmode","openResetPasswordDialog","propertyExists","account","property","_e","to","src","avatar","size","nickname","url","page","status-id","open-reset-token-dialog","reset-password-dialog-open","close-reset-token-dialog","show-checkbox","change","model","callback","$$v","_l","key","user-id","length","components_ModerationDropdownvue_type_script_lang_js_","String","statusId","getPasswordResetToken","handleConfirmationResend","handleDeletion","_userId","handleEmailConfirmation","_statusId","requirePasswordReset","nodeInfo","metadata","mailerEnabled","$alert","showAdminAction","_ref","local","showDeactivatedButton","toggleActivation","deactivated","toggleTag","tag","tags","includes","toggleUserRight","right","roles","hide-on-click","trigger","placement","nativeOn","click","$event","stopPropagation","slot","admin","moderator","divided","confirmation_pending","class","active-tag"],"mappings":"wGAAA,IAAAA,EAAAC,EAAA,QAAAA,EAAAC,EAAAF,GAAsf,wBCAtf,IAAAG,GACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,YAAA,OACAC,eAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,O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","file":"static/js/chunk-7506.a3364e53.js","sourcesContent":["import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var map = {\n\t\"./af\": \"K/tc\",\n\t\"./af.js\": \"K/tc\",\n\t\"./ar\": \"jnO4\",\n\t\"./ar-dz\": \"o1bE\",\n\t\"./ar-dz.js\": \"o1bE\",\n\t\"./ar-kw\": \"Qj4J\",\n\t\"./ar-kw.js\": \"Qj4J\",\n\t\"./ar-ly\": \"HP3h\",\n\t\"./ar-ly.js\": \"HP3h\",\n\t\"./ar-ma\": \"CoRJ\",\n\t\"./ar-ma.js\": \"CoRJ\",\n\t\"./ar-sa\": \"gjCT\",\n\t\"./ar-sa.js\": \"gjCT\",\n\t\"./ar-tn\": \"bYM6\",\n\t\"./ar-tn.js\": \"bYM6\",\n\t\"./ar.js\": \"jnO4\",\n\t\"./az\": \"SFxW\",\n\t\"./az.js\": \"SFxW\",\n\t\"./be\": \"H8ED\",\n\t\"./be.js\": \"H8ED\",\n\t\"./bg\": \"hKrs\",\n\t\"./bg.js\": \"hKrs\",\n\t\"./bm\": \"p/rL\",\n\t\"./bm.js\": \"p/rL\",\n\t\"./bn\": \"kEOa\",\n\t\"./bn.js\": \"kEOa\",\n\t\"./bo\": \"0mo+\",\n\t\"./bo.js\": \"0mo+\",\n\t\"./br\": \"aIdf\",\n\t\"./br.js\": \"aIdf\",\n\t\"./bs\": \"JVSJ\",\n\t\"./bs.js\": \"JVSJ\",\n\t\"./ca\": \"1xZ4\",\n\t\"./ca.js\": \"1xZ4\",\n\t\"./cs\": \"PA2r\",\n\t\"./cs.js\": \"PA2r\",\n\t\"./cv\": \"A+xa\",\n\t\"./cv.js\": \"A+xa\",\n\t\"./cy\": \"l5ep\",\n\t\"./cy.js\": \"l5ep\",\n\t\"./da\": \"DxQv\",\n\t\"./da.js\": \"DxQv\",\n\t\"./de\": \"tGlX\",\n\t\"./de-at\": \"s+uk\",\n\t\"./de-at.js\": \"s+uk\",\n\t\"./de-ch\": \"u3GI\",\n\t\"./de-ch.js\": \"u3GI\",\n\t\"./de.js\": \"tGlX\",\n\t\"./dv\": \"WYrj\",\n\t\"./dv.js\": \"WYrj\",\n\t\"./el\": \"jUeY\",\n\t\"./el.js\": \"jUeY\",\n\t\"./en-SG\": \"zavE\",\n\t\"./en-SG.js\": \"zavE\",\n\t\"./en-au\": \"Dmvi\",\n\t\"./en-au.js\": \"Dmvi\",\n\t\"./en-ca\": \"OIYi\",\n\t\"./en-ca.js\": \"OIYi\",\n\t\"./en-gb\": \"Oaa7\",\n\t\"./en-gb.js\": \"Oaa7\",\n\t\"./en-ie\": \"4dOw\",\n\t\"./en-ie.js\": \"4dOw\",\n\t\"./en-il\": \"czMo\",\n\t\"./en-il.js\": \"czMo\",\n\t\"./en-nz\": \"b1Dy\",\n\t\"./en-nz.js\": \"b1Dy\",\n\t\"./eo\": \"Zduo\",\n\t\"./eo.js\": \"Zduo\",\n\t\"./es\": \"iYuL\",\n\t\"./es-do\": \"CjzT\",\n\t\"./es-do.js\": \"CjzT\",\n\t\"./es-us\": \"Vclq\",\n\t\"./es-us.js\": \"Vclq\",\n\t\"./es.js\": \"iYuL\",\n\t\"./et\": \"7BjC\",\n\t\"./et.js\": \"7BjC\",\n\t\"./eu\": \"D/JM\",\n\t\"./eu.js\": \"D/JM\",\n\t\"./fa\": \"jfSC\",\n\t\"./fa.js\": \"jfSC\",\n\t\"./fi\": \"gekB\",\n\t\"./fi.js\": \"gekB\",\n\t\"./fo\": \"ByF4\",\n\t\"./fo.js\": \"ByF4\",\n\t\"./fr\": \"nyYc\",\n\t\"./fr-ca\": \"2fjn\",\n\t\"./fr-ca.js\": \"2fjn\",\n\t\"./fr-ch\": \"Dkky\",\n\t\"./fr-ch.js\": \"Dkky\",\n\t\"./fr.js\": \"nyYc\",\n\t\"./fy\": \"cRix\",\n\t\"./fy.js\": \"cRix\",\n\t\"./ga\": \"USCx\",\n\t\"./ga.js\": \"USCx\",\n\t\"./gd\": \"9rRi\",\n\t\"./gd.js\": \"9rRi\",\n\t\"./gl\": \"iEDd\",\n\t\"./gl.js\": \"iEDd\",\n\t\"./gom-latn\": \"DKr+\",\n\t\"./gom-latn.js\": \"DKr+\",\n\t\"./gu\": \"4MV3\",\n\t\"./gu.js\": \"4MV3\",\n\t\"./he\": \"x6pH\",\n\t\"./he.js\": \"x6pH\",\n\t\"./hi\": \"3E1r\",\n\t\"./hi.js\": \"3E1r\",\n\t\"./hr\": \"S6ln\",\n\t\"./hr.js\": \"S6ln\",\n\t\"./hu\": \"WxRl\",\n\t\"./hu.js\": \"WxRl\",\n\t\"./hy-am\": \"1rYy\",\n\t\"./hy-am.js\": \"1rYy\",\n\t\"./id\": \"UDhR\",\n\t\"./id.js\": \"UDhR\",\n\t\"./is\": \"BVg3\",\n\t\"./is.js\": \"BVg3\",\n\t\"./it\": \"bpih\",\n\t\"./it-ch\": \"bxKX\",\n\t\"./it-ch.js\": \"bxKX\",\n\t\"./it.js\": \"bpih\",\n\t\"./ja\": \"B55N\",\n\t\"./ja.js\": \"B55N\",\n\t\"./jv\": \"tUCv\",\n\t\"./jv.js\": \"tUCv\",\n\t\"./ka\": \"IBtZ\",\n\t\"./ka.js\": \"IBtZ\",\n\t\"./kk\": \"bXm7\",\n\t\"./kk.js\": \"bXm7\",\n\t\"./km\": \"6B0Y\",\n\t\"./km.js\": \"6B0Y\",\n\t\"./kn\": \"PpIw\",\n\t\"./kn.js\": \"PpIw\",\n\t\"./ko\": \"Ivi+\",\n\t\"./ko.js\": \"Ivi+\",\n\t\"./ku\": \"JCF/\",\n\t\"./ku.js\": \"JCF/\",\n\t\"./ky\": \"lgnt\",\n\t\"./ky.js\": \"lgnt\",\n\t\"./lb\": \"RAwQ\",\n\t\"./lb.js\": \"RAwQ\",\n\t\"./lo\": \"sp3z\",\n\t\"./lo.js\": \"sp3z\",\n\t\"./lt\": \"JvlW\",\n\t\"./lt.js\": \"JvlW\",\n\t\"./lv\": \"uXwI\",\n\t\"./lv.js\": \"uXwI\",\n\t\"./me\": \"KTz0\",\n\t\"./me.js\": \"KTz0\",\n\t\"./mi\": \"aIsn\",\n\t\"./mi.js\": \"aIsn\",\n\t\"./mk\": \"aQkU\",\n\t\"./mk.js\": \"aQkU\",\n\t\"./ml\": \"AvvY\",\n\t\"./ml.js\": \"AvvY\",\n\t\"./mn\": \"lYtQ\",\n\t\"./mn.js\": \"lYtQ\",\n\t\"./mr\": \"Ob0Z\",\n\t\"./mr.js\": \"Ob0Z\",\n\t\"./ms\": \"6+QB\",\n\t\"./ms-my\": \"ZAMP\",\n\t\"./ms-my.js\": \"ZAMP\",\n\t\"./ms.js\": \"6+QB\",\n\t\"./mt\": \"G0Uy\",\n\t\"./mt.js\": \"G0Uy\",\n\t\"./my\": \"honF\",\n\t\"./my.js\": \"honF\",\n\t\"./nb\": \"bOMt\",\n\t\"./nb.js\": \"bOMt\",\n\t\"./ne\": \"OjkT\",\n\t\"./ne.js\": \"OjkT\",\n\t\"./nl\": \"+s0g\",\n\t\"./nl-be\": \"2ykv\",\n\t\"./nl-be.js\": \"2ykv\",\n\t\"./nl.js\": \"+s0g\",\n\t\"./nn\": \"uEye\",\n\t\"./nn.js\": \"uEye\",\n\t\"./pa-in\": \"8/+R\",\n\t\"./pa-in.js\": \"8/+R\",\n\t\"./pl\": \"jVdC\",\n\t\"./pl.js\": \"jVdC\",\n\t\"./pt\": \"8mBD\",\n\t\"./pt-br\": \"0tRk\",\n\t\"./pt-br.js\": \"0tRk\",\n\t\"./pt.js\": \"8mBD\",\n\t\"./ro\": \"lyxo\",\n\t\"./ro.js\": \"lyxo\",\n\t\"./ru\": \"lXzo\",\n\t\"./ru.js\": \"lXzo\",\n\t\"./sd\": \"Z4QM\",\n\t\"./sd.js\": \"Z4QM\",\n\t\"./se\": \"//9w\",\n\t\"./se.js\": \"//9w\",\n\t\"./si\": \"7aV9\",\n\t\"./si.js\": \"7aV9\",\n\t\"./sk\": \"e+ae\",\n\t\"./sk.js\": \"e+ae\",\n\t\"./sl\": \"gVVK\",\n\t\"./sl.js\": \"gVVK\",\n\t\"./sq\": \"yPMs\",\n\t\"./sq.js\": \"yPMs\",\n\t\"./sr\": \"zx6S\",\n\t\"./sr-cyrl\": \"E+lV\",\n\t\"./sr-cyrl.js\": \"E+lV\",\n\t\"./sr.js\": \"zx6S\",\n\t\"./ss\": \"Ur1D\",\n\t\"./ss.js\": \"Ur1D\",\n\t\"./sv\": \"X709\",\n\t\"./sv.js\": \"X709\",\n\t\"./sw\": \"dNwA\",\n\t\"./sw.js\": \"dNwA\",\n\t\"./ta\": \"PeUW\",\n\t\"./ta.js\": \"PeUW\",\n\t\"./te\": \"XLvN\",\n\t\"./te.js\": \"XLvN\",\n\t\"./tet\": \"V2x9\",\n\t\"./tet.js\": \"V2x9\",\n\t\"./tg\": \"Oxv6\",\n\t\"./tg.js\": \"Oxv6\",\n\t\"./th\": \"EOgW\",\n\t\"./th.js\": \"EOgW\",\n\t\"./tl-ph\": \"Dzi0\",\n\t\"./tl-ph.js\": \"Dzi0\",\n\t\"./tlh\": \"z3Vd\",\n\t\"./tlh.js\": \"z3Vd\",\n\t\"./tr\": \"DoHr\",\n\t\"./tr.js\": \"DoHr\",\n\t\"./tzl\": \"z1FC\",\n\t\"./tzl.js\": \"z1FC\",\n\t\"./tzm\": \"wQk9\",\n\t\"./tzm-latn\": \"tT3J\",\n\t\"./tzm-latn.js\": \"tT3J\",\n\t\"./tzm.js\": \"wQk9\",\n\t\"./ug-cn\": \"YRex\",\n\t\"./ug-cn.js\": \"YRex\",\n\t\"./uk\": \"raLr\",\n\t\"./uk.js\": \"raLr\",\n\t\"./ur\": \"UpQW\",\n\t\"./ur.js\": \"UpQW\",\n\t\"./uz\": \"Loxo\",\n\t\"./uz-latn\": \"AQ68\",\n\t\"./uz-latn.js\": \"AQ68\",\n\t\"./uz.js\": \"Loxo\",\n\t\"./vi\": \"KSF8\",\n\t\"./vi.js\": \"KSF8\",\n\t\"./x-pseudo\": \"/X5v\",\n\t\"./x-pseudo.js\": \"/X5v\",\n\t\"./yo\": \"fzPg\",\n\t\"./yo.js\": \"fzPg\",\n\t\"./zh-cn\": \"XDpg\",\n\t\"./zh-cn.js\": \"XDpg\",\n\t\"./zh-hk\": \"SatO\",\n\t\"./zh-hk.js\": \"SatO\",\n\t\"./zh-tw\": \"kOpN\",\n\t\"./zh-tw.js\": \"kOpN\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"RnhZ\";","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./show.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./show.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],attrs:{\"visible\":_vm.dialogOpen,\"title\":_vm.$t('users.passwordResetTokenCreated'),\"custom-class\":\"password-reset-token-dialog\"},on:{\"close\":_vm.closeResetPasswordDialog}},[_c('div',[_c('p',{staticClass:\"password-reset-token\"},[_vm._v(_vm._s(_vm.$t('users.passwordResetTokenGenerated'))+\" \"+_vm._s(_vm.passwordResetToken))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('users.linkToResetPassword'))+\"\\n \"),_c('a',{staticClass:\"reset-password-link\",attrs:{\"href\":_vm.passwordResetLink,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.passwordResetLink))])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPasswordDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPasswordDialog.vue?vue&type=script&lang=js&\"","\n\n\n\n","import { render, staticRenderFns } from \"./ResetPasswordDialog.vue?vue&type=template&id=e7d3eed4&\"\nimport script from \"./ResetPasswordDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./ResetPasswordDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"ResetPasswordDialog.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"status-show-container\"},[(_vm.isDesktop || _vm.isTablet)?_c('header',{staticClass:\"user-page-header\"},[_c('div',{staticClass:\"avatar-name-container\"},[(_vm.propertyExists(_vm.user, 'id'))?_c('router-link',{staticClass:\"router-link\",attrs:{\"to\":{ name: 'UsersShow', params: { id: _vm.user.id }}}},[_c('div',{staticClass:\"avatar-name-header\"},[(_vm.propertyExists(_vm.user, 'avatar'))?_c('el-avatar',{attrs:{\"src\":_vm.user.avatar,\"size\":\"large\"}}):_vm._e(),_vm._v(\" \"),(_vm.propertyExists(_vm.user, 'nickname'))?_c('h1',[_vm._v(_vm._s(_vm.user.nickname))]):_c('h1',{staticClass:\"invalid\"},[_vm._v(\"(\"+_vm._s(_vm.$t('users.invalidNickname'))+\")\")])],1)]):_vm._e(),_vm._v(\" \"),(_vm.propertyExists(_vm.user, 'url'))?_c('a',{attrs:{\"href\":_vm.user.url,\"target\":\"_blank\"}},[_c('i',{staticClass:\"el-icon-top-right\",attrs:{\"title\":_vm.$t('userProfile.openAccountInInstance')}})]):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"left-header-container\"},[_c('moderation-dropdown',{attrs:{\"user\":_vm.user,\"page\":'statusPage',\"status-id\":_vm.status.id},on:{\"open-reset-token-dialog\":_vm.openResetPasswordDialog}}),_vm._v(\" \"),_c('reboot-button')],1)]):_vm._e(),_vm._v(\" \"),(_vm.isMobile)?_c('div',{staticClass:\"status-page-header-container\"},[_c('header',{staticClass:\"user-page-header\"},[_c('div',{staticClass:\"avatar-name-container\"},[(_vm.propertyExists(_vm.user, 'avatar'))?_c('el-avatar',{attrs:{\"src\":_vm.user.avatar,\"size\":\"large\"}}):_vm._e(),_vm._v(\" \"),(_vm.propertyExists(_vm.user, 'nickname'))?_c('h1',[_vm._v(_vm._s(_vm.user.nickname))]):_vm._e()],1),_vm._v(\" \"),_c('reboot-button')],1),_vm._v(\" \"),_c('moderation-dropdown',{attrs:{\"user\":_vm.user,\"page\":'userPage'},on:{\"open-reset-token-dialog\":_vm.openResetPasswordDialog}})],1):_vm._e(),_vm._v(\" \"),_c('reset-password-dialog',{attrs:{\"reset-password-dialog-open\":_vm.resetPasswordDialogOpen},on:{\"close-reset-token-dialog\":_vm.closeResetPasswordDialog}}),_vm._v(\" \"),_c('div',{staticClass:\"status-container\"},[_c('status',{attrs:{\"status\":_vm.status,\"account\":_vm.user,\"show-checkbox\":false,\"godmode\":_vm.showPrivate}})],1),_vm._v(\" \"),_c('div',{staticClass:\"recent-statuses-container-show\"},[(_vm.propertyExists(_vm.user, 'nickname'))?_c('h2',{staticClass:\"recent-statuses\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('userProfile.recentStatuses'))+\" by \"+_vm._s(_vm.user.nickname)+\"\\n \")]):_c('h2',{staticClass:\"recent-statuses\"},[_vm._v(_vm._s(_vm.$t('userProfile.recentStatuses')))]),_vm._v(\" \"),_c('el-checkbox',{staticClass:\"show-private-statuses\",on:{\"change\":_vm.onTogglePrivate},model:{value:(_vm.showPrivate),callback:function ($$v) {_vm.showPrivate=$$v},expression:\"showPrivate\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.showPrivateStatuses'))+\"\\n \")]),_vm._v(\" \"),(!_vm.statusesLoading)?_c('el-timeline',{staticClass:\"statuses\"},[_vm._l((_vm.statuses),function(status){return _c('el-timeline-item',{key:status.id},[_c('status',{attrs:{\"status\":status,\"account\":status.account,\"show-checkbox\":false,\"user-id\":_vm.user.id,\"godmode\":_vm.showPrivate}})],1)}),_vm._v(\" \"),(_vm.statuses.length === 0)?_c('p',{staticClass:\"no-statuses\"},[_vm._v(_vm._s(_vm.$t('userProfile.noStatuses')))]):_vm._e()],2):_vm._e()],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./show.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./show.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./show.vue?vue&type=template&id=30447ae0&\"\nimport script from \"./show.vue?vue&type=script&lang=js&\"\nexport * from \"./show.vue?vue&type=script&lang=js&\"\nimport style0 from \"./show.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"show.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dropdown',{attrs:{\"hide-on-click\":false,\"size\":\"small\",\"trigger\":\"click\",\"placement\":\"top-start\"},nativeOn:{\"click\":function($event){$event.stopPropagation();}}},[_c('div',[(_vm.page === 'users')?_c('el-button',{staticClass:\"el-dropdown-link\",attrs:{\"type\":\"text\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.moderation'))+\"\\n \"),(_vm.isDesktop)?_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.page === 'userPage' || _vm.page === 'statusPage')?_c('el-button',{staticClass:\"moderate-user-button\"},[_c('span',{staticClass:\"moderate-user-button-container\"},[_c('span',[_c('i',{staticClass:\"el-icon-edit\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('users.moderateUser'))+\"\\n \")]),_vm._v(\" \"),_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"})])]):_vm._e()],1),_vm._v(\" \"),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[(_vm.showAdminAction(_vm.user))?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.toggleUserRight(_vm.user, 'admin')}}},[_vm._v(\"\\n \"+_vm._s(_vm.user.roles.admin ? _vm.$t('users.revokeAdmin') : _vm.$t('users.grantAdmin'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showAdminAction(_vm.user))?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.toggleUserRight(_vm.user, 'moderator')}}},[_vm._v(\"\\n \"+_vm._s(_vm.user.roles.moderator ? _vm.$t('users.revokeModerator') : _vm.$t('users.grantModerator'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showDeactivatedButton(_vm.user.id) && _vm.page !== 'statusPage')?_c('el-dropdown-item',{attrs:{\"divided\":_vm.showAdminAction(_vm.user)},nativeOn:{\"click\":function($event){return _vm.toggleActivation(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.user.deactivated ? _vm.$t('users.activateAccount') : _vm.$t('users.deactivateAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showDeactivatedButton(_vm.user.id) && _vm.page !== 'statusPage')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleDeletion(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.deleteAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.user.confirmation_pending)?_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.handleEmailConfirmation(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.confirmAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.user.confirmation_pending)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleConfirmationResend(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.resendConfirmation'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('force_nsfw') },attrs:{\"divided\":_vm.showAdminAction(_vm.user)},nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'force_nsfw')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.forceNsfw'))+\"\\n \"),(_vm.user.tags.includes('force_nsfw'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('strip_media') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'strip_media')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.stripMedia'))+\"\\n \"),(_vm.user.tags.includes('strip_media'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('force_unlisted') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'force_unlisted')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.forceUnlisted'))+\"\\n \"),(_vm.user.tags.includes('force_unlisted'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('sandbox') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'sandbox')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.sandbox'))+\"\\n \"),(_vm.user.tags.includes('sandbox'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('disable_remote_subscription') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'disable_remote_subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableRemoteSubscription'))+\"\\n \"),(_vm.user.tags.includes('disable_remote_subscription'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('disable_any_subscription') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'disable_any_subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableAnySubscription'))+\"\\n \"),(_vm.user.tags.includes('disable_any_subscription'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.getPasswordResetToken(_vm.user.nickname)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.getPasswordResetToken'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.requirePasswordReset(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.requirePasswordReset'))+\"\\n \")]):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./ModerationDropdown.vue?vue&type=template&id=25dd4f14&\"\nimport script from \"./ModerationDropdown.vue?vue&type=script&lang=js&\"\nexport * from \"./ModerationDropdown.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ModerationDropdown.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"ModerationDropdown.vue\"\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-7637.8f5fb36e.js b/priv/static/adminfe/static/js/chunk-7637.8f5fb36e.js deleted file mode 100644 index b38644b98..000000000 --- a/priv/static/adminfe/static/js/chunk-7637.8f5fb36e.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-7637"],{"/dtF":function(t,e,s){"use strict";var n=s("qxvU");s.n(n).a},"9/5/":function(t,e,s){(function(e){var s="Expected a function",n=NaN,r="[object Symbol]",a=/^\s+|\s+$/g,o=/^[-+]0x[0-9a-f]+$/i,i=/^0b[01]+$/i,c=/^0o[0-7]+$/i,l=parseInt,u="object"==typeof e&&e&&e.Object===Object&&e,j="object"==typeof self&&self&&self.Object===Object&&self,d=u||j||Function("return this")(),h=Object.prototype.toString,p=Math.max,f=Math.min,m=function(){return d.Date.now()};function g(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function v(t){if("number"==typeof t)return t;if(function(t){return"symbol"==typeof t||function(t){return!!t&&"object"==typeof t}(t)&&h.call(t)==r}(t))return n;if(g(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=g(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(a,"");var s=i.test(t);return s||c.test(t)?l(t.slice(2),s?2:8):o.test(t)?n:+t}t.exports=function(t,e,n){var r,a,o,i,c,l,u=0,j=!1,d=!1,h=!0;if("function"!=typeof t)throw new TypeError(s);function b(e){var s=r,n=a;return r=a=void 0,u=e,i=t.apply(n,s)}function y(t){var s=t-l;return void 0===l||s>=e||s<0||d&&t-u>=o}function k(){var t=m();if(y(t))return x(t);c=setTimeout(k,function(t){var s=e-(t-l);return d?f(s,o-(t-u)):s}(t))}function x(t){return c=void 0,h&&r?b(t):(r=a=void 0,i)}function z(){var t=m(),s=y(t);if(r=arguments,a=this,l=t,s){if(void 0===c)return function(t){return u=t,c=setTimeout(k,e),j?b(t):i}(l);if(d)return c=setTimeout(k,e),b(l)}return void 0===c&&(c=setTimeout(k,e)),i}return e=v(e)||0,g(n)&&(j=!!n.leading,o=(d="maxWait"in n)?p(v(n.maxWait)||0,e):o,h="trailing"in n?!!n.trailing:h),z.cancel=function(){void 0!==c&&clearTimeout(c),u=0,r=l=a=c=void 0},z.flush=function(){return void 0===c?i:x(m())},z}}).call(this,s("yLpj"))},CmY0:function(t,e,s){"use strict";s.r(e);var n=s("wd/R"),r=s.n(n),a=s("LvDl"),o=s.n(a),i=s("9/5/"),c=s.n(i),l={components:{RebootButton:s("rIUS").a},data:function(){return{dateRange:"",search:"",user:"",currentPage:1}},computed:{isMobile:function(){return"mobile"===this.$store.state.app.device},loading:function(){return this.$store.state.moderationLog.logLoading&&this.$store.state.moderationLog.adminsLoading},log:function(){return this.$store.state.moderationLog.fetchedLog},total:function(){return this.$store.state.moderationLog.logItemsCount},users:function(){return[{label:"Admins",options:this.$store.state.moderationLog.admins.users},{label:"Moderators",options:this.$store.state.moderationLog.moderators.users}]}},created:function(){var t=this;this.handleDebounceSearchInput=c()(function(e){t.fetchLogWithFilters()},500)},mounted:function(){this.$store.dispatch("GetNodeInfo"),this.$store.dispatch("NeedReboot"),this.$store.dispatch("FetchModerationLog"),this.$store.dispatch("FetchAdmins")},methods:{normalizeTimestamp:function(t){return r()(1e3*t).format("YYYY-MM-DD HH:mm")},fetchLogWithFilters:function(){var t=o.a.omitBy({start_date:this.dateRange?this.dateRange[0].toISOString():null,end_date:this.dateRange?this.dateRange[1].toISOString():null,user_id:this.user,search:this.search,page:this.currentPage},function(t){return""===t||null===t});this.$store.dispatch("FetchModerationLog",t)}}},u=(s("/dtF"),s("KHd+")),j=Object(u.a)(l,function(){var t=this,e=t.$createElement,s=t._self._c||e;return t.loading?t._e():s("div",{staticClass:"moderation-log-container"},[s("div",{staticClass:"moderation-log-header-container"},[s("h1",[t._v(t._s(t.$t("moderationLog.moderationLog")))]),t._v(" "),s("reboot-button")],1),t._v(" "),s("div",{staticClass:"moderation-log-nav-container"},[s("el-select",{staticClass:"moderation-log-user-select",attrs:{clearable:"",placeholder:"Filter by admin/moderator"},on:{change:t.fetchLogWithFilters},model:{value:t.user,callback:function(e){t.user=e},expression:"user"}},t._l(t.users,function(e){return s("el-option-group",{key:e.label,attrs:{label:e.label}},t._l(e.options,function(t){return s("el-option",{key:t.id,attrs:{label:t.nickname,value:t.id}})}),1)}),1),t._v(" "),s("el-input",{staticClass:"moderation-log-search",attrs:{placeholder:"Search logs",clearable:""},on:{input:t.handleDebounceSearchInput},model:{value:t.search,callback:function(e){t.search=e},expression:"search"}})],1),t._v(" "),s("el-date-picker",{staticClass:"moderation-log-date-panel",attrs:{"default-time":["00:00:00","23:59:59"],type:"daterange","start-placeholder":"Start date","end-placeholder":"End date","unlink-panels":""},on:{change:t.fetchLogWithFilters},model:{value:t.dateRange,callback:function(e){t.dateRange=e},expression:"dateRange"}}),t._v(" "),s("el-timeline",t._l(t.log,function(e,n){return s("el-timeline-item",{key:n,attrs:{timestamp:t.normalizeTimestamp(e.time)}},[t._v("\n "+t._s(e.message)+"\n ")])}),1),t._v(" "),s("div",{staticClass:"pagination"},[s("el-pagination",{attrs:{"current-page":t.currentPage,"hide-on-single-page":!0,"page-size":50,total:t.total,small:t.isMobile,layout:"prev, pager, next"},on:{"update:currentPage":function(e){t.currentPage=e},"update:current-page":function(e){t.currentPage=e},"current-change":t.fetchLogWithFilters}})],1)],1)},[],!1,null,"103bba83",null);j.options.__file="index.vue";e.default=j.exports},RnhZ:function(t,e,s){var n={"./af":"K/tc","./af.js":"K/tc","./ar":"jnO4","./ar-dz":"o1bE","./ar-dz.js":"o1bE","./ar-kw":"Qj4J","./ar-kw.js":"Qj4J","./ar-ly":"HP3h","./ar-ly.js":"HP3h","./ar-ma":"CoRJ","./ar-ma.js":"CoRJ","./ar-sa":"gjCT","./ar-sa.js":"gjCT","./ar-tn":"bYM6","./ar-tn.js":"bYM6","./ar.js":"jnO4","./az":"SFxW","./az.js":"SFxW","./be":"H8ED","./be.js":"H8ED","./bg":"hKrs","./bg.js":"hKrs","./bm":"p/rL","./bm.js":"p/rL","./bn":"kEOa","./bn.js":"kEOa","./bo":"0mo+","./bo.js":"0mo+","./br":"aIdf","./br.js":"aIdf","./bs":"JVSJ","./bs.js":"JVSJ","./ca":"1xZ4","./ca.js":"1xZ4","./cs":"PA2r","./cs.js":"PA2r","./cv":"A+xa","./cv.js":"A+xa","./cy":"l5ep","./cy.js":"l5ep","./da":"DxQv","./da.js":"DxQv","./de":"tGlX","./de-at":"s+uk","./de-at.js":"s+uk","./de-ch":"u3GI","./de-ch.js":"u3GI","./de.js":"tGlX","./dv":"WYrj","./dv.js":"WYrj","./el":"jUeY","./el.js":"jUeY","./en-SG":"zavE","./en-SG.js":"zavE","./en-au":"Dmvi","./en-au.js":"Dmvi","./en-ca":"OIYi","./en-ca.js":"OIYi","./en-gb":"Oaa7","./en-gb.js":"Oaa7","./en-ie":"4dOw","./en-ie.js":"4dOw","./en-il":"czMo","./en-il.js":"czMo","./en-nz":"b1Dy","./en-nz.js":"b1Dy","./eo":"Zduo","./eo.js":"Zduo","./es":"iYuL","./es-do":"CjzT","./es-do.js":"CjzT","./es-us":"Vclq","./es-us.js":"Vclq","./es.js":"iYuL","./et":"7BjC","./et.js":"7BjC","./eu":"D/JM","./eu.js":"D/JM","./fa":"jfSC","./fa.js":"jfSC","./fi":"gekB","./fi.js":"gekB","./fo":"ByF4","./fo.js":"ByF4","./fr":"nyYc","./fr-ca":"2fjn","./fr-ca.js":"2fjn","./fr-ch":"Dkky","./fr-ch.js":"Dkky","./fr.js":"nyYc","./fy":"cRix","./fy.js":"cRix","./ga":"USCx","./ga.js":"USCx","./gd":"9rRi","./gd.js":"9rRi","./gl":"iEDd","./gl.js":"iEDd","./gom-latn":"DKr+","./gom-latn.js":"DKr+","./gu":"4MV3","./gu.js":"4MV3","./he":"x6pH","./he.js":"x6pH","./hi":"3E1r","./hi.js":"3E1r","./hr":"S6ln","./hr.js":"S6ln","./hu":"WxRl","./hu.js":"WxRl","./hy-am":"1rYy","./hy-am.js":"1rYy","./id":"UDhR","./id.js":"UDhR","./is":"BVg3","./is.js":"BVg3","./it":"bpih","./it-ch":"bxKX","./it-ch.js":"bxKX","./it.js":"bpih","./ja":"B55N","./ja.js":"B55N","./jv":"tUCv","./jv.js":"tUCv","./ka":"IBtZ","./ka.js":"IBtZ","./kk":"bXm7","./kk.js":"bXm7","./km":"6B0Y","./km.js":"6B0Y","./kn":"PpIw","./kn.js":"PpIw","./ko":"Ivi+","./ko.js":"Ivi+","./ku":"JCF/","./ku.js":"JCF/","./ky":"lgnt","./ky.js":"lgnt","./lb":"RAwQ","./lb.js":"RAwQ","./lo":"sp3z","./lo.js":"sp3z","./lt":"JvlW","./lt.js":"JvlW","./lv":"uXwI","./lv.js":"uXwI","./me":"KTz0","./me.js":"KTz0","./mi":"aIsn","./mi.js":"aIsn","./mk":"aQkU","./mk.js":"aQkU","./ml":"AvvY","./ml.js":"AvvY","./mn":"lYtQ","./mn.js":"lYtQ","./mr":"Ob0Z","./mr.js":"Ob0Z","./ms":"6+QB","./ms-my":"ZAMP","./ms-my.js":"ZAMP","./ms.js":"6+QB","./mt":"G0Uy","./mt.js":"G0Uy","./my":"honF","./my.js":"honF","./nb":"bOMt","./nb.js":"bOMt","./ne":"OjkT","./ne.js":"OjkT","./nl":"+s0g","./nl-be":"2ykv","./nl-be.js":"2ykv","./nl.js":"+s0g","./nn":"uEye","./nn.js":"uEye","./pa-in":"8/+R","./pa-in.js":"8/+R","./pl":"jVdC","./pl.js":"jVdC","./pt":"8mBD","./pt-br":"0tRk","./pt-br.js":"0tRk","./pt.js":"8mBD","./ro":"lyxo","./ro.js":"lyxo","./ru":"lXzo","./ru.js":"lXzo","./sd":"Z4QM","./sd.js":"Z4QM","./se":"//9w","./se.js":"//9w","./si":"7aV9","./si.js":"7aV9","./sk":"e+ae","./sk.js":"e+ae","./sl":"gVVK","./sl.js":"gVVK","./sq":"yPMs","./sq.js":"yPMs","./sr":"zx6S","./sr-cyrl":"E+lV","./sr-cyrl.js":"E+lV","./sr.js":"zx6S","./ss":"Ur1D","./ss.js":"Ur1D","./sv":"X709","./sv.js":"X709","./sw":"dNwA","./sw.js":"dNwA","./ta":"PeUW","./ta.js":"PeUW","./te":"XLvN","./te.js":"XLvN","./tet":"V2x9","./tet.js":"V2x9","./tg":"Oxv6","./tg.js":"Oxv6","./th":"EOgW","./th.js":"EOgW","./tl-ph":"Dzi0","./tl-ph.js":"Dzi0","./tlh":"z3Vd","./tlh.js":"z3Vd","./tr":"DoHr","./tr.js":"DoHr","./tzl":"z1FC","./tzl.js":"z1FC","./tzm":"wQk9","./tzm-latn":"tT3J","./tzm-latn.js":"tT3J","./tzm.js":"wQk9","./ug-cn":"YRex","./ug-cn.js":"YRex","./uk":"raLr","./uk.js":"raLr","./ur":"UpQW","./ur.js":"UpQW","./uz":"Loxo","./uz-latn":"AQ68","./uz-latn.js":"AQ68","./uz.js":"Loxo","./vi":"KSF8","./vi.js":"KSF8","./x-pseudo":"/X5v","./x-pseudo.js":"/X5v","./yo":"fzPg","./yo.js":"fzPg","./zh-cn":"XDpg","./zh-cn.js":"XDpg","./zh-hk":"SatO","./zh-hk.js":"SatO","./zh-tw":"kOpN","./zh-tw.js":"kOpN"};function r(t){var e=a(t);return s(e)}function a(t){if(!s.o(n,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return n[t]}r.keys=function(){return Object.keys(n)},r.resolve=a,t.exports=r,r.id="RnhZ"},qxvU:function(t,e,s){},rIUS:function(t,e,s){"use strict";var n=s("o0o1"),r=s.n(n),a=s("yXPU"),o=s.n(a),i=s("mSNy"),c={name:"RebootButton",computed:{needReboot:function(){return this.$store.state.app.needReboot}},methods:{restartApp:function(){var t=o()(r.a.mark(function t(){return r.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("RestartApplication");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:i.a.t("settings.restartSuccess")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},l=s("KHd+"),u=Object(l.a)(c,function(){var t=this.$createElement,e=this._self._c||t;return this.needReboot?e("el-tooltip",{attrs:{content:this.$t("settings.restartApp"),placement:"bottom-end"}},[e("el-button",{staticClass:"reboot-button",attrs:{type:"warning"},on:{click:this.restartApp}},[e("span",[e("i",{staticClass:"el-icon-refresh"}),this._v("\n "+this._s(this.$t("settings.instanceReboot"))+"\n ")])])],1):this._e()},[],!1,null,null,null);u.options.__file="index.vue";e.a=u.exports}}]); -//# sourceMappingURL=chunk-7637.8f5fb36e.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-7637.8f5fb36e.js.map b/priv/static/adminfe/static/js/chunk-7637.8f5fb36e.js.map deleted file mode 100644 index ddd53f1cd..000000000 --- a/priv/static/adminfe/static/js/chunk-7637.8f5fb36e.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./src/views/moderation_log/index.vue?2234","webpack:///./node_modules/lodash.debounce/index.js","webpack:///./src/views/moderation_log/index.vue?478d","webpack:///./src/views/moderation_log/index.vue?bce9","webpack:///src/views/moderation_log/index.vue","webpack:///./src/views/moderation_log/index.vue","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/components/RebootButton/index.vue?8db4","webpack:///./src/components/RebootButton/index.vue?2f45","webpack:///src/components/RebootButton/index.vue","webpack:///./src/components/RebootButton/index.vue"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_103bba83_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","global","FUNC_ERROR_TEXT","NAN","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","freeGlobal","Object","freeSelf","self","root","Function","objectToString","prototype","toString","nativeMax","Math","max","nativeMin","min","now","Date","isObject","value","type","toNumber","isObjectLike","call","isSymbol","other","valueOf","replace","isBinary","test","slice","module","exports","func","wait","options","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","args","thisArg","undefined","apply","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","setTimeout","remainingWait","debounced","isInvoking","arguments","this","leadingEdge","cancel","clearTimeout","flush","views_moderation_logvue_type_script_lang_js_","components","RebootButton","data","dateRange","search","user","currentPage","computed","isMobile","$store","state","app","device","loading","moderationLog","logLoading","adminsLoading","log","fetchedLog","total","logItemsCount","users","label","admins","moderators","created","_this","handleDebounceSearchInput","lodash_debounce_default","query","fetchLogWithFilters","mounted","dispatch","methods","normalizeTimestamp","timestamp","moment_default","format","filters","lodash_default","a","omitBy","start_date","toISOString","end_date","user_id","page","val","component","componentNormalizer","_vm","_h","$createElement","_c","_self","_e","staticClass","_v","_s","$t","attrs","clearable","placeholder","on","change","model","callback","$$v","expression","_l","group","key","item","id","nickname","input","default-time","start-placeholder","end-placeholder","unlink-panels","logEntry","index","message","current-page","hide-on-single-page","page-size","small","layout","update:currentPage","$event","update:current-page","current-change","__file","__webpack_exports__","map","./af","./af.js","./ar","./ar-dz","./ar-dz.js","./ar-kw","./ar-kw.js","./ar-ly","./ar-ly.js","./ar-ma","./ar-ma.js","./ar-sa","./ar-sa.js","./ar-tn","./ar-tn.js","./ar.js","./az","./az.js","./be","./be.js","./bg","./bg.js","./bm","./bm.js","./bn","./bn.js","./bo","./bo.js","./br","./br.js","./bs","./bs.js","./ca","./ca.js","./cs","./cs.js","./cv","./cv.js","./cy","./cy.js","./da","./da.js","./de","./de-at","./de-at.js","./de-ch","./de-ch.js","./de.js","./dv","./dv.js","./el","./el.js","./en-SG","./en-SG.js","./en-au","./en-au.js","./en-ca","./en-ca.js","./en-gb","./en-gb.js","./en-ie","./en-ie.js","./en-il","./en-il.js","./en-nz","./en-nz.js","./eo","./eo.js","./es","./es-do","./es-do.js","./es-us","./es-us.js","./es.js","./et","./et.js","./eu","./eu.js","./fa","./fa.js","./fi","./fi.js","./fo","./fo.js","./fr","./fr-ca","./fr-ca.js","./fr-ch","./fr-ch.js","./fr.js","./fy","./fy.js","./ga","./ga.js","./gd","./gd.js","./gl","./gl.js","./gom-latn","./gom-latn.js","./gu","./gu.js","./he","./he.js","./hi","./hi.js","./hr","./hr.js","./hu","./hu.js","./hy-am","./hy-am.js","./id","./id.js","./is","./is.js","./it","./it-ch","./it-ch.js","./it.js","./ja","./ja.js","./jv","./jv.js","./ka","./ka.js","./kk","./kk.js","./km","./km.js","./kn","./kn.js","./ko","./ko.js","./ku","./ku.js","./ky","./ky.js","./lb","./lb.js","./lo","./lo.js","./lt","./lt.js","./lv","./lv.js","./me","./me.js","./mi","./mi.js","./mk","./mk.js","./ml","./ml.js","./mn","./mn.js","./mr","./mr.js","./ms","./ms-my","./ms-my.js","./ms.js","./mt","./mt.js","./my","./my.js","./nb","./nb.js","./ne","./ne.js","./nl","./nl-be","./nl-be.js","./nl.js","./nn","./nn.js","./pa-in","./pa-in.js","./pl","./pl.js","./pt","./pt-br","./pt-br.js","./pt.js","./ro","./ro.js","./ru","./ru.js","./sd","./sd.js","./se","./se.js","./si","./si.js","./sk","./sk.js","./sl","./sl.js","./sq","./sq.js","./sr","./sr-cyrl","./sr-cyrl.js","./sr.js","./ss","./ss.js","./sv","./sv.js","./sw","./sw.js","./ta","./ta.js","./te","./te.js","./tet","./tet.js","./tg","./tg.js","./th","./th.js","./tl-ph","./tl-ph.js","./tlh","./tlh.js","./tr","./tr.js","./tzl","./tzl.js","./tzm","./tzm-latn","./tzm-latn.js","./tzm.js","./ug-cn","./ug-cn.js","./uk","./uk.js","./ur","./ur.js","./uz","./uz-latn","./uz-latn.js","./uz.js","./vi","./vi.js","./x-pseudo","./x-pseudo.js","./yo","./yo.js","./zh-cn","./zh-cn.js","./zh-hk","./zh-hk.js","./zh-tw","./zh-tw.js","webpackContext","req","webpackContextResolve","o","e","Error","code","keys","resolve","components_RebootButtonvue_type_script_lang_js_","name","needReboot","restartApp","_restartApp","asyncToGenerator_default","regenerator_default","mark","_callee","wrap","_context","prev","next","t0","abrupt","$message","lang","t","stop","content","placement","click"],"mappings":"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A,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,YAAA,OACAC,eAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,QAAA,OACAC,WAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,QAAA,OACAC,WAAA,OACAC,OAAA,OACAC,UAAA,OACAC,QAAA,OACAC,WAAA,OACAC,QAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,WAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,YAAA,OACAC,eAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,QAIA,SAAAC,EAAAC,GACA,IAAArR,EAAAsR,EAAAD,GACA,OAAA5a,EAAAuJ,GAEA,SAAAsR,EAAAD,GACA,IAAA5a,EAAA8a,EAAAlQ,EAAAgQ,GAAA,CACA,IAAAG,EAAA,IAAAC,MAAA,uBAAAJ,EAAA,KAEA,MADAG,EAAAE,KAAA,mBACAF,EAEA,OAAAnQ,EAAAgQ,GAEAD,EAAAO,KAAA,WACA,OAAAra,OAAAqa,KAAAtQ,IAEA+P,EAAAQ,QAAAN,EACApY,EAAAC,QAAAiY,EACAA,EAAApR,GAAA,iECnRA,0DCA0M6R,GCe1MC,KAAA,eACAhW,UACAiW,WADA,WAEA,OAAA9W,KAAAe,OAAAC,MAAAC,IAAA6V,aAGAvU,SACAwU,WADA,eAAAC,EAAAC,IAAAC,EAAApU,EAAAqU,KAAA,SAAAC,IAAA,OAAAF,EAAApU,EAAAuU,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAC,KAAA,EAAAD,EAAAE,KAAA,EAGAxX,KAAAe,OAAAuB,SAAA,sBAHA,OAAAgV,EAAAE,KAAA,sBAAAF,EAAAC,KAAA,EAAAD,EAAAG,GAAAH,EAAA,SAAAA,EAAAI,OAAA,iBAOA1X,KAAA2X,UACAra,KAAA,UACAkI,QAAAoS,EAAA,EAAAC,EAAA,6BATA,wBAAAP,EAAAQ,SAAAV,EAAApX,OAAA,mCAAAgX,EAAA1X,MAAAU,KAAAD,YAAA,iBCdAuD,EAAgBjH,OAAAkH,EAAA,EAAAlH,CACdua,EHRF,WAA0B,IAAanT,EAAbzD,KAAa0D,eAA0BC,EAAvC3D,KAAuC4D,MAAAD,IAAAF,EAAwB,OAA/DzD,KAA+D,WAAA2D,EAAA,cAAyCO,OAAO6T,QAA/G/X,KAA+GiE,GAAA,uBAAA+T,UAAA,gBAAkErU,EAAA,aAAkBG,YAAA,gBAAAI,OAAmC5G,KAAA,WAAiB+G,IAAK4T,MAA5PjY,KAA4P+W,cAAwBpT,EAAA,QAAAA,EAAA,KAAqBG,YAAA,oBAAzS9D,KAAuU+D,GAAA,WAAvU/D,KAAuUgE,GAAvUhE,KAAuUiE,GAAA,8CAAvUjE,KAAuU6D,UGWjW,EACA,KACA,KACA,MAIAP,EAAAjF,QAAA6H,OAAA,YACeC,EAAA,EAAA7C","file":"static/js/chunk-7637.8f5fb36e.js","sourcesContent":["import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=103bba83&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=103bba83&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"moderation-log-container\"},[_c('div',{staticClass:\"moderation-log-header-container\"},[_c('h1',[_vm._v(_vm._s(_vm.$t('moderationLog.moderationLog')))]),_vm._v(\" \"),_c('reboot-button')],1),_vm._v(\" \"),_c('div',{staticClass:\"moderation-log-nav-container\"},[_c('el-select',{staticClass:\"moderation-log-user-select\",attrs:{\"clearable\":\"\",\"placeholder\":\"Filter by admin/moderator\"},on:{\"change\":_vm.fetchLogWithFilters},model:{value:(_vm.user),callback:function ($$v) {_vm.user=$$v},expression:\"user\"}},_vm._l((_vm.users),function(group){return _c('el-option-group',{key:group.label,attrs:{\"label\":group.label}},_vm._l((group.options),function(item){return _c('el-option',{key:item.id,attrs:{\"label\":item.nickname,\"value\":item.id}})}),1)}),1),_vm._v(\" \"),_c('el-input',{staticClass:\"moderation-log-search\",attrs:{\"placeholder\":\"Search logs\",\"clearable\":\"\"},on:{\"input\":_vm.handleDebounceSearchInput},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1),_vm._v(\" \"),_c('el-date-picker',{staticClass:\"moderation-log-date-panel\",attrs:{\"default-time\":['00:00:00', '23:59:59'],\"type\":\"daterange\",\"start-placeholder\":\"Start date\",\"end-placeholder\":\"End date\",\"unlink-panels\":\"\"},on:{\"change\":_vm.fetchLogWithFilters},model:{value:(_vm.dateRange),callback:function ($$v) {_vm.dateRange=$$v},expression:\"dateRange\"}}),_vm._v(\" \"),_c('el-timeline',_vm._l((_vm.log),function(logEntry,index){return _c('el-timeline-item',{key:index,attrs:{\"timestamp\":_vm.normalizeTimestamp(logEntry.time)}},[_vm._v(\"\\n \"+_vm._s(logEntry.message)+\"\\n \")])}),1),_vm._v(\" \"),_c('div',{staticClass:\"pagination\"},[_c('el-pagination',{attrs:{\"current-page\":_vm.currentPage,\"hide-on-single-page\":true,\"page-size\":50,\"total\":_vm.total,\"small\":_vm.isMobile,\"layout\":\"prev, pager, next\"},on:{\"update:currentPage\":function($event){_vm.currentPage=$event},\"update:current-page\":function($event){_vm.currentPage=$event},\"current-change\":_vm.fetchLogWithFilters}})],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=103bba83&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=103bba83&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"103bba83\",\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","var map = {\n\t\"./af\": \"K/tc\",\n\t\"./af.js\": \"K/tc\",\n\t\"./ar\": \"jnO4\",\n\t\"./ar-dz\": \"o1bE\",\n\t\"./ar-dz.js\": \"o1bE\",\n\t\"./ar-kw\": \"Qj4J\",\n\t\"./ar-kw.js\": \"Qj4J\",\n\t\"./ar-ly\": \"HP3h\",\n\t\"./ar-ly.js\": \"HP3h\",\n\t\"./ar-ma\": \"CoRJ\",\n\t\"./ar-ma.js\": \"CoRJ\",\n\t\"./ar-sa\": \"gjCT\",\n\t\"./ar-sa.js\": \"gjCT\",\n\t\"./ar-tn\": \"bYM6\",\n\t\"./ar-tn.js\": \"bYM6\",\n\t\"./ar.js\": \"jnO4\",\n\t\"./az\": \"SFxW\",\n\t\"./az.js\": \"SFxW\",\n\t\"./be\": \"H8ED\",\n\t\"./be.js\": \"H8ED\",\n\t\"./bg\": \"hKrs\",\n\t\"./bg.js\": \"hKrs\",\n\t\"./bm\": \"p/rL\",\n\t\"./bm.js\": \"p/rL\",\n\t\"./bn\": \"kEOa\",\n\t\"./bn.js\": \"kEOa\",\n\t\"./bo\": \"0mo+\",\n\t\"./bo.js\": \"0mo+\",\n\t\"./br\": \"aIdf\",\n\t\"./br.js\": \"aIdf\",\n\t\"./bs\": \"JVSJ\",\n\t\"./bs.js\": \"JVSJ\",\n\t\"./ca\": \"1xZ4\",\n\t\"./ca.js\": \"1xZ4\",\n\t\"./cs\": \"PA2r\",\n\t\"./cs.js\": \"PA2r\",\n\t\"./cv\": \"A+xa\",\n\t\"./cv.js\": \"A+xa\",\n\t\"./cy\": \"l5ep\",\n\t\"./cy.js\": \"l5ep\",\n\t\"./da\": \"DxQv\",\n\t\"./da.js\": \"DxQv\",\n\t\"./de\": \"tGlX\",\n\t\"./de-at\": \"s+uk\",\n\t\"./de-at.js\": \"s+uk\",\n\t\"./de-ch\": \"u3GI\",\n\t\"./de-ch.js\": \"u3GI\",\n\t\"./de.js\": \"tGlX\",\n\t\"./dv\": \"WYrj\",\n\t\"./dv.js\": \"WYrj\",\n\t\"./el\": \"jUeY\",\n\t\"./el.js\": \"jUeY\",\n\t\"./en-SG\": \"zavE\",\n\t\"./en-SG.js\": \"zavE\",\n\t\"./en-au\": \"Dmvi\",\n\t\"./en-au.js\": \"Dmvi\",\n\t\"./en-ca\": \"OIYi\",\n\t\"./en-ca.js\": \"OIYi\",\n\t\"./en-gb\": \"Oaa7\",\n\t\"./en-gb.js\": \"Oaa7\",\n\t\"./en-ie\": \"4dOw\",\n\t\"./en-ie.js\": \"4dOw\",\n\t\"./en-il\": \"czMo\",\n\t\"./en-il.js\": \"czMo\",\n\t\"./en-nz\": \"b1Dy\",\n\t\"./en-nz.js\": \"b1Dy\",\n\t\"./eo\": \"Zduo\",\n\t\"./eo.js\": \"Zduo\",\n\t\"./es\": \"iYuL\",\n\t\"./es-do\": \"CjzT\",\n\t\"./es-do.js\": \"CjzT\",\n\t\"./es-us\": \"Vclq\",\n\t\"./es-us.js\": \"Vclq\",\n\t\"./es.js\": \"iYuL\",\n\t\"./et\": \"7BjC\",\n\t\"./et.js\": \"7BjC\",\n\t\"./eu\": \"D/JM\",\n\t\"./eu.js\": \"D/JM\",\n\t\"./fa\": \"jfSC\",\n\t\"./fa.js\": \"jfSC\",\n\t\"./fi\": \"gekB\",\n\t\"./fi.js\": \"gekB\",\n\t\"./fo\": \"ByF4\",\n\t\"./fo.js\": \"ByF4\",\n\t\"./fr\": \"nyYc\",\n\t\"./fr-ca\": \"2fjn\",\n\t\"./fr-ca.js\": \"2fjn\",\n\t\"./fr-ch\": \"Dkky\",\n\t\"./fr-ch.js\": \"Dkky\",\n\t\"./fr.js\": \"nyYc\",\n\t\"./fy\": \"cRix\",\n\t\"./fy.js\": \"cRix\",\n\t\"./ga\": \"USCx\",\n\t\"./ga.js\": \"USCx\",\n\t\"./gd\": \"9rRi\",\n\t\"./gd.js\": \"9rRi\",\n\t\"./gl\": \"iEDd\",\n\t\"./gl.js\": \"iEDd\",\n\t\"./gom-latn\": \"DKr+\",\n\t\"./gom-latn.js\": \"DKr+\",\n\t\"./gu\": \"4MV3\",\n\t\"./gu.js\": \"4MV3\",\n\t\"./he\": \"x6pH\",\n\t\"./he.js\": \"x6pH\",\n\t\"./hi\": \"3E1r\",\n\t\"./hi.js\": \"3E1r\",\n\t\"./hr\": \"S6ln\",\n\t\"./hr.js\": \"S6ln\",\n\t\"./hu\": \"WxRl\",\n\t\"./hu.js\": \"WxRl\",\n\t\"./hy-am\": \"1rYy\",\n\t\"./hy-am.js\": \"1rYy\",\n\t\"./id\": \"UDhR\",\n\t\"./id.js\": \"UDhR\",\n\t\"./is\": \"BVg3\",\n\t\"./is.js\": \"BVg3\",\n\t\"./it\": \"bpih\",\n\t\"./it-ch\": \"bxKX\",\n\t\"./it-ch.js\": \"bxKX\",\n\t\"./it.js\": \"bpih\",\n\t\"./ja\": \"B55N\",\n\t\"./ja.js\": \"B55N\",\n\t\"./jv\": \"tUCv\",\n\t\"./jv.js\": \"tUCv\",\n\t\"./ka\": \"IBtZ\",\n\t\"./ka.js\": \"IBtZ\",\n\t\"./kk\": \"bXm7\",\n\t\"./kk.js\": \"bXm7\",\n\t\"./km\": \"6B0Y\",\n\t\"./km.js\": \"6B0Y\",\n\t\"./kn\": \"PpIw\",\n\t\"./kn.js\": \"PpIw\",\n\t\"./ko\": \"Ivi+\",\n\t\"./ko.js\": \"Ivi+\",\n\t\"./ku\": \"JCF/\",\n\t\"./ku.js\": \"JCF/\",\n\t\"./ky\": \"lgnt\",\n\t\"./ky.js\": \"lgnt\",\n\t\"./lb\": \"RAwQ\",\n\t\"./lb.js\": \"RAwQ\",\n\t\"./lo\": \"sp3z\",\n\t\"./lo.js\": \"sp3z\",\n\t\"./lt\": \"JvlW\",\n\t\"./lt.js\": \"JvlW\",\n\t\"./lv\": \"uXwI\",\n\t\"./lv.js\": \"uXwI\",\n\t\"./me\": \"KTz0\",\n\t\"./me.js\": \"KTz0\",\n\t\"./mi\": \"aIsn\",\n\t\"./mi.js\": \"aIsn\",\n\t\"./mk\": \"aQkU\",\n\t\"./mk.js\": \"aQkU\",\n\t\"./ml\": \"AvvY\",\n\t\"./ml.js\": \"AvvY\",\n\t\"./mn\": \"lYtQ\",\n\t\"./mn.js\": \"lYtQ\",\n\t\"./mr\": \"Ob0Z\",\n\t\"./mr.js\": \"Ob0Z\",\n\t\"./ms\": \"6+QB\",\n\t\"./ms-my\": \"ZAMP\",\n\t\"./ms-my.js\": \"ZAMP\",\n\t\"./ms.js\": \"6+QB\",\n\t\"./mt\": \"G0Uy\",\n\t\"./mt.js\": \"G0Uy\",\n\t\"./my\": \"honF\",\n\t\"./my.js\": \"honF\",\n\t\"./nb\": \"bOMt\",\n\t\"./nb.js\": \"bOMt\",\n\t\"./ne\": \"OjkT\",\n\t\"./ne.js\": \"OjkT\",\n\t\"./nl\": \"+s0g\",\n\t\"./nl-be\": \"2ykv\",\n\t\"./nl-be.js\": \"2ykv\",\n\t\"./nl.js\": \"+s0g\",\n\t\"./nn\": \"uEye\",\n\t\"./nn.js\": \"uEye\",\n\t\"./pa-in\": \"8/+R\",\n\t\"./pa-in.js\": \"8/+R\",\n\t\"./pl\": \"jVdC\",\n\t\"./pl.js\": \"jVdC\",\n\t\"./pt\": \"8mBD\",\n\t\"./pt-br\": \"0tRk\",\n\t\"./pt-br.js\": \"0tRk\",\n\t\"./pt.js\": \"8mBD\",\n\t\"./ro\": \"lyxo\",\n\t\"./ro.js\": \"lyxo\",\n\t\"./ru\": \"lXzo\",\n\t\"./ru.js\": \"lXzo\",\n\t\"./sd\": \"Z4QM\",\n\t\"./sd.js\": \"Z4QM\",\n\t\"./se\": \"//9w\",\n\t\"./se.js\": \"//9w\",\n\t\"./si\": \"7aV9\",\n\t\"./si.js\": \"7aV9\",\n\t\"./sk\": \"e+ae\",\n\t\"./sk.js\": \"e+ae\",\n\t\"./sl\": \"gVVK\",\n\t\"./sl.js\": \"gVVK\",\n\t\"./sq\": \"yPMs\",\n\t\"./sq.js\": \"yPMs\",\n\t\"./sr\": \"zx6S\",\n\t\"./sr-cyrl\": \"E+lV\",\n\t\"./sr-cyrl.js\": \"E+lV\",\n\t\"./sr.js\": \"zx6S\",\n\t\"./ss\": \"Ur1D\",\n\t\"./ss.js\": \"Ur1D\",\n\t\"./sv\": \"X709\",\n\t\"./sv.js\": \"X709\",\n\t\"./sw\": \"dNwA\",\n\t\"./sw.js\": \"dNwA\",\n\t\"./ta\": \"PeUW\",\n\t\"./ta.js\": \"PeUW\",\n\t\"./te\": \"XLvN\",\n\t\"./te.js\": \"XLvN\",\n\t\"./tet\": \"V2x9\",\n\t\"./tet.js\": \"V2x9\",\n\t\"./tg\": \"Oxv6\",\n\t\"./tg.js\": \"Oxv6\",\n\t\"./th\": \"EOgW\",\n\t\"./th.js\": \"EOgW\",\n\t\"./tl-ph\": \"Dzi0\",\n\t\"./tl-ph.js\": \"Dzi0\",\n\t\"./tlh\": \"z3Vd\",\n\t\"./tlh.js\": \"z3Vd\",\n\t\"./tr\": \"DoHr\",\n\t\"./tr.js\": \"DoHr\",\n\t\"./tzl\": \"z1FC\",\n\t\"./tzl.js\": \"z1FC\",\n\t\"./tzm\": \"wQk9\",\n\t\"./tzm-latn\": \"tT3J\",\n\t\"./tzm-latn.js\": \"tT3J\",\n\t\"./tzm.js\": \"wQk9\",\n\t\"./ug-cn\": \"YRex\",\n\t\"./ug-cn.js\": \"YRex\",\n\t\"./uk\": \"raLr\",\n\t\"./uk.js\": \"raLr\",\n\t\"./ur\": \"UpQW\",\n\t\"./ur.js\": \"UpQW\",\n\t\"./uz\": \"Loxo\",\n\t\"./uz-latn\": \"AQ68\",\n\t\"./uz-latn.js\": \"AQ68\",\n\t\"./uz.js\": \"Loxo\",\n\t\"./vi\": \"KSF8\",\n\t\"./vi.js\": \"KSF8\",\n\t\"./x-pseudo\": \"/X5v\",\n\t\"./x-pseudo.js\": \"/X5v\",\n\t\"./yo\": \"fzPg\",\n\t\"./yo.js\": \"fzPg\",\n\t\"./zh-cn\": \"XDpg\",\n\t\"./zh-cn.js\": \"XDpg\",\n\t\"./zh-hk\": \"SatO\",\n\t\"./zh-hk.js\": \"SatO\",\n\t\"./zh-tw\": \"kOpN\",\n\t\"./zh-tw.js\": \"kOpN\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"RnhZ\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.needReboot)?_c('el-tooltip',{attrs:{\"content\":_vm.$t('settings.restartApp'),\"placement\":\"bottom-end\"}},[_c('el-button',{staticClass:\"reboot-button\",attrs:{\"type\":\"warning\"},on:{\"click\":_vm.restartApp}},[_c('span',[_c('i',{staticClass:\"el-icon-refresh\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.instanceReboot'))+\"\\n \")])])],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=53cfaf1d&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-0778.b17650df.js b/priv/static/adminfe/static/js/chunk-7c6b.e63ae1da.js similarity index 83% rename from priv/static/adminfe/static/js/chunk-0778.b17650df.js rename to priv/static/adminfe/static/js/chunk-7c6b.e63ae1da.js index 1a174cc1e..27478ddb1 100644 --- a/priv/static/adminfe/static/js/chunk-0778.b17650df.js +++ b/priv/static/adminfe/static/js/chunk-7c6b.e63ae1da.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-0778"],{HMof:function(e,t,i){"use strict";i.r(t);var n=i("o0o1"),s=i.n(n),a=i("yXPU"),o=i.n(a),r=i("MVZn"),l=i.n(r),c=i("rIUS"),v=i("L2JU"),u=i("9i3r"),m={components:{RebootButton:c.a},data:function(){return{rules:{email:[{validator:this.validateEmail,trigger:"blur"}]},newTokenForm:{maxUse:1,expiresAt:""},inviteUserForm:{email:"",name:""},createTokenDialogVisible:!1,inviteUserDialogVisible:!1}},computed:l()({},Object(v.b)(["authHost"]),{getLabelWidth:function(){return this.isDesktop?"100px":"80px"},inviteLink:function(){return"".concat(Object(u.a)(this.authHost),"/registration/").concat(this.newToken.token)},isDesktop:function(){return"desktop"===this.$store.state.app.device},loading:function(){return this.$store.state.invites.loading},newToken:function(){return this.$store.state.invites.newToken},tokens:function(){return this.$store.state.invites.inviteTokens}}),mounted:function(){this.$store.dispatch("GetNodeInfo"),this.$store.dispatch("NeedReboot"),this.$store.dispatch("FetchInviteTokens")},methods:{closeDialogWindow:function(){this.inviteUserDialogVisible=!1,this.createTokenDialogVisible=!1,this.$store.dispatch("RemoveNewToken"),this.$data.inviteUserForm.email="",this.$data.inviteUserForm.name=""},createToken:function(){this.$store.dispatch("GenerateInviteToken",this.$data.newTokenForm)},inviteUserViaEmail:function(){var e=o()(s.a.mark(function e(){var t=this;return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:this.$refs.inviteUserForm.validate(function(){var e=o()(s.a.mark(function e(i){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!i){e.next=6;break}return e.next=3,t.$store.dispatch("InviteUserViaEmail",t.$data.inviteUserForm);case 3:t.closeDialogWindow(),e.next=8;break;case 6:return t.$message({type:"error",message:t.$t("invites.submitFormError")}),e.abrupt("return",!1);case 8:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}());case 1:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}(),revokeInviteToken:function(e){this.$store.dispatch("RevokeToken",e)},validateEmail:function(e,t,i){return""===t?i(new Error(this.$t("invites.emptyEmailError"))):this.validEmail(t)?i():i(new Error(this.$t("invites.invalidEmailError")))},validEmail:function(e){return/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(e)}}},p=(i("ObxI"),i("KHd+")),d=Object(p.a)(m,function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"invites-container"},[i("div",{staticClass:"invites-header-container"},[i("h1",[e._v(e._s(e.$t("invites.inviteTokens")))]),e._v(" "),i("reboot-button")],1),e._v(" "),i("div",{staticClass:"actions-container"},[i("el-button",{staticClass:"create-invite-token",on:{click:function(t){e.createTokenDialogVisible=!0}}},[i("span",[i("i",{staticClass:"icon el-icon-plus"}),e._v("\n "+e._s(e.$t("invites.createInviteToken"))+"\n ")])]),e._v(" "),i("el-button",{staticClass:"invite-via-email",on:{click:function(t){e.inviteUserDialogVisible=!0}}},[i("span",[i("i",{staticClass:"icon el-icon-message"}),e._v("\n "+e._s(e.$t("invites.inviteUserViaEmail"))+"\n ")])])],1),e._v(" "),i("el-dialog",{attrs:{visible:e.createTokenDialogVisible,"show-close":!1,title:e.$t("invites.createInviteToken"),"custom-class":"create-new-token-dialog"},on:{"update:visible":function(t){e.createTokenDialogVisible=t}}},[i("el-form",{ref:"newTokenForm",attrs:{model:e.newTokenForm,"label-width":e.getLabelWidth,"status-icon":""}},[i("el-form-item",{attrs:{label:e.$t("invites.maxUse")}},[i("el-input-number",{attrs:{min:0,size:e.isDesktop?"medium":"small",name:"maxUse"},model:{value:e.newTokenForm.maxUse,callback:function(t){e.$set(e.newTokenForm,"maxUse",t)},expression:"newTokenForm.maxUse"}})],1),e._v(" "),i("el-form-item",{attrs:{label:e.$t("invites.expiresAt")}},[i("el-date-picker",{staticClass:"pick-date",attrs:{placeholder:e.$t("invites.pickDate"),type:"date",name:"date","value-format":"yyyy-MM-dd"},model:{value:e.newTokenForm.expiresAt,callback:function(t){e.$set(e.newTokenForm,"expiresAt",t)},expression:"newTokenForm.expiresAt"}})],1)],1),e._v(" "),i("span",{attrs:{slot:"footer"},slot:"footer"},[i("el-button",{staticClass:"invites-close-dialog",on:{click:e.closeDialogWindow}},[e._v(e._s(e.$t("invites.cancel")))]),e._v(" "),i("el-button",{attrs:{type:"primary"},on:{click:e.createToken}},[e._v(e._s(e.$t("invites.create")))])],1),e._v(" "),"token"in e.newToken?i("el-card",[i("div",{staticClass:"clearfix",attrs:{slot:"header"},slot:"header"},[i("span",[e._v(e._s(e.$t("invites.tokenCreated")))])]),e._v(" "),i("el-form",{staticClass:"new-token-card",attrs:{"label-width":"80px"}},[i("el-form-item",{attrs:{label:e.$t("invites.inviteLink")}},[i("el-link",{attrs:{href:e.inviteLink,underline:!1,target:"_blank"}},[e._v("\n "+e._s(e.inviteLink)+"\n ")])],1),e._v(" "),i("el-form-item",{attrs:{label:e.$t("invites.token")}},[e._v("\n "+e._s(e.newToken.token)+"\n ")]),e._v(" "),i("el-form-item",{attrs:{label:e.$t("invites.maxUse")}},[e._v("\n "+e._s(e.newToken.maxUse)+"\n ")]),e._v(" "),i("el-form-item",{attrs:{label:e.$t("invites.expiresAt")}},[e._v("\n "+e._s(e.newToken.expiresAt||"(not set)")+"\n ")])],1)],1):e._e()],1),e._v(" "),i("el-dialog",{attrs:{visible:e.inviteUserDialogVisible,"show-close":!1,title:e.$t("invites.sendRegistration"),"custom-class":"invite-via-email-dialog"},on:{"update:visible":function(t){e.inviteUserDialogVisible=t}}},[i("div",[i("p",{staticClass:"info"},[e._v(e._s(e.$t("invites.inviteViaEmailAlert")))]),e._v(" "),i("el-form",{ref:"inviteUserForm",attrs:{model:e.inviteUserForm,rules:e.rules,"label-width":e.getLabelWidth,"status-icon":""}},[i("el-form-item",{attrs:{label:e.$t("invites.email"),prop:"email"}},[i("el-input",{attrs:{name:"email",type:"email",autofocus:""},model:{value:e.inviteUserForm.email,callback:function(t){e.$set(e.inviteUserForm,"email",t)},expression:"inviteUserForm.email"}})],1),e._v(" "),i("el-form-item",{attrs:{label:e.$t("invites.name"),prop:"name"}},[i("el-input",{attrs:{name:"name"},model:{value:e.inviteUserForm.name,callback:function(t){e.$set(e.inviteUserForm,"name",t)},expression:"inviteUserForm.name"}})],1)],1)],1),e._v(" "),i("span",{attrs:{slot:"footer"},slot:"footer"},[i("el-button",{on:{click:e.closeDialogWindow}},[e._v(e._s(e.$t("invites.cancel")))]),e._v(" "),i("el-button",{attrs:{type:"primary"},on:{click:e.inviteUserViaEmail}},[e._v(e._s(e.$t("invites.create")))])],1)]),e._v(" "),i("el-table",{directives:[{name:"loading",rawName:"v-loading",value:e.loading,expression:"loading"}],staticClass:"invite-token-table",attrs:{data:e.tokens,"default-sort":{prop:"used",order:"ascending"}}},[e.isDesktop?i("el-table-column",{attrs:{label:e.$t("invites.id"),"min-width":"60",prop:"id",sortable:""}}):e._e(),e._v(" "),i("el-table-column",{attrs:{label:e.$t("invites.token"),"min-width":e.isDesktop?320:120,prop:"token"}}),e._v(" "),e.isDesktop?i("el-table-column",{attrs:{label:e.$t("invites.expiresAt"),align:"center","header-align":"center","min-width":"110",prop:"expires_at",sortable:""}}):e._e(),e._v(" "),i("el-table-column",{attrs:{label:e.$t("invites.maxUse"),align:"center","header-align":"center","min-width":"60",prop:"max_use",sortable:""}}),e._v(" "),e.isDesktop?i("el-table-column",{attrs:{label:e.$t("invites.uses"),align:"center","header-align":"center","min-width":"60",prop:"uses"}}):e._e(),e._v(" "),i("el-table-column",{attrs:{label:e.$t("invites.used"),"min-width":e.isDesktop?60:50,align:"center","header-align":"center",prop:"used",sortable:""},scopedSlots:e._u([{key:"default",fn:function(t){return[i("el-tag",{attrs:{type:t.row.used?"danger":"success","disable-transitions":""}},[e._v("\n "+e._s(t.row.used?e.$t("invites.used"):e.$t("invites.active"))+"\n ")])]}}])}),e._v(" "),i("el-table-column",{attrs:{label:e.$t("invites.actions"),"min-width":e.isDesktop?100:50,align:"center","header-align":"center"},scopedSlots:e._u([{key:"default",fn:function(t){return[i("el-button",{attrs:{type:"text",size:"small"},nativeOn:{click:function(i){return e.revokeInviteToken(t.row.token)}}},[e._v("\n "+e._s(e.$t("invites.revoke"))+"\n ")])]}}])})],1)],1)},[],!1,null,null,null);d.options.__file="index.vue";t.default=d.exports},ObxI:function(e,t,i){"use strict";var n=i("Tykb");i.n(n).a},Tykb:function(e,t,i){},rIUS:function(e,t,i){"use strict";var n=i("o0o1"),s=i.n(n),a=i("yXPU"),o=i.n(a),r=i("mSNy"),l={name:"RebootButton",computed:{needReboot:function(){return this.$store.state.app.needReboot}},methods:{restartApp:function(){var e=o()(s.a.mark(function e(){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.$store.dispatch("RestartApplication");case 3:e.next=8;break;case 5:return e.prev=5,e.t0=e.catch(0),e.abrupt("return");case 8:this.$message({type:"success",message:r.a.t("settings.restartSuccess")});case 9:case"end":return e.stop()}},e,this,[[0,5]])}));return function(){return e.apply(this,arguments)}}()}},c=i("KHd+"),v=Object(c.a)(l,function(){var e=this.$createElement,t=this._self._c||e;return this.needReboot?t("el-tooltip",{attrs:{content:this.$t("settings.restartApp"),placement:"bottom-end"}},[t("el-button",{staticClass:"reboot-button",attrs:{type:"warning"},on:{click:this.restartApp}},[t("span",[t("i",{staticClass:"el-icon-refresh"}),this._v("\n "+this._s(this.$t("settings.instanceReboot"))+"\n ")])])],1):this._e()},[],!1,null,null,null);v.options.__file="index.vue";t.a=v.exports}}]); -//# sourceMappingURL=chunk-0778.b17650df.js.map \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-7c6b"],{HMof:function(e,t,i){"use strict";i.r(t);var n=i("o0o1"),s=i.n(n),a=i("yXPU"),o=i.n(a),r=i("MVZn"),l=i.n(r),c=i("rIUS"),v=i("L2JU"),m=i("9i3r"),u={components:{RebootButton:c.a},data:function(){return{rules:{email:[{validator:this.validateEmail,trigger:"blur"}]},newTokenForm:{maxUse:1,expiresAt:""},inviteUserForm:{email:"",name:""},createTokenDialogVisible:!1,inviteUserDialogVisible:!1}},computed:l()({},Object(v.b)(["authHost"]),{getLabelWidth:function(){return this.isDesktop?"100px":"80px"},inviteLink:function(){return"".concat(Object(m.a)(this.authHost),"/registration/").concat(this.newToken.token)},isDesktop:function(){return"desktop"===this.$store.state.app.device},loading:function(){return this.$store.state.invites.loading},newToken:function(){return this.$store.state.invites.newToken},tokens:function(){return this.$store.state.invites.inviteTokens}}),mounted:function(){this.$store.dispatch("GetNodeInfo"),this.$store.dispatch("NeedReboot"),this.$store.dispatch("FetchInviteTokens")},methods:{closeDialogWindow:function(){this.inviteUserDialogVisible=!1,this.createTokenDialogVisible=!1,this.$store.dispatch("RemoveNewToken"),this.$data.inviteUserForm.email="",this.$data.inviteUserForm.name=""},createToken:function(){this.$store.dispatch("GenerateInviteToken",this.$data.newTokenForm)},inviteUserViaEmail:function(){var e=o()(s.a.mark(function e(){var t=this;return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:this.$refs.inviteUserForm.validate(function(){var e=o()(s.a.mark(function e(i){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!i){e.next=6;break}return e.next=3,t.$store.dispatch("InviteUserViaEmail",t.$data.inviteUserForm);case 3:t.closeDialogWindow(),e.next=8;break;case 6:return t.$message({type:"error",message:t.$t("invites.submitFormError")}),e.abrupt("return",!1);case 8:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}());case 1:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}(),revokeInviteToken:function(e){this.$store.dispatch("RevokeToken",e)},validateEmail:function(e,t,i){return""===t?i(new Error(this.$t("invites.emptyEmailError"))):this.validEmail(t)?i():i(new Error(this.$t("invites.invalidEmailError")))},validEmail:function(e){return/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(e)}}},d=(i("ObxI"),i("KHd+")),p=Object(d.a)(u,function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"invites-container"},[i("div",{staticClass:"invites-header-container"},[i("h1",[e._v(e._s(e.$t("invites.inviteTokens")))]),e._v(" "),i("reboot-button")],1),e._v(" "),i("div",{staticClass:"actions-container"},[i("el-button",{staticClass:"create-invite-token",on:{click:function(t){e.createTokenDialogVisible=!0}}},[i("span",[i("i",{staticClass:"icon el-icon-plus"}),e._v("\n "+e._s(e.$t("invites.createInviteToken"))+"\n ")])]),e._v(" "),i("el-button",{staticClass:"invite-via-email",on:{click:function(t){e.inviteUserDialogVisible=!0}}},[i("span",[i("i",{staticClass:"icon el-icon-message"}),e._v("\n "+e._s(e.$t("invites.inviteUserViaEmail"))+"\n ")])])],1),e._v(" "),i("el-dialog",{attrs:{visible:e.createTokenDialogVisible,"show-close":!1,title:e.$t("invites.createInviteToken"),"custom-class":"create-new-token-dialog"},on:{"update:visible":function(t){e.createTokenDialogVisible=t}}},[i("el-form",{ref:"newTokenForm",attrs:{model:e.newTokenForm,"label-width":e.getLabelWidth,"status-icon":""}},[i("el-form-item",{attrs:{label:e.$t("invites.maxUse")}},[i("el-input-number",{attrs:{min:0,size:e.isDesktop?"medium":"small",name:"maxUse"},model:{value:e.newTokenForm.maxUse,callback:function(t){e.$set(e.newTokenForm,"maxUse",t)},expression:"newTokenForm.maxUse"}})],1),e._v(" "),i("el-form-item",{attrs:{label:e.$t("invites.expiresAt")}},[i("el-date-picker",{staticClass:"pick-date",attrs:{placeholder:e.$t("invites.pickDate"),type:"date",name:"date","value-format":"yyyy-MM-dd"},model:{value:e.newTokenForm.expiresAt,callback:function(t){e.$set(e.newTokenForm,"expiresAt",t)},expression:"newTokenForm.expiresAt"}})],1)],1),e._v(" "),i("span",{attrs:{slot:"footer"},slot:"footer"},[i("el-button",{staticClass:"invites-close-dialog",on:{click:e.closeDialogWindow}},[e._v(e._s(e.$t("invites.cancel")))]),e._v(" "),i("el-button",{attrs:{type:"primary"},on:{click:e.createToken}},[e._v(e._s(e.$t("invites.create")))])],1),e._v(" "),"token"in e.newToken?i("el-card",[i("div",{staticClass:"clearfix",attrs:{slot:"header"},slot:"header"},[i("span",[e._v(e._s(e.$t("invites.tokenCreated")))])]),e._v(" "),i("el-form",{staticClass:"new-token-card",attrs:{"label-width":"80px"}},[i("el-form-item",{attrs:{label:e.$t("invites.inviteLink")}},[i("el-link",{attrs:{href:e.inviteLink,underline:!1,target:"_blank"}},[e._v("\n "+e._s(e.inviteLink)+"\n ")])],1),e._v(" "),i("el-form-item",{attrs:{label:e.$t("invites.token")}},[e._v("\n "+e._s(e.newToken.token)+"\n ")]),e._v(" "),i("el-form-item",{attrs:{label:e.$t("invites.maxUse")}},[e._v("\n "+e._s(e.newToken.maxUse)+"\n ")]),e._v(" "),i("el-form-item",{attrs:{label:e.$t("invites.expiresAt")}},[e._v("\n "+e._s(e.newToken.expiresAt||"(not set)")+"\n ")])],1)],1):e._e()],1),e._v(" "),i("el-dialog",{attrs:{visible:e.inviteUserDialogVisible,"show-close":!1,title:e.$t("invites.sendRegistration"),"custom-class":"invite-via-email-dialog"},on:{"update:visible":function(t){e.inviteUserDialogVisible=t}}},[i("div",[i("p",{staticClass:"info"},[e._v(e._s(e.$t("invites.inviteViaEmailAlert")))]),e._v(" "),i("el-form",{ref:"inviteUserForm",attrs:{model:e.inviteUserForm,rules:e.rules,"label-width":e.getLabelWidth,"status-icon":""}},[i("el-form-item",{attrs:{label:e.$t("invites.email"),prop:"email"}},[i("el-input",{attrs:{name:"email",type:"email",autofocus:""},model:{value:e.inviteUserForm.email,callback:function(t){e.$set(e.inviteUserForm,"email",t)},expression:"inviteUserForm.email"}})],1),e._v(" "),i("el-form-item",{attrs:{label:e.$t("invites.name"),prop:"name"}},[i("el-input",{attrs:{name:"name"},model:{value:e.inviteUserForm.name,callback:function(t){e.$set(e.inviteUserForm,"name",t)},expression:"inviteUserForm.name"}})],1)],1)],1),e._v(" "),i("span",{attrs:{slot:"footer"},slot:"footer"},[i("el-button",{on:{click:e.closeDialogWindow}},[e._v(e._s(e.$t("invites.cancel")))]),e._v(" "),i("el-button",{attrs:{type:"primary"},on:{click:e.inviteUserViaEmail}},[e._v(e._s(e.$t("invites.create")))])],1)]),e._v(" "),i("el-table",{directives:[{name:"loading",rawName:"v-loading",value:e.loading,expression:"loading"}],staticClass:"invite-token-table",attrs:{data:e.tokens,"default-sort":{prop:"used",order:"ascending"}}},[e.isDesktop?i("el-table-column",{attrs:{label:e.$t("invites.id"),"min-width":"60",prop:"id",sortable:""}}):e._e(),e._v(" "),i("el-table-column",{attrs:{label:e.$t("invites.token"),"min-width":e.isDesktop?320:120,prop:"token"}}),e._v(" "),e.isDesktop?i("el-table-column",{attrs:{label:e.$t("invites.expiresAt"),align:"center","header-align":"center","min-width":"110",prop:"expires_at",sortable:""}}):e._e(),e._v(" "),i("el-table-column",{attrs:{label:e.$t("invites.maxUse"),align:"center","header-align":"center","min-width":"60",prop:"max_use",sortable:""}}),e._v(" "),e.isDesktop?i("el-table-column",{attrs:{label:e.$t("invites.uses"),align:"center","header-align":"center","min-width":"60",prop:"uses"}}):e._e(),e._v(" "),i("el-table-column",{attrs:{label:e.$t("invites.used"),"min-width":e.isDesktop?60:50,align:"center","header-align":"center",prop:"used",sortable:""},scopedSlots:e._u([{key:"default",fn:function(t){return[i("el-tag",{attrs:{type:t.row.used?"danger":"success","disable-transitions":""}},[e._v("\n "+e._s(t.row.used?e.$t("invites.used"):e.$t("invites.active"))+"\n ")])]}}])}),e._v(" "),i("el-table-column",{attrs:{label:e.$t("invites.actions"),"min-width":e.isDesktop?100:50,align:"center","header-align":"center"},scopedSlots:e._u([{key:"default",fn:function(t){return[i("el-button",{attrs:{type:"text",size:"small"},nativeOn:{click:function(i){return e.revokeInviteToken(t.row.token)}}},[e._v("\n "+e._s(e.$t("invites.revoke"))+"\n ")])]}}])})],1)],1)},[],!1,null,null,null);p.options.__file="index.vue";t.default=p.exports},ObxI:function(e,t,i){"use strict";var n=i("Tykb");i.n(n).a},Tykb:function(e,t,i){}}]); +//# sourceMappingURL=chunk-7c6b.e63ae1da.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-7c6b.e63ae1da.js.map b/priv/static/adminfe/static/js/chunk-7c6b.e63ae1da.js.map new file mode 100644 index 000000000..2114a3c52 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-7c6b.e63ae1da.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/invites/index.vue?8ebd","webpack:///./src/views/invites/index.vue?b523","webpack:///src/views/invites/index.vue","webpack:///./src/views/invites/index.vue","webpack:///./src/views/invites/index.vue?0fc1"],"names":["views_invitesvue_type_script_lang_js_","components","RebootButton","data","rules","email","validator","this","validateEmail","trigger","newTokenForm","maxUse","expiresAt","inviteUserForm","name","createTokenDialogVisible","inviteUserDialogVisible","computed","objectSpread_default","Object","vuex_esm","getLabelWidth","isDesktop","inviteLink","concat","utils","authHost","newToken","token","$store","state","app","device","loading","invites","tokens","inviteTokens","mounted","dispatch","methods","closeDialogWindow","$data","createToken","inviteUserViaEmail","_inviteUserViaEmail","asyncToGenerator_default","regenerator_default","a","mark","_callee2","_this","wrap","_context2","prev","next","$refs","validate","_ref","_callee","valid","_context","$message","type","message","$t","abrupt","stop","_x","apply","arguments","revokeInviteToken","rule","value","callback","Error","validEmail","test","component","componentNormalizer","_vm","_h","$createElement","_c","_self","staticClass","_v","_s","on","click","$event","attrs","visible","show-close","title","custom-class","update:visible","ref","model","label-width","status-icon","label","min","size","$$v","$set","expression","placeholder","value-format","slot","href","underline","target","_e","prop","autofocus","directives","rawName","default-sort","order","min-width","sortable","align","header-align","scopedSlots","_u","key","fn","scope","row","used","disable-transitions","nativeOn","options","__file","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n"],"mappings":"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","file":"static/js/chunk-7c6b.e63ae1da.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"invites-container\"},[_c('div',{staticClass:\"invites-header-container\"},[_c('h1',[_vm._v(_vm._s(_vm.$t('invites.inviteTokens')))]),_vm._v(\" \"),_c('reboot-button')],1),_vm._v(\" \"),_c('div',{staticClass:\"actions-container\"},[_c('el-button',{staticClass:\"create-invite-token\",on:{\"click\":function($event){_vm.createTokenDialogVisible = true}}},[_c('span',[_c('i',{staticClass:\"icon el-icon-plus\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('invites.createInviteToken'))+\"\\n \")])]),_vm._v(\" \"),_c('el-button',{staticClass:\"invite-via-email\",on:{\"click\":function($event){_vm.inviteUserDialogVisible = true}}},[_c('span',[_c('i',{staticClass:\"icon el-icon-message\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('invites.inviteUserViaEmail'))+\"\\n \")])])],1),_vm._v(\" \"),_c('el-dialog',{attrs:{\"visible\":_vm.createTokenDialogVisible,\"show-close\":false,\"title\":_vm.$t('invites.createInviteToken'),\"custom-class\":\"create-new-token-dialog\"},on:{\"update:visible\":function($event){_vm.createTokenDialogVisible=$event}}},[_c('el-form',{ref:\"newTokenForm\",attrs:{\"model\":_vm.newTokenForm,\"label-width\":_vm.getLabelWidth,\"status-icon\":\"\"}},[_c('el-form-item',{attrs:{\"label\":_vm.$t('invites.maxUse')}},[_c('el-input-number',{attrs:{\"min\":0,\"size\":_vm.isDesktop ? 'medium' : 'small',\"name\":\"maxUse\"},model:{value:(_vm.newTokenForm.maxUse),callback:function ($$v) {_vm.$set(_vm.newTokenForm, \"maxUse\", $$v)},expression:\"newTokenForm.maxUse\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('invites.expiresAt')}},[_c('el-date-picker',{staticClass:\"pick-date\",attrs:{\"placeholder\":_vm.$t('invites.pickDate'),\"type\":\"date\",\"name\":\"date\",\"value-format\":\"yyyy-MM-dd\"},model:{value:(_vm.newTokenForm.expiresAt),callback:function ($$v) {_vm.$set(_vm.newTokenForm, \"expiresAt\", $$v)},expression:\"newTokenForm.expiresAt\"}})],1)],1),_vm._v(\" \"),_c('span',{attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{staticClass:\"invites-close-dialog\",on:{\"click\":_vm.closeDialogWindow}},[_vm._v(_vm._s(_vm.$t('invites.cancel')))]),_vm._v(\" \"),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.createToken}},[_vm._v(_vm._s(_vm.$t('invites.create')))])],1),_vm._v(\" \"),('token' in _vm.newToken)?_c('el-card',[_c('div',{staticClass:\"clearfix\",attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('span',[_vm._v(_vm._s(_vm.$t('invites.tokenCreated')))])]),_vm._v(\" \"),_c('el-form',{staticClass:\"new-token-card\",attrs:{\"label-width\":\"80px\"}},[_c('el-form-item',{attrs:{\"label\":_vm.$t('invites.inviteLink')}},[_c('el-link',{attrs:{\"href\":_vm.inviteLink,\"underline\":false,\"target\":\"_blank\"}},[_vm._v(\"\\n \"+_vm._s(_vm.inviteLink)+\"\\n \")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('invites.token')}},[_vm._v(\"\\n \"+_vm._s(_vm.newToken.token)+\"\\n \")]),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('invites.maxUse')}},[_vm._v(\"\\n \"+_vm._s(_vm.newToken.maxUse)+\"\\n \")]),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('invites.expiresAt')}},[_vm._v(\"\\n \"+_vm._s(_vm.newToken.expiresAt || '(not set)')+\"\\n \")])],1)],1):_vm._e()],1),_vm._v(\" \"),_c('el-dialog',{attrs:{\"visible\":_vm.inviteUserDialogVisible,\"show-close\":false,\"title\":_vm.$t('invites.sendRegistration'),\"custom-class\":\"invite-via-email-dialog\"},on:{\"update:visible\":function($event){_vm.inviteUserDialogVisible=$event}}},[_c('div',[_c('p',{staticClass:\"info\"},[_vm._v(_vm._s(_vm.$t('invites.inviteViaEmailAlert')))]),_vm._v(\" \"),_c('el-form',{ref:\"inviteUserForm\",attrs:{\"model\":_vm.inviteUserForm,\"rules\":_vm.rules,\"label-width\":_vm.getLabelWidth,\"status-icon\":\"\"}},[_c('el-form-item',{attrs:{\"label\":_vm.$t('invites.email'),\"prop\":\"email\"}},[_c('el-input',{attrs:{\"name\":\"email\",\"type\":\"email\",\"autofocus\":\"\"},model:{value:(_vm.inviteUserForm.email),callback:function ($$v) {_vm.$set(_vm.inviteUserForm, \"email\", $$v)},expression:\"inviteUserForm.email\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('invites.name'),\"prop\":\"name\"}},[_c('el-input',{attrs:{\"name\":\"name\"},model:{value:(_vm.inviteUserForm.name),callback:function ($$v) {_vm.$set(_vm.inviteUserForm, \"name\", $$v)},expression:\"inviteUserForm.name\"}})],1)],1)],1),_vm._v(\" \"),_c('span',{attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":_vm.closeDialogWindow}},[_vm._v(_vm._s(_vm.$t('invites.cancel')))]),_vm._v(\" \"),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.inviteUserViaEmail}},[_vm._v(_vm._s(_vm.$t('invites.create')))])],1)]),_vm._v(\" \"),_c('el-table',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],staticClass:\"invite-token-table\",attrs:{\"data\":_vm.tokens,\"default-sort\":{prop: 'used', order: 'ascending'}}},[(_vm.isDesktop)?_c('el-table-column',{attrs:{\"label\":_vm.$t('invites.id'),\"min-width\":\"60\",\"prop\":\"id\",\"sortable\":\"\"}}):_vm._e(),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.$t('invites.token'),\"min-width\":_vm.isDesktop ? 320 : 120,\"prop\":\"token\"}}),_vm._v(\" \"),(_vm.isDesktop)?_c('el-table-column',{attrs:{\"label\":_vm.$t('invites.expiresAt'),\"align\":\"center\",\"header-align\":\"center\",\"min-width\":\"110\",\"prop\":\"expires_at\",\"sortable\":\"\"}}):_vm._e(),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.$t('invites.maxUse'),\"align\":\"center\",\"header-align\":\"center\",\"min-width\":\"60\",\"prop\":\"max_use\",\"sortable\":\"\"}}),_vm._v(\" \"),(_vm.isDesktop)?_c('el-table-column',{attrs:{\"label\":_vm.$t('invites.uses'),\"align\":\"center\",\"header-align\":\"center\",\"min-width\":\"60\",\"prop\":\"uses\"}}):_vm._e(),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.$t('invites.used'),\"min-width\":_vm.isDesktop ? 60 : 50,\"align\":\"center\",\"header-align\":\"center\",\"prop\":\"used\",\"sortable\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-tag',{attrs:{\"type\":scope.row.used ? 'danger' : 'success',\"disable-transitions\":\"\"}},[_vm._v(\"\\n \"+_vm._s(scope.row.used ? _vm.$t('invites.used') : _vm.$t('invites.active'))+\"\\n \")])]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.$t('invites.actions'),\"min-width\":_vm.isDesktop ? 100 : 50,\"align\":\"center\",\"header-align\":\"center\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-button',{attrs:{\"type\":\"text\",\"size\":\"small\"},nativeOn:{\"click\":function($event){return _vm.revokeInviteToken(scope.row.token)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('invites.revoke'))+\"\\n \")])]}}])})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=1ca5df66&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\""],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-7e30.ec42e302.js b/priv/static/adminfe/static/js/chunk-7e30.ec42e302.js deleted file mode 100644 index 0a0e1ca34..000000000 --- a/priv/static/adminfe/static/js/chunk-7e30.ec42e302.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-7e30"],{"+2nY":function(t,e,i){"use strict";var s=i("ld6V");i.n(s).a},"+qaP":function(t,e,i){"use strict";var s=i("60OA");i.n(s).a},"0ods":function(t,e,i){},"2q6O":function(t,e,i){"use strict";var s=i("Scsy");i.n(s).a},"3IoU":function(t,e,i){"use strict";var s=i("6V7o");i.n(s).a},"4NUT":function(t,e,i){},"4b9x":function(t,e,i){"use strict";var s=i("wgcy");i.n(s).a},"60OA":function(t,e,i){},"6V7o":function(t,e,i){},"77pt":function(t,e,i){},"9Hof":function(t,e,i){"use strict";var s=i("ncj/");i.n(s).a},"9p49":function(t,e,i){},DPt0:function(t,e,i){"use strict";var s=i("x6RV");i.n(s).a},Ezi3:function(t,e,i){"use strict";var s=i("MNl6");i.n(s).a},FCne:function(t,e,i){"use strict";var s=i("OCuP");i.n(s).a},"J7+w":function(t,e,i){"use strict";var s=i("fyIw");i.n(s).a},JqY8:function(t,e,i){},KFE3:function(t,e,i){"use strict";var s=i("mSK5");i.n(s).a},LHUV:function(t,e,i){"use strict";var s=i("0ods");i.n(s).a},MNl6:function(t,e,i){},NiUD:function(t,e,i){},OCuP:function(t,e,i){},PYLh:function(t,e,i){},PjrB:function(t,e,i){},Px65:function(t,e,i){},PygS:function(t,e,i){"use strict";var s=i("TtMh");i.n(s).a},RSJF:function(t,e,i){},SFMd:function(t,e,i){"use strict";var s=i("PjrB");i.n(s).a},Scsy:function(t,e,i){},TOIk:function(t,e,i){},TRR9:function(t,e,i){},TtMh:function(t,e,i){},TudB:function(t,e,i){},"UbP/":function(t,e,i){},UdS4:function(t,e,i){"use strict";var s=i("WwJU");i.n(s).a},UqcT:function(t,e,i){"use strict";var s=i("RSJF");i.n(s).a},UtFC:function(t,e,i){},"WvM+":function(t,e,i){"use strict";var s=i("TRR9");i.n(s).a},WwJU:function(t,e,i){},YKHE:function(t,e,i){},YcIK:function(t,e,i){"use strict";i.r(e);var s=i("o0o1"),n=i.n(s),a=i("yXPU"),r=i.n(a),o=i("mSNy"),u={"activity-pub":{label:"settings.activityPub",settings:[":activitypub",":user"]},authentication:{label:"settings.auth",settings:[":auth",":ldap",":oauth2","Pleroma.Web.Auth.Authenticator"]},"auto-linker":{label:"settings.autoLinker",settings:[":opts"]},esshd:{label:"settings.esshd",settings:[":esshd"]},captcha:{label:"settings.captcha",settings:["Pleroma.Captcha","Pleroma.Captcha.Kocaptcha"]},frontend:{label:"settings.frontend",settings:[":assets",":chat",":emoji",":frontend_configurations",":markup",":static_fe"]},gopher:{label:"settings.gopher",settings:[":gopher"]},http:{label:"settings.http",settings:[":cors_plug",":http",":http_security",":web_cache_ttl"]},instance:{label:"settings.instance",settings:[":admin_token",":instance",":manifest","Pleroma.User","Pleroma.ScheduledActivity",":uri_schemes",":feed",":streamer"]},"job-queue":{label:"settings.jobQueue",settings:["Pleroma.ActivityExpiration","Oban",":workers"]},logger:{label:"settings.logger",settings:[":console",":ex_syslogger",":quack",":logger"]},mailer:{label:"settings.mailer",settings:[":email_notifications","Pleroma.Emails.Mailer","Pleroma.Emails.UserEmail",":swoosh","Pleroma.Emails.NewUsersDigestEmail"]},"media-proxy":{label:"settings.mediaProxy",settings:[":media_proxy"]},metadata:{label:"settings.metadata",settings:["Pleroma.Web.Metadata",":rich_media"]},mrf:{label:"settings.mrf",settings:[":mrf_simple",":mrf_rejectnonpublic",":mrf_hellthread",":mrf_keyword",":mrf_subchain",":mrf_mention",":mrf_normalize_markup",":mrf_vocabulary",":mrf_object_age",":modules"]},"rate-limiters":{label:"settings.rateLimiters",settings:[":rate_limit"]},relays:{label:"settings.relays",settings:["relays"]},"web-push":{label:"settings.webPush",settings:[":vapid_details"]},upload:{label:"settings.upload",settings:["Pleroma.Upload.Filter.AnonymizeFilename","Pleroma.Upload.Filter.Mogrify","Pleroma.Uploaders.S3","Pleroma.Uploaders.Local","Pleroma.Upload"]},other:{label:"settings.other",settings:[":mime","Pleroma.Plugs.RemoteIp"]}},l=i("MVZn"),c=i.n(l),p=i("L2JU"),d=i("lSNA"),g=i.n(d),h={name:"AutoLinkerInput",props:{data:{type:[Object,Array],default:function(){return{}}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}}},methods:{autoLinkerBooleanValue:function(t){var e=this.data[this.setting.key];return"string"==typeof e||"number"==typeof e},autoLinkerIntegerValue:function(t){return this.data[this.setting.key]||0},autoLinkerStringValue:function(t){return this.data[this.setting.key]||""},processTwoTypeValue:function(t,e){if(!0===t){var i=":truncate"===e?0:"";this.updateSetting(i,this.settingGroup.group,this.settingGroup.key,e,this.setting.type)}else this.updateSetting(t,this.settingGroup.group,this.settingGroup.key,e,this.setting.type)},updateSetting:function(t,e,i,s,n){this.$store.dispatch("UpdateSettings",{group:e,key:i,input:s,value:t,type:n}),this.$store.dispatch("UpdateState",{group:e,key:i,input:s,value:t})}}},m=(i("LHUV"),i("KHd+")),f=Object(m.a)(h,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",[":class"===t.setting.key||":rel"===t.setting.key?i("div",{attrs:{"data-search":t.setting.key||t.setting.group}},[i("el-switch",{attrs:{value:t.autoLinkerBooleanValue(t.setting.key)},on:{change:function(e){return t.processTwoTypeValue(e,t.setting.key)}}}),t._v(" "),t.autoLinkerBooleanValue(t.setting.key)?i("el-input",{attrs:{value:t.autoLinkerStringValue(t.setting.key)},on:{input:function(e){return t.processTwoTypeValue(e,t.setting.key)}}}):t._e()],1):t._e(),t._v(" "),":truncate"===t.setting.key?i("div",{attrs:{"data-search":t.setting.key||t.setting.group}},[i("el-switch",{attrs:{value:t.autoLinkerBooleanValue(t.setting.key)},on:{change:function(e){return t.processTwoTypeValue(e,t.setting.key)}}}),t._v(" "),t.autoLinkerBooleanValue(t.setting.key)?i("el-input-number",{attrs:{value:t.autoLinkerIntegerValue(t.setting.key)},on:{input:function(e){return t.processTwoTypeValue(e,t.setting.key)}}}):t._e()],1):t._e()])},[],!1,null,null,null);f.options.__file="AutoLinkerInput.vue";var b=f.exports,v=i("RIqP"),y=i.n(v),_={name:"EditableKeywordInput",props:{data:{type:Array,default:function(){return{}}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}}},computed:{editableKeywordWithInteger:function(){return Array.isArray(this.setting.type)&&this.setting.type.includes("keyword")&&this.setting.type.includes("integer")},isDesktop:function(){return"desktop"===this.$store.state.app.device}},methods:{addRowToEditableKeyword:function(){var t=[].concat(y()(this.data),[{"":{value:"",id:this.generateID()}}]);this.updateSetting(t,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},deleteEditableKeywordRow:function(t){var e=this.getId(t),i=this.data.filter(function(t){return Object.values(t)[0].id!==e});this.updateSetting(i,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},generateID:function(){return"f".concat((~~(1e8*Math.random())).toString(16))},getKey:function(t){return Object.keys(t)[0]},getId:function(t){return Object.values(t)[0].id},getValue:function(t){return Object.values(t)[0].value},parseEditableKeyword:function(t,e,i){var s=this,n=this.getId(i),a=this.data.map(function(i,a){return Object.values(i)[0].id===n?"key"===e?g()({},t,Object.values(s.data[a])[0]):g()({},Object.keys(i)[0],c()({},Object.values(s.data[a])[0],{value:t})):i});this.updateSetting(a,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},updateSetting:function(t,e,i,s,n){var a=this.wrapUpdatedSettings(t,s,n);this.$store.dispatch("UpdateSettings",{group:e,key:i,input:s,value:a,type:n}),this.$store.dispatch("UpdateState",{group:e,key:i,input:s,value:t})},wrapUpdatedSettings:function(t,e,i){return"map"===i?t.reduce(function(t,e){return c()({},t,g()({},Object.keys(e)[0],Object.values(e)[0].value))},{}):t.reduce(function(t,e){return c()({},t,g()({},Object.keys(e)[0],["list",Object.values(e)[0].value]))},{})}}},k=(i("nKzF"),Object(m.a)(_,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"editable-keyword-container"},[":replace"===t.setting.key?i("div",{attrs:{"data-search":t.setting.key||t.setting.group}},[t._l(t.data,function(e){return i("div",{key:t.getId(e),staticClass:"setting-input"},[i("el-input",{staticClass:"name-input",attrs:{value:t.getKey(e),placeholder:"pattern"},on:{input:function(i){return t.parseEditableKeyword(i,"key",e)}}}),t._v(" :\n "),i("el-input",{staticClass:"value-input",attrs:{value:t.getValue(e),placeholder:"replacement"},on:{input:function(i){return t.parseEditableKeyword(i,"value",e)}}}),t._v(" "),i("el-button",{staticClass:"icon-minus-button",attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-minus",circle:""},on:{click:function(i){return t.deleteEditableKeywordRow(e)}}})],1)}),t._v(" "),i("el-button",{attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-plus",circle:""},on:{click:t.addRowToEditableKeyword}})],2):t.editableKeywordWithInteger?i("div",{attrs:{"data-search":t.setting.key||t.setting.group}},[t._l(t.data,function(e){return i("div",{key:t.getId(e),staticClass:"setting-input"},[i("el-input",{staticClass:"name-input",attrs:{value:t.getKey(e),placeholder:"key"},on:{input:function(i){return t.parseEditableKeyword(i,"key",e)}}}),t._v(" :\n "),i("el-input-number",{staticClass:"value-input",attrs:{value:t.getValue(e),min:0,size:"large"},on:{change:function(i){return t.parseEditableKeyword(i,"value",e)}}}),t._v(" "),i("el-button",{staticClass:"icon-minus-button",attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-minus",circle:""},on:{click:function(i){return t.deleteEditableKeywordRow(e)}}})],1)}),t._v(" "),i("el-button",{attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-plus",circle:""},on:{click:t.addRowToEditableKeyword}})],2):i("div",{attrs:{"data-search":t.setting.key||t.setting.group}},[t._l(t.data,function(e){return i("div",{key:t.getId(e),staticClass:"setting-input"},[i("el-input",{staticClass:"name-input",attrs:{value:t.getKey(e),placeholder:"key"},on:{input:function(i){return t.parseEditableKeyword(i,"key",e)}}}),t._v(" :\n "),i("el-select",{staticClass:"value-input",attrs:{value:t.getValue(e),multiple:"",filterable:"","allow-create":""},on:{change:function(i){return t.parseEditableKeyword(i,"value",e)}}}),t._v(" "),i("el-button",{staticClass:"icon-minus-button",attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-minus",circle:""},on:{click:function(i){return t.deleteEditableKeywordRow(e)}}})],1)}),t._v(" "),i("el-button",{attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-plus",circle:""},on:{click:t.addRowToEditableKeyword}})],2)])},[],!1,null,null,null));k.options.__file="EditableKeywordInput.vue";var S=k.exports,D={name:"CrontabInput",props:{data:{type:Object,default:function(){return{}}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device},isTablet:function(){return"tablet"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100%":"380px"},workers:function(){return this.setting.suggestions.map(function(t){return t[1]})}},methods:{getSuggestion:function(t){return this.setting.suggestions.find(function(e){return e[1]===t})[0]},update:function(t,e){var i=this.$store.state.settings.settings[this.settingGroup.group][this.settingGroup.key][this.setting.key],s=c()({},i,g()({},e,t)),n=Object.keys(i).reduce(function(s,n){return n===e?c()({},s,g()({},n,["reversed_tuple",t])):c()({},s,g()({},n,["reversed_tuple",i[n]]))},{});this.$store.dispatch("UpdateSettings",{group:this.settingGroup.group,key:this.settingGroup.key,input:this.setting.key,value:n,type:this.setting.type}),this.$store.dispatch("UpdateState",{group:this.settingGroup.group,key:this.settingGroup.key,input:this.setting.key,value:s})}}},w=(i("mstB"),Object(m.a)(D,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("el-form",{staticClass:"crontab",attrs:{"label-width":t.labelWidth,"label-position":t.isMobile?"top":"right"}},t._l(t.workers,function(e){return i("el-form-item",{key:e,staticClass:"crontab-container",attrs:{label:e,"data-search":t.setting.key}},[i("el-input",{staticClass:"input setting-input",attrs:{value:t.data[e],placeholder:t.getSuggestion(e)||null},on:{input:function(i){return t.update(i,e)}}})],1)}),1)},[],!1,null,null,null));w.options.__file="CrontabInput.vue";var x=w.exports,C={name:"EditableKeywordInput",props:{data:{type:Array,default:function(){return{}}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device}},methods:{addIconToIcons:function(){var t=[].concat(y()(this.data),[[{key:"",value:"",id:this.generateID()}]]);this.updateSetting(t,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},addValueToIcons:function(t){var e=this,i=this.data.map(function(i,s){return s===t?[].concat(y()(i),[{key:"",value:"",id:e.generateID()}]):i});this.updateSetting(i,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},deleteIcondRow:function(t){var e=this.data.filter(function(e,i){return i!==t});this.updateSetting(e,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},generateID:function(){return"f".concat((~~(1e8*Math.random())).toString(16))},parseIcons:function(t,e,i,s){var n=this.data.map(function(n,a){return a===i?n.map(function(i){return i.id===s?"key"===e?c()({},i,{key:t}):c()({},i,{value:t}):i}):n});this.updateSetting(n,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},updateSetting:function(t,e,i,s,n){var a=t.map(function(t){return t.reduce(function(t,e){var i=e.key,s=e.value;return c()({},t,g()({},i,s))},{})},{});this.$store.dispatch("UpdateSettings",{group:e,key:i,input:s,value:a,type:n}),this.$store.dispatch("UpdateState",{group:e,key:i,input:s,value:t})}}},$=(i("rdar"),Object(m.a)(C,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"mascot-container",attrs:{"data-search":t.setting.key||t.setting.group}},[t._l(t.data,function(e,s){return i("div",{key:s,staticClass:"mascot"},[i("div",{staticClass:"icons-container"},[i("div",{staticClass:"icon-container"},t._l(e,function(e){var n=e.key,a=e.value,r=e.id;return i("div",{key:r,staticClass:"icon-values-container"},[i("el-input",{staticClass:"icon-key-input",attrs:{value:n,placeholder:"key"},on:{input:function(e){return t.parseIcons(e,"key",s,r)}}}),t._v(" :\n "),i("el-input",{staticClass:"icon-value-input",attrs:{value:a,placeholder:"value"},on:{input:function(e){return t.parseIcons(e,"value",s,r)}}})],1)}),0),t._v(" "),i("el-button",{staticClass:"icon-minus-button",attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-minus",circle:""},on:{click:function(e){return t.deleteIcondRow(s)}}})],1),t._v(" "),i("div",{staticClass:"icons-button-container"},[i("el-button",{attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-plus",circle:""},on:{click:function(e){return t.addValueToIcons(s)}}}),t._v(" "),i("span",{staticClass:"icons-button-desc"},[t._v("Add another `key - value` pair to this icon")])],1),t._v(" "),i("el-divider",{staticClass:"divider"})],1)}),t._v(" "),i("div",{staticClass:"icons-button-container"},[i("el-button",{attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-plus",circle:""},on:{click:t.addIconToIcons}}),t._v(" "),i("span",{staticClass:"icons-button-desc"},[t._v("Add another icon configuration")])],1)],2)},[],!1,null,null,null));$.options.__file="IconsInput.vue";var P=$.exports,O=i("QILm"),U=i.n(O),j=i("J4zp"),M=i.n(j),T={name:"MascotsInput",props:{data:{type:Array,default:function(){return{}}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device}},methods:{addRowToMascots:function(){var t=[].concat(y()(this.data),[{"":{":url":"",":mime_type":"",id:this.generateID()}}]);this.updateSetting(t,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},deleteMascotsRow:function(t){var e=this.getId(t),i=this.data.filter(function(t){return Object.values(t)[0].id!==e});this.updateSetting(i,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},generateID:function(){return"f".concat((~~(1e8*Math.random())).toString(16))},getId:function(t){return Object.values(t)[0].id},getName:function(t){return Object.keys(t)[0]},getUrl:function(t){var e=Object.values(t);return M()(e,1)[0][":url"]},getMimeType:function(t){var e=Object.values(t);return M()(e,1)[0][":mime_type"]},parseMascots:function(t,e,i){var s=this,n=this.getId(i),a=this.data.map(function(i,a){return Object.values(i)[0].id===n?"name"===e?g()({},t,Object.values(s.data[a])[0]):"url"===e?g()({},Object.keys(i)[0],c()({},Object.values(s.data[a])[0],{":url":t})):g()({},Object.keys(i)[0],c()({},Object.values(s.data[a])[0],{":mime_type":t})):i});this.updateSetting(a,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},updateSetting:function(t,e,i,s,n){var a=t.reduce(function(t,e){var i=Object.values(e)[0],s=(i.id,U()(i,["id"]));return c()({},t,g()({},Object.keys(e)[0],["",s]))},{});this.$store.dispatch("UpdateSettings",{group:e,key:i,input:s,value:a,type:n}),this.$store.dispatch("UpdateState",{group:e,key:i,input:s,value:t})}}},A=(i("+2nY"),Object(m.a)(T,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"mascot-container",attrs:{"data-search":t.setting.key||t.setting.group}},[t._l(t.data,function(e){return i("div",{key:t.getId(e),staticClass:"mascot"},[i("el-form-item",{staticClass:"mascot-form-item",attrs:{label:"Name","label-width":"85px"}},[i("div",{staticClass:"mascot-name-container"},[i("el-input",{staticClass:"mascot-name-input",attrs:{value:t.getName(e),placeholder:"Name"},on:{input:function(i){return t.parseMascots(i,"name",e)}}}),t._v(" "),i("el-button",{staticClass:"icon-minus-button",attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-minus",circle:""},on:{click:function(i){return t.deleteMascotsRow(e)}}})],1)]),t._v(" "),i("el-form-item",{staticClass:"mascot-form-item",attrs:{label:"URL","label-width":"85px"}},[i("el-input",{staticClass:"mascot-input",attrs:{value:t.getUrl(e),placeholder:"URL"},on:{input:function(i){return t.parseMascots(i,"url",e)}}})],1),t._v(" "),i("el-form-item",{staticClass:"mascot-form-item",attrs:{label:"Mime type","label-width":"85px"}},[i("el-input",{staticClass:"mascot-input",attrs:{value:t.getMimeType(e),placeholder:"Mime type"},on:{input:function(i){return t.parseMascots(i,"mimeType",e)}}})],1)],1)}),t._v(" "),i("el-button",{attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-plus",circle:""},on:{click:t.addRowToMascots}})],2)},[],!1,null,null,null));A.options.__file="MascotsInput.vue";var G=A.exports,W=i("h74u"),L={name:"ProxyUrlInput",props:{data:{type:[Object,Array],default:function(){return{}}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}},parents:{type:Array,default:function(){return[]},required:!1}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device},settings:function(){return this.$store.state.settings.settings},updatedSettings:function(){return this.$store.state.settings.updatedSettings},proxyUrlData:function(){return 0===Object.keys(this.data).length?{socks5:!1,host:null,port:null}:this.data}},methods:{updateProxyUrl:function(t,e){var i;i="socks5"===e?c()({},this.proxyUrlData,{socks5:t}):"host"===e?c()({},this.proxyUrlData,{host:t}):c()({},this.proxyUrlData,{port:t}),this.updateSetting(i,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},updateSetting:function(t,e,i,s,n){var a=t.socks5?[":socks5",t.host,t.port]:"".concat(t.host,":").concat(t.port);if(this.parents.length>0){var r=Object(W.f)(t,a,e,i,this.parents.reverse(),this.settings,this.updatedSettings),o=r.valueForState,u=r.valueForUpdatedSettings,l=r.setting;this.$store.dispatch("UpdateSettings",{group:e,key:i,input:l.key,value:u,type:l.type}),this.$store.dispatch("UpdateState",{group:e,key:i,input:l.key,value:o})}else this.$store.dispatch("UpdateSettings",{group:e,key:i,input:s,value:a,type:n}),this.$store.dispatch("UpdateState",{group:e,key:i,input:s,value:t})}}},I=(i("mGnP"),Object(m.a)(L,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"proxy-url-input",attrs:{"data-search":t.setting.key||t.setting.group}},[i("el-input",{staticClass:"proxy-url-host-input",attrs:{value:t.proxyUrlData.host,placeholder:"host (e.g. localhost or 127.0.0.1)"},on:{input:function(e){return t.updateProxyUrl(e,"host")}}}),t._v(" "),t.isDesktop?i("span",[t._v(":")]):t._e(),t._v(" "),i("el-input",{staticClass:"proxy-url-value-input",attrs:{value:t.proxyUrlData.port,placeholder:"port (e.g 9020 or 3090)"},on:{input:function(e){return t.updateProxyUrl(e,"port")}}}),t._v(" "),i("div",{staticClass:"socks5-checkbox-container"},[i("el-checkbox",{attrs:{value:t.proxyUrlData.socks5},on:{change:function(e){return t.updateProxyUrl(e,"socks5")}}}),t._v(" "),i("span",{staticClass:"socks5-checkbox"},[t._v("Socks5")])],1)],1)},[],!1,null,null,null));I.options.__file="ProxyUrlInput.vue";var E=I.exports,R={name:"PruneInput",props:{data:{type:[Object,Array],default:function(){return{}}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}}},computed:{prune:{get:function(){return this.data[0]},set:function(t){this.updateRadioInput(t)}}},methods:{updateIntInput:function(t,e){this.updateSetting([e,t],this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},updateSetting:function(t,e,i,s,n){var a=t.includes(":disabled")?":disabled":t;this.$store.dispatch("UpdateSettings",{group:e,key:i,input:s,value:a,type:n}),this.$store.dispatch("UpdateState",{group:e,key:i,input:s,value:t})},updateRadioInput:function(t){var e=":disabled"===t?[t]:[t,0];this.updateSetting(e,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)}}},F=(i("Ezi3"),Object(m.a)(R,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{attrs:{"data-search":t.setting.key||t.setting.group}},[i("el-radio-group",{staticClass:"prune-options",model:{value:t.prune,callback:function(e){t.prune=e},expression:"prune"}},[i("el-radio",{attrs:{label:":disabled"}},[t._v("Disabled")]),t._v(" "),i("el-radio",{attrs:{label:":maxlen"}},[t._v("Limit-based")]),t._v(" "),i("el-radio",{attrs:{label:":maxage"}},[t._v("Time-based")])],1),t._v(" "),":maxlen"===t.prune?i("el-form-item",{attrs:{label:"max length","label-width":"100","label-position":"left"}},[i("el-input-number",{staticClass:"top-margin",attrs:{value:t.data[1],min:0,placeholder:"1500",size:"large"},on:{change:function(e){return t.updateIntInput(e,":maxlen")}}})],1):t._e(),t._v(" "),":maxage"===t.prune?i("el-form-item",{attrs:{label:"max age","label-width":"100","label-position":"left"}},[i("el-input-number",{staticClass:"top-margin",attrs:{value:t.data[1],min:0,placeholder:"3600",size:"large"},on:{change:function(e){return t.updateIntInput(e,":maxage")}}})],1):t._e()],1)},[],!1,null,null,null));F.options.__file="PruneInput.vue";var K=F.exports,V={name:"RateLimitInput",props:{data:{type:[Object,Array],default:function(){return{}}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device},rateLimitAllUsers:function(){return this.data[this.setting.key]?this.data[this.setting.key]:["",""]},rateLimitAuthUsers:function(){return!(!this.data[this.setting.key]||!Array.isArray(this.data[this.setting.key][0]))&&this.data[this.setting.key][1]},rateLimitUnauthUsers:function(){return!(!this.data[this.setting.key]||!Array.isArray(this.data[this.setting.key][1]))&&this.data[this.setting.key][0]}},methods:{parseRateLimiter:function(t,e,i,s,n){var a;"oneLimit"===s?a="scale"===i?[t,n[1]]:[n[0],t]:"unauthUsersLimit"===s?a="scale"===i?[[t,n[0][1]],[n[1][0],n[1][1]]]:[[n[0][0],t],[n[1][0],n[1][1]]]:"authUserslimit"===s&&(a="scale"===i?[[n[0][0],n[0][1]],[t,n[1][1]]]:[[n[0][0],n[0][1]],[n[1][0],t]]),this.updateSetting(a,this.settingGroup.group,this.settingGroup.key,e,this.setting.type)},toggleLimits:function(t,e){this.updateSetting(t,this.settingGroup.group,this.settingGroup.key,e)},updateSetting:function(t,e,i,s,n){var a=Array.isArray(t[0])?t.map(function(t){return{tuple:t}}):{tuple:t};this.$store.dispatch("UpdateSettings",{group:e,key:i,input:s,value:a,type:n}),this.$store.dispatch("UpdateState",{group:e,key:i,input:s,value:t})}}},z=(i("irif"),Object(m.a)(V,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"rate-limit-container",attrs:{"data-search":t.setting.key||t.setting.group}},[t.rateLimitAuthUsers?t._e():i("div",[i("el-input",{staticClass:"scale-input",attrs:{value:t.rateLimitAllUsers[0],placeholder:"scale"},on:{input:function(e){return t.parseRateLimiter(e,t.setting.key,"scale","oneLimit",t.rateLimitAllUsers)}}}),t._v(" "),i("span",[t._v(":")]),t._v(" "),i("el-input",{staticClass:"limit-input",attrs:{value:t.rateLimitAllUsers[1],placeholder:"limit"},on:{input:function(e){return t.parseRateLimiter(e,t.setting.key,"limit","oneLimit",t.rateLimitAllUsers)}}}),t._v(" "),i("div",{staticClass:"limit-button-container"},[i("el-button",{attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-plus",circle:""},on:{click:function(e){return t.toggleLimits([["",""],["",""]],t.setting.key)}}}),t._v(" "),i("p",{staticClass:"expl limit-expl"},[t._v("Set different limits for unauthenticated and authenticated users")])],1)],1),t._v(" "),t.rateLimitAuthUsers?i("div",[i("el-form-item",{staticClass:"rate-limit"},[i("div",{staticClass:"rate-limit-label-container"},[i("span",{staticClass:"rate-limit-label"},[t._v("\n Unauthenticated users:\n ")])]),t._v(" "),i("div",{staticClass:"rate-limit-content"},[i("el-input",{staticClass:"scale-input",attrs:{value:t.rateLimitUnauthUsers[0],placeholder:"scale"},on:{input:function(e){return t.parseRateLimiter(e,t.setting.key,"scale","unauthUsersLimit",[t.rateLimitUnauthUsers,t.rateLimitAuthUsers])}}}),t._v(" "),i("span",[t._v(":")]),t._v(" "),i("el-input",{staticClass:"limit-input",attrs:{value:t.rateLimitUnauthUsers[1],placeholder:"limit"},on:{input:function(e){return t.parseRateLimiter(e,t.setting.key,"limit","unauthUsersLimit",[t.rateLimitUnauthUsers,t.rateLimitAuthUsers])}}})],1)]),t._v(" "),i("el-form-item",{staticClass:"rate-limit"},[i("div",{staticClass:"rate-limit-label-container"},[i("span",{staticClass:"rate-limit-label"},[t._v("\n Authenticated users:\n ")])]),t._v(" "),i("div",{staticClass:"rate-limit-content"},[i("el-input",{staticClass:"scale-input",attrs:{value:t.rateLimitAuthUsers[0],placeholder:"scale"},on:{input:function(e){return t.parseRateLimiter(e,t.setting.key,"scale","authUserslimit",[t.rateLimitUnauthUsers,t.rateLimitAuthUsers])}}}),t._v(" "),i("span",[t._v(":")]),t._v(" "),i("el-input",{staticClass:"limit-input",attrs:{value:t.rateLimitAuthUsers[1],placeholder:"limit"},on:{input:function(e){return t.parseRateLimiter(e,t.setting.key,"limit","authUserslimit",[t.rateLimitUnauthUsers,t.rateLimitAuthUsers])}}})],1)]),t._v(" "),i("div",{staticClass:"limit-button-container"},[i("el-button",{staticClass:"icon-minus-button",attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-minus",circle:""},on:{click:function(e){return t.toggleLimits(["",""],t.setting.key)}}}),t._v(" "),i("p",{staticClass:"expl limit-expl"},[t._v("Set limit for all users")])],1)],1):t._e()])},[],!1,null,null,null));z.options.__file="RateLimitInput.vue";var N=z.exports,q={name:"RegInvitesInput",props:{data:{type:[Object,Array],default:function(){return{}}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}}},methods:{updateSetting:function(t,e,i,s,n){var a=this,r=this.$store.state.settings.settings[e][i][":registrations_open"],o=this.$store.state.settings.settings[e][i][":invites_enabled"];":registrations_open"===s&&t&&o?this.$confirm("Enabling this setting requires invites to be disabled. Are you sure you want to open registrations?","Warning",{confirmButtonText:"OK",cancelButtonText:"Cancel",type:"warning"}).then(function(){a.$store.dispatch("UpdateSettings",{group:e,key:i,input:s,value:t,type:n}),a.$store.dispatch("UpdateSettings",{group:e,key:i,input:":invites_enabled",value:!1,type:n}),a.$store.dispatch("UpdateState",{group:e,key:i,input:s,value:t}),a.$store.dispatch("UpdateState",{group:e,key:i,input:":invites_enabled",value:!1})}):":invites_enabled"===s&&t&&r?this.$confirm("Enabling this setting requires registrations to be disabled. Are you sure you want to enable invitations?","Warning",{confirmButtonText:"OK",cancelButtonText:"Cancel",type:"warning"}).then(function(){a.$store.dispatch("UpdateSettings",{group:e,key:i,input:s,value:t,type:n}),a.$store.dispatch("UpdateSettings",{group:e,key:i,input:":registrations_open",value:!1,type:n}),a.$store.dispatch("UpdateState",{group:e,key:i,input:s,value:t}),a.$store.dispatch("UpdateState",{group:e,key:i,input:":registrations_open",value:!1})}):(this.$store.dispatch("UpdateSettings",{group:e,key:i,input:s,value:t,type:n}),this.$store.dispatch("UpdateState",{group:e,key:i,input:s,value:t}))}}},B=(i("9Hof"),Object(m.a)(q,function(){var t=this,e=t.$createElement;return(t._self._c||e)("el-switch",{staticClass:"switch-input",attrs:{value:t.data[t.setting.key],"data-search":t.setting.key},on:{change:function(e){return t.updateSetting(e,t.settingGroup.group,t.settingGroup.key,t.setting.key,t.setting.type)}}})},[],!1,null,null,null));B.options.__file="RegInvitesInput.vue";var H=B.exports,Q={name:"SelectInputWithReducedLabels",props:{data:{type:[Array,Object],default:function(){return{}}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}}},computed:{inputValue:function(){return"Pleroma.Web.Auth.Authenticator"===this.setting.key?this.data.value:":rewrite_policy"===this.setting.key&&"string"==typeof this.data[this.setting.key]?[this.data[this.setting.key]]:this.data[this.setting.key]},isMobile:function(){return"mobile"===this.$store.state.app.device}},methods:{options:function(t){var e=this,i={":rewrite_policy":"Pleroma.Web.ActivityPub.MRF.","Pleroma.Web.Auth.Authenticator":"Pleroma.Web.Auth.",":method":"Pleroma.Captcha.",":adapter":"Swoosh.Adapters.",":providers":"Pleroma.Web.Metadata.Providers.",":parsers":"Pleroma.Web.RichMedia.Parsers.",":ttl_setters":"Pleroma.Web.RichMedia.Parser.",":scrub_policy":"Pleroma.HTML.",":federation_publisher_modules":"Pleroma.Web.",":uploader":"Pleroma.Uploaders.",":filters":"Pleroma.Upload.Filter."};return t.map(function(t){return{value:t,label:t.split(i[e.setting.key])[1]?t.split(i[e.setting.key])[1]:t}})},renderMultipleSelect:function(t){return Array.isArray(t)&&":backends"!==this.setting.key&&":args"!==this.setting.key&&(t.includes("module")||t.includes("list")&&t.includes("string")||t.includes("list")&&t.includes("atom")||t.includes("regex")&&t.includes("string")||":args"===this.setting.key)},rewritePolicyOptions:function(t){return t.map(function(t){return{value:t,label:t.split("Pleroma.Web.ActivityPub.MRF.")[1]?t.split("Pleroma.Web.ActivityPub.MRF.")[1]:t}})},updateSetting:function(t,e,i,s,n){var a=Object(W.c)(t);this.$store.dispatch("UpdateSettings",{group:e,key:i,input:s,value:a,type:n}),this.$store.dispatch("UpdateState",{group:e,key:i,input:s,value:a})}}},J=(i("3IoU"),Object(m.a)(Q,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"input"},[t.renderMultipleSelect(t.setting.type)?i("el-select",{staticClass:"input",attrs:{value:t.inputValue,"data-search":t.setting.key,multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.updateSetting(e,t.settingGroup.group,t.settingGroup.key,t.setting.key,t.setting.type)}}},t._l(t.options(t.setting.suggestions),function(t,e){return i("el-option",{key:e,attrs:{value:t.value,label:t.label}})}),1):t._e(),t._v(" "),"module"===t.setting.type||t.setting.type.includes("atom")&&t.setting.type.includes("dropdown")?i("el-select",{staticClass:"input",attrs:{value:!1===t.inputValue?"false":t.inputValue,"data-search":t.setting.key||t.setting.group,clearable:""},on:{change:function(e){return t.updateSetting(e,t.settingGroup.group,t.settingGroup.key,t.setting.key,t.setting.type)}}},t._l(t.options(t.setting.suggestions),function(t,e){return i("el-option",{key:e,attrs:{value:t.value,label:t.label}})}),1):t._e()],1)},[],!1,null,null,null));J.options.__file="SelectInputWithReducedLabels.vue";var Y=J.exports,X={name:"SpecificMultipleSelect",props:{data:{type:[Object,Array],default:function(){return{}}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}}},methods:{updateSetting:function(t,e,i,s,n){this.$store.dispatch("UpdateSettings",{group:e,key:i,input:s,value:t,type:n}),this.$store.dispatch("UpdateState",{group:e,key:i,input:s,value:t})}}},Z=(i("UqcT"),Object(m.a)(X,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"multiple-select-container"},[":backends"===t.setting.key?i("el-select",{staticClass:"input",attrs:{value:t.data.value,"data-search":t.setting.key||t.setting.group,multiple:""},on:{change:function(e){return t.updateSetting(e,t.settingGroup.group,t.settingGroup.key,t.setting.key,t.setting.type)}}},[i("el-option",{attrs:{value:":console",label:"console"}}),t._v(" "),i("el-option",{attrs:{value:":ex_syslogger",label:"ExSyslogger"}}),t._v(" "),i("el-option",{attrs:{value:"Quack.Logger",label:"Quack.Logger"}})],1):t._e(),t._v(" "),":args"===t.setting.key?i("el-select",{staticClass:"input",attrs:{value:t.data[t.setting.key],"data-search":t.setting.key||t.setting.group,multiple:""},on:{change:function(e){return t.updateSetting(e,t.settingGroup.group,t.settingGroup.key,t.setting.key,t.setting.type)}}},[i("el-option",{attrs:{value:"strip",label:"strip"}}),t._v(" "),i("el-option",{attrs:{value:"auto-orient",label:"auto-orient"}}),t._v(" "),i("el-option",{attrs:{value:"implode",label:"implode"}})],1):t._e()],1)},[],!1,null,null,null));Z.options.__file="SpecificMultipleSelect.vue";var tt=Z.exports,et=i("LvDl"),it=i.n(et),st=i("4MG8"),nt=i.n(st),at={name:"Inputs",components:{AutoLinkerInput:b,CrontabInput:x,EditableKeywordInput:S,IconsInput:P,MascotsInput:G,ProxyUrlInput:E,PruneInput:K,RateLimitInput:N,RegInvitesInput:H,SelectInputWithReducedLabels:Y,SpecificMultipleSelect:tt},props:{customLabelWidth:{type:String,default:function(){return this.labelWidth},required:!1},data:{type:[Object,Array],default:function(){return{}}},labelClass:{type:String,default:function(){return"label"},required:!1},margin:{type:Number,default:function(){return 0},required:!1},nested:{type:Boolean,default:function(){return!1}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}},settingParent:{type:Array,default:function(){return[]},required:!1}},computed:{canBeDeleted:function(){var t=this.settingGroup,e=t.group,i=t.key;return it.a.get(this.$store.state.settings.db,[e,i])&&this.$store.state.settings.db[e][i].includes(this.setting.key)},iconsData:function(){return Array.isArray(this.data[":icons"])?this.data[":icons"]:[]},inputValue:function(){return[":esshd",":cors_plug",":quack",":tesla",":swoosh"].includes(this.settingGroup.group)&&this.data[this.setting.key]?"atom"===this.setting.type&&":"===this.data[this.setting.key].value[0]?this.data[this.setting.key].value.substr(1):this.data[this.setting.key].value:":logger"===this.settingGroup.group&&":backends"===this.setting.key||"Pleroma.Web.Auth.Authenticator"===this.setting.key||":admin_token"===this.setting.key?this.data.value:":mime"===this.settingGroup.group&&":types"===this.settingParent[0].key?this.data.value?this.data.value[this.setting.key]:[]:"atom"===this.setting.type&&this.data[this.setting.key]&&":"===this.data[this.setting.key][0]?this.data[this.setting.key].substr(1):this.data[this.setting.key]},isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device},isTablet:function(){return"tablet"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},keywordData:function(){return Array.isArray(this.data)?this.data:[]},reducedSelects:function(){return[":filters",":uploader",":federation_publisher_modules",":scrub_policy",":ttl_setters",":parsers",":providers",":method",":rewrite_policy","Pleroma.Web.Auth.Authenticator"].includes(this.setting.key)||"Pleroma.Emails.Mailer"===this.settingGroup.key&&":adapter"===this.setting.key},settings:function(){return this.$store.state.settings.settings},updatedSettings:function(){return this.$store.state.settings.updatedSettings}},methods:{editableKeyword:function(t,e){return":replace"===t||"map"===e||Array.isArray(e)&&e.includes("keyword")&&e.includes("integer")||Array.isArray(e)&&e.includes("keyword")&&-1!==e.findIndex(function(t){return t.includes("list")&&t.includes("string")})},getFormattedDescription:function(t){return nt()(t)},processNestedData:function(t,e,i,s){var n=Object(W.f)(t,t,e,i,s.reverse(),this.settings,this.updatedSettings),a=n.valueForState,r=n.valueForUpdatedSettings,o=n.setting;this.$store.dispatch("UpdateSettings",{group:e,key:i,input:o.key,value:r,type:o.type}),this.$store.dispatch("UpdateState",{group:e,key:i,input:o.key,value:a})},removeSetting:function(){var t=r()(n.a.mark(function t(){var e=this;return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:this.$confirm(this.$t("settings.removeSettingConfirmation"),{confirmButtonText:this.$t("users.ok"),cancelButtonText:this.$t("users.cancel"),type:"warning"}).then(r()(n.a.mark(function t(){var i;return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return i=e.settingGroup.key?[{group:e.settingGroup.group,key:e.settingGroup.key,delete:!0,subkeys:[e.setting.key]}]:[{group:e.settingGroup.group,key:e.setting.key,delete:!0}],t.prev=1,t.next=4,e.$store.dispatch("RemoveSetting",i);case 4:t.next=9;break;case 6:return t.prev=6,t.t0=t.catch(1),t.abrupt("return");case 9:e.$message({type:"success",message:o.a.t("settings.successfullyRemoved")});case 10:case"end":return t.stop()}},t,null,[[1,6]])}))).catch(function(){e.$message({type:"info",message:e.$t("users.canceled")})});case 1:case"end":return t.stop()}},t,this)}));return function(){return t.apply(this,arguments)}}(),renderMultipleSelect:function(t){return!this.reducedSelects&&Array.isArray(t)&&":backends"!==this.setting.key&&":args"!==this.setting.key&&(t.includes("module")||t.includes("list")&&t.includes("string")||t.includes("list")&&t.includes("atom")||t.includes("regex")&&t.includes("string")||":args"===this.setting.key)},renderSingleSelect:function(t){return!this.reducedSelects&&("module"===t||t.includes("atom")&&t.includes("dropdown"))},update:function(t,e,i,s,n,a,r){var o=this.renderSingleSelect(a)?Object(W.c)(t):t;r?this.processNestedData(o,e,i,s):this.updateSetting(o,e,i,n,a)},updateSetting:function(t,e,i,s,n){this.$store.dispatch("UpdateSettings",{group:e,key:i,input:s,value:t,type:n}),this.$store.dispatch("UpdateState",{group:e,key:i,input:s,value:t})}}},rt=(i("y7KD"),Object(m.a)(at,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"input-container"},["keyword"===t.setting.type?i("div",{staticClass:"keyword-container"},[i("el-form-item",{class:t.labelClass,style:"margin-left:"+t.margin+"px;margin-bottom:0",attrs:{"label-width":t.customLabelWidth,"data-search":t.setting.key||t.setting.group}},[i("span",{attrs:{slot:"label"},slot:"label"},[t._v("\n "+t._s(t.setting.label)+"\n "),t.canBeDeleted&&t.isDesktop?i("el-tooltip",{attrs:{content:t.$t("settings.removeFromDB"),placement:"bottom-end"}},[i("el-button",{staticClass:"delete-setting-button",attrs:{icon:"el-icon-delete",circle:"",size:"mini"},on:{click:t.removeSetting}})],1):t._e()],1)]),t._v(" "),t._l(t.setting.children,function(e){return i("el-form-item",{key:e.key},[i("inputs",{attrs:{"setting-group":t.settingGroup,"setting-parent":t.settingParent.concat([e]),setting:e,data:t.data[t.setting.key],"custom-label-width":t.isMobile?"100px":"120px","label-class":"keyword"===e.type?"center-label":"",margin:t.isDesktop?t.margin+15:t.margin+8,nested:!0}})],1)})],2):t._e(),t._v(" "),"keyword"!==t.setting.type?i("el-form-item",{class:t.labelClass,style:t.isDesktop?"":"margin-left:"+t.margin+"px",attrs:{"label-width":t.customLabelWidth}},[i("span",{attrs:{slot:"label"},slot:"label"},[t._v("\n "+t._s(t.setting.label)+"\n "),t.canBeDeleted&&(t.isDesktop||t.isMobile)?i("el-tooltip",{attrs:{content:t.$t("settings.removeFromDB"),placement:"bottom-end"}},[i("el-button",{staticClass:"delete-setting-button",attrs:{icon:"el-icon-delete",circle:"",size:"mini"},on:{click:t.removeSetting}})],1):t._e()],1),t._v(" "),i("div",{staticClass:"input-row"},["string"===t.setting.type||t.setting.type.includes("string")&&t.setting.type.includes("atom")?i("el-input",{staticClass:"input",attrs:{value:t.inputValue,placeholder:t.setting.suggestions?t.setting.suggestions[0]:null,"data-search":t.setting.key||t.setting.group},on:{input:function(e){return t.update(e,t.settingGroup.group,t.settingGroup.key,t.settingParent,t.setting.key,t.setting.type,t.nested)}}}):t._e(),t._v(" "),"boolean"!==t.setting.type||[":registrations_open",":invites_enabled"].includes(t.setting.key)?t._e():i("el-switch",{staticClass:"switch-input",attrs:{value:t.inputValue,"data-search":t.setting.key||t.setting.group},on:{change:function(e){return t.update(e,t.settingGroup.group,t.settingGroup.key,t.settingParent,t.setting.key,t.setting.type,t.nested)}}}),t._v(" "),"integer"===t.setting.type?i("el-input-number",{attrs:{value:null===t.inputValue?void 0:t.inputValue,placeholder:t.setting.suggestions?t.setting.suggestions[0].toString():null,min:0,size:t.isDesktop?"large":"medium","data-search":t.setting.key||t.setting.group},on:{change:function(e){return t.update(e,t.settingGroup.group,t.settingGroup.key,t.settingParent,t.setting.key,t.setting.type,t.nested)}}}):t._e(),t._v(" "),t.renderSingleSelect(t.setting.type)?i("el-select",{staticClass:"input",attrs:{value:!1===t.inputValue?"false":t.inputValue,"data-search":t.setting.key||t.setting.group,clearable:""},on:{change:function(e){return t.update(e,t.settingGroup.group,t.settingGroup.key,t.settingParent,t.setting.key,t.setting.type,t.nested)}}},t._l(t.setting.suggestions,function(t,e){return i("el-option",{key:e,attrs:{value:t}})}),1):t._e(),t._v(" "),t.renderMultipleSelect(t.setting.type)?i("el-select",{staticClass:"input",attrs:{value:t.inputValue,"data-search":t.setting.key||t.setting.group,multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.update(e,t.settingGroup.group,t.settingGroup.key,t.settingParent,t.setting.key,t.setting.type,t.nested)}}},t._l(t.setting.suggestions,function(t,e){return i("el-option",{key:e,attrs:{value:t}})}),1):t._e(),t._v(" "),":ip"===t.setting.key?i("el-input",{staticClass:"input",attrs:{value:t.inputValue,"data-search":t.setting.key||t.setting.group,placeholder:"xxx.xxx.xxx.xx"},on:{input:function(e){return t.update(e,t.settingGroup.group,t.settingGroup.key,t.settingParent,t.setting.key,t.setting.type,t.nested)}}}):t._e(),t._v(" "),"atom"===t.setting.type?i("el-input",{staticClass:"input",attrs:{value:t.inputValue,placeholder:t.setting.suggestions[0]?t.setting.suggestions[0].substr(1):"","data-search":t.setting.key||t.setting.group},on:{input:function(e){return t.update(e,t.settingGroup.group,t.settingGroup.key,t.settingParent,t.setting.key,t.setting.type,t.nested)}}},[i("template",{slot:"prepend"},[t._v(":")])],2):t._e(),t._v(" "),":auto_linker"===t.settingGroup.group?i("auto-linker-input",{attrs:{data:t.data,"setting-group":t.settingGroup,setting:t.setting}}):t._e(),t._v(" "),":crontab"===t.setting.key?i("crontab-input",{attrs:{data:t.data[t.setting.key],"setting-group":t.settingGroup,setting:t.setting}}):t._e(),t._v(" "),t.editableKeyword(t.setting.key,t.setting.type)?i("editable-keyword-input",{attrs:{data:t.keywordData,"setting-group":t.settingGroup,setting:t.setting}}):t._e(),t._v(" "),":icons"===t.setting.key?i("icons-input",{attrs:{data:t.iconsData,"setting-group":t.settingGroup,setting:t.setting}}):t._e(),t._v(" "),":mascots"===t.setting.key?i("mascots-input",{attrs:{data:t.keywordData,"setting-group":t.settingGroup,setting:t.setting}}):t._e(),t._v(" "),":proxy_url"===t.setting.key?i("proxy-url-input",{attrs:{data:t.data[t.setting.key],"setting-group":t.settingGroup,setting:t.setting,parents:t.settingParent}}):t._e(),t._v(" "),":prune"===t.setting.key?i("prune-input",{attrs:{data:t.data[t.setting.key],"setting-group":t.settingGroup,setting:t.setting}}):t._e(),t._v(" "),":rate_limit"===t.settingGroup.key?i("rate-limit-input",{attrs:{data:t.data,"setting-group":t.settingGroup,setting:t.setting}}):t._e(),t._v(" "),[":registrations_open",":invites_enabled"].includes(t.setting.key)?i("reg-invites-input",{attrs:{data:t.data,"setting-group":t.settingGroup,setting:t.setting}}):t._e(),t._v(" "),t.reducedSelects?i("select-input-with-reduced-labels",{attrs:{data:t.data,"setting-group":t.settingGroup,setting:t.setting}}):t._e(),t._v(" "),":backends"===t.setting.key||":args"===t.setting.key?i("specific-multiple-select",{attrs:{data:t.data,"setting-group":t.settingGroup,setting:t.setting}}):t._e(),t._v(" "),t.canBeDeleted&&t.isTablet?i("el-tooltip",{staticClass:"delete-setting-button-container",attrs:{content:t.$t("settings.removeFromDB"),placement:"bottom-end"}},[i("el-button",{staticClass:"delete-setting-button",attrs:{icon:"el-icon-delete",circle:"",size:"mini"},on:{click:t.removeSetting}})],1):t._e()],1),t._v(" "),t.setting.description&&"keyword"!==t.setting.type?i("div",{staticClass:"expl",domProps:{innerHTML:t._s(t.getFormattedDescription(t.setting.description))}}):t._e()]):t._e()],1)},[],!1,null,null,null));rt.options.__file="Inputs.vue";var ot={name:"Setting",components:{Inputs:rt.exports},props:{settingGroup:{type:Object,default:function(){return{}}},data:{type:Object,default:function(){return{}}}},computed:{emailAdapterChildren:function(){var t=this.$store.state.settings.settings[":pleroma"]["Pleroma.Emails.Mailer"][":adapter"];return this.settingGroup.children.filter(function(e){return e.group&&e.group.includes(t)})},isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device},isTablet:function(){return"tablet"===this.$store.state.app.device},loading:function(){return this.$store.state.settings.loading}},methods:{canBeDeleted:function(t){var e=this.settingGroup,i=e.group,s=e.key||t;return it.a.get(this.$store.state.settings.db,[i,s])&&this.$store.state.settings.db[i][s].includes(t)},compound:function(t){var e=t.type,i=t.key;t.children;return"keyword"===e||"map"===e||e.includes("keyword")||":replace"===i},divideSetting:function(t){return[":sslopts",":tlsopts",":adapter",":poll_limits",":queues",":styling",":proxy_opts"].includes(t)},getFormattedDescription:function(t){return nt()(t)},removeSetting:function(){var t=r()(n.a.mark(function t(e){var i=this;return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:this.$confirm(this.$t("settings.removeSettingConfirmation"),{confirmButtonText:this.$t("users.ok"),cancelButtonText:this.$t("users.cancel"),type:"warning"}).then(r()(n.a.mark(function t(){var s;return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return s=i.settingGroup.key?[{group:i.settingGroup.group,key:i.settingGroup.key,delete:!0,subkeys:[e]}]:[{group:i.settingGroup.group,key:e,delete:!0}],t.prev=1,t.next=4,i.$store.dispatch("RemoveSetting",s);case 4:t.next=9;break;case 6:return t.prev=6,t.t0=t.catch(1),t.abrupt("return");case 9:i.$message({type:"success",message:o.a.t("settings.successfullyRemoved")});case 10:case"end":return t.stop()}},t,null,[[1,6]])}))).catch(function(){i.$message({type:"info",message:i.$t("users.canceled")})});case 1:case"end":return t.stop()}},t,this)}));return function(e){return t.apply(this,arguments)}}(),updateSetting:function(t,e,i){this.$store.dispatch("UpdateSettings",{tab:e,data:g()({},i,t)})}}},ut=(i("pnah"),Object(m.a)(ot,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",[t.settingGroup.description?i("el-form-item",{staticClass:"description-container",attrs:{"data-search":t.settingGroup.key||t.settingGroup.group}},[i("span",{staticClass:"description",domProps:{innerHTML:t._s(t.getFormattedDescription(t.settingGroup.description))}})]):t._e(),t._v(" "),"Pleroma.Emails.Mailer"===t.settingGroup.key?i("div",[t._l(t.settingGroup.children.filter(function(t){return!t.group}),function(e){return i("div",{key:e.key},[i("inputs",{attrs:{"setting-group":t.settingGroup,setting:e,data:t.data}})],1)}),t._v(" "),t._l(t.emailAdapterChildren,function(e){return i("div",{key:e.key},[i("inputs",{attrs:{"setting-group":t.settingGroup,setting:e,data:t.data}})],1)})],2):i("div",t._l(t.settingGroup.children,function(e){return i("div",{key:e.key},[t.compound(e)?t._e():i("div",[i("inputs",{attrs:{"setting-group":t.settingGroup,setting:e,data:t.data,nested:!1}})],1),t._v(" "),t.compound(e)?i("div",[t.divideSetting(e.key)?i("el-divider",{staticClass:"divider"}):t._e(),t._v(" "),e.children?i("div",[i("div",{staticClass:"input-container"},[i("el-form-item",{staticClass:"grouped-settings-header",attrs:{"data-search":e.key||e.group}},[i("span",{attrs:{slot:"label"},slot:"label"},[t.isDesktop&&t.canBeDeleted(e.key)?i("el-tooltip",{attrs:{content:t.$t("settings.removeFromDB"),placement:"bottom-end"}},[i("el-button",{staticStyle:{"margin-left":"5px"},attrs:{icon:"el-icon-delete",circle:"",size:"mini"},on:{click:function(i){return t.removeSetting(e.key)}}})],1):t._e()],1),t._v(" "),i("span",{staticClass:"label-font"},[t._v(t._s(e.label))]),t._v(" "),t.canBeDeleted(e.key)&&(t.isMobile||t.isTablet)?i("el-tooltip",{attrs:{content:t.$t("settings.removeFromDB"),placement:"bottom-end"}},[i("el-button",{staticClass:"settings-delete-button",attrs:{icon:"el-icon-delete",circle:"",size:"mini"},on:{click:function(i){return t.removeSetting(e.key)}}})],1):t._e()],1)],1),t._v(" "),t._l(e.children,function(s){return i("div",{key:s.key},[i("inputs",{attrs:{"setting-group":t.settingGroup,"setting-parent":[e,s],setting:s,data:t.data[e.key],nested:!0}})],1)})],2):i("div",[i("inputs",{attrs:{"setting-group":t.settingGroup,setting:e,data:t.data[e.key],nested:!0}})],1),t._v(" "),i("el-divider",{staticClass:"divider"})],1):t._e()])}),0)],1)},[],!1,null,null,null));ut.options.__file="Setting.vue";var lt=ut.exports,ct={name:"ActivityPub",components:{Setting:lt},computed:c()({},Object(p.b)(["settings"]),{activitypub:function(){return this.settings.description.find(function(t){return":activitypub"===t.key})},activitypubData:function(){return it.a.get(this.settings.settings,[":pleroma",":activitypub"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.$store.state.settings.loading},user:function(){return this.settings.description.find(function(t){return":user"===t.key})},userData:function(){return it.a.get(this.settings.settings,[":pleroma",":user"])||{}}}),methods:{onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},pt=(i("qEST"),Object(m.a)(ct,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{ref:"activitypubData",attrs:{model:t.activitypubData,"label-position":t.labelPosition,"label-width":t.labelWidth,"data-search":":activitypub"}},[i("setting",{attrs:{"setting-group":t.activitypub,data:t.activitypubData}})],1),t._v(" "),t.activitypub?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"userData",attrs:{model:t.userData,"label-position":t.labelPosition,"label-width":t.labelWidth,"data-search":":user"}},[i("setting",{attrs:{"setting-group":t.user,data:t.userData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));pt.options.__file="ActivityPub.vue";var dt=pt.exports,gt={name:"Authentication",components:{Setting:lt},computed:c()({},Object(p.b)(["settings"]),{auth:function(){return this.settings.description.find(function(t){return":auth"===t.key})},authData:function(){return it.a.get(this.settings.settings,[":pleroma",":auth"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},ldap:function(){return this.settings.description.find(function(t){return":ldap"===t.key})},ldapData:function(){return it.a.get(this.settings.settings,[":pleroma",":ldap"])||{}},loading:function(){return this.settings.loading},oauth2:function(){return this.settings.description.find(function(t){return":oauth2"===t.key})},oauth2Data:function(){return it.a.get(this.settings.settings,[":pleroma",":oauth2"])||{}},pleromaAuthenticator:function(){return this.settings.description.find(function(t){return t.children&&"Pleroma.Web.Auth.Authenticator"===t.children[0].key})},pleromaAuthenticatorData:function(){return it.a.get(this.settings.settings,[":pleroma","Pleroma.Web.Auth.Authenticator"])||{}}}),methods:{onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},ht=(i("4b9x"),Object(m.a)(gt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{ref:"pleromaAuthenticatorData",attrs:{model:t.pleromaAuthenticatorData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.pleromaAuthenticator,data:t.pleromaAuthenticatorData}})],1),t._v(" "),t.pleromaAuthenticator?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"authData",attrs:{model:t.authData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.auth,data:t.authData}})],1),t._v(" "),t.auth?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"ldapData",attrs:{model:t.ldapData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.ldap,data:t.ldapData}})],1),t._v(" "),t.oauth2?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"oauth2",attrs:{model:t.oauth2Data,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.oauth2,data:t.oauth2Data}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));ht.options.__file="Authentication.vue";var mt=ht.exports,ft={name:"AutoLinker",components:{Setting:lt},computed:c()({},Object(p.b)(["settings"]),{autoLinker:function(){return this.settings.description.find(function(t){return":opts"===t.key})},autoLinkerData:function(){return it.a.get(this.settings.settings,[":auto_linker",":opts"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading}}),methods:{onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},bt=(i("cyzs"),Object(m.a)(ft,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{ref:"autoLinker",attrs:{model:t.autoLinkerData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.autoLinker,data:t.autoLinkerData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));bt.options.__file="AutoLinker.vue";var vt=bt.exports,yt={name:"Captcha",components:{Setting:lt},computed:c()({},Object(p.b)(["settings"]),{captcha:function(){return this.settings.description.find(function(t){return"Pleroma.Captcha"===t.key})},captchaData:function(){return it.a.get(this.settings.settings,[":pleroma","Pleroma.Captcha"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},kocaptcha:function(){return this.settings.description.find(function(t){return"Pleroma.Captcha.Kocaptcha"===t.key})},kocaptchaData:function(){return it.a.get(this.settings.settings,[":pleroma","Pleroma.Captcha.Kocaptcha"])||{}},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading}}),methods:{onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},_t=(i("2q6O"),Object(m.a)(yt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{ref:"captchaData",attrs:{model:t.captchaData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.captcha,data:t.captchaData}})],1),t._v(" "),t.captcha?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"kocaptchaData",attrs:{model:t.kocaptchaData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.kocaptcha,data:t.kocaptchaData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));_t.options.__file="Captcha.vue";var kt=_t.exports,St={name:"Esshd",components:{Setting:lt},computed:c()({},Object(p.b)(["settings"]),{esshd:function(){return this.settings.description.find(function(t){return":esshd"===t.group})},esshdData:function(){return it.a.get(this.settings.settings,[":esshd"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading}}),methods:{toggleEsshd:function(t){this.$store.dispatch("ToggleEsshd",t)},updateSetting:function(t,e,i){this.$store.dispatch("UpdateSettings",{tab:e,data:g()({},i,t)})},onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},Dt=(i("FCne"),Object(m.a)(St,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{ref:"esshdData",attrs:{model:t.esshdData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.esshd,data:t.esshdData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));Dt.options.__file="Esshd.vue";var wt=Dt.exports,xt={name:"Frontend",components:{Setting:lt},computed:c()({},Object(p.b)(["settings"]),{assets:function(){return this.settings.description.find(function(t){return":assets"===t.key})},assetsData:function(){return it.a.get(this.settings.settings,[":pleroma",":assets"])||{}},chat:function(){return this.settings.description.find(function(t){return":chat"===t.key})},chatData:function(){return it.a.get(this.settings.settings,[":pleroma",":chat"])||{}},emoji:function(){return this.settings.description.find(function(t){return":emoji"===t.key})},emojiData:function(){return it.a.get(this.settings.settings,[":pleroma",":emoji"])||{}},frontend:function(){return this.settings.description.find(function(t){return":frontend_configurations"===t.key})},frontendData:function(){return it.a.get(this.settings.settings,[":pleroma",":frontend_configurations"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading},markup:function(){return this.settings.description.find(function(t){return":markup"===t.key})},markupData:function(){return it.a.get(this.settings.settings,[":pleroma",":markup"])||{}},staticFe:function(){return this.settings.description.find(function(t){return":static_fe"===t.key})},staticFeData:function(){return it.a.get(this.settings.settings,[":pleroma",":static_fe"])||{}}}),methods:{onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},Ct=(i("hVXW"),Object(m.a)(xt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{ref:"frontendData",attrs:{model:t.frontendData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.frontend,data:t.frontendData}})],1),t._v(" "),i("el-form",{ref:"staticFeData",attrs:{model:t.staticFeData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.staticFe,data:t.staticFeData}})],1),t._v(" "),t.staticFe?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"assetsData",attrs:{model:t.assetsData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[t.assets?i("el-form-item",{staticClass:"grouped-settings-header"},[i("span",{staticClass:"label-font label-with-margin"},[t._v(t._s(t.$t("settings.assets")))])]):t._e(),t._v(" "),i("setting",{attrs:{"setting-group":t.assets,data:t.assetsData}})],1),t._v(" "),t.assets?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"emojiData",attrs:{model:t.emojiData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[t.emoji?i("el-form-item",{staticClass:"grouped-settings-header",attrs:{"data-search":":emoji"}},[i("span",{staticClass:"label-font label-with-margin"},[t._v(t._s(t.$t("settings.emoji")))])]):t._e(),t._v(" "),i("setting",{attrs:{"setting-group":t.emoji,data:t.emojiData}})],1),t._v(" "),t.emoji?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"chatData",attrs:{model:t.chatData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.chat,data:t.chatData}})],1),t._v(" "),t.chat?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"markupData",attrs:{model:t.markupData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[t.markup?i("el-form-item",{staticClass:"grouped-settings-header",attrs:{"data-search":":markup"}},[i("span",{staticClass:"label-font label-with-margin"},[t._v(t._s(t.$t("settings.markup")))])]):t._e(),t._v(" "),i("setting",{attrs:{"setting-group":t.markup,data:t.markupData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));Ct.options.__file="Frontend.vue";var $t=Ct.exports,Pt={name:"Gopher",components:{Setting:lt},computed:c()({},Object(p.b)(["settings"]),{gopher:function(){return this.settings.description.find(function(t){return":gopher"===t.key})},gopherData:function(){return it.a.get(this.settings.settings,[":pleroma",":gopher"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading}}),methods:{onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},Ot=(i("w5cJ"),Object(m.a)(Pt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[t.loading?t._e():i("el-form",{ref:"gopher",attrs:{model:t.gopherData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.gopher,data:t.gopherData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));Ot.options.__file="Gopher.vue";var Ut=Ot.exports,jt={name:"HTTP",components:{Setting:lt},computed:c()({},Object(p.b)(["settings"]),{corsPlug:function(){return this.settings.description.find(function(t){return":cors_plug"===t.group})},corsPlugData:function(){return it.a.get(this.settings.settings,[":cors_plug"])||{}},http:function(){return this.settings.description.find(function(t){return":http"===t.key})},httpData:function(){return it.a.get(this.settings.settings,[":pleroma",":http"])||{}},httpSecurity:function(){return this.settings.description.find(function(t){return":http_security"===t.key})},httpSecurityData:function(){return it.a.get(this.settings.settings,[":pleroma",":http_security"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading},webCacheTtl:function(){return this.settings.description.find(function(t){return":web_cache_ttl"===t.key})},webCacheTtlData:function(){return it.a.get(this.settings.settings,[":pleroma",":web_cache_ttl"])||{}}}),methods:{onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},Mt=(i("KFE3"),Object(m.a)(jt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{ref:"httpData",attrs:{model:t.httpData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.http,data:t.httpData}})],1),t._v(" "),i("el-form",{ref:"corsPlugData",attrs:{model:t.corsPlugData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[t.corsPlug?i("el-form-item",{staticClass:"grouped-settings-header",attrs:{"data-search":":cors_plug"}},[i("span",{staticClass:"label-font label-with-margin"},[t._v(t._s(t.$t("settings.corsPlug")))])]):t._e(),t._v(" "),i("setting",{attrs:{"setting-group":t.corsPlug,data:t.corsPlugData}})],1),t._v(" "),t.corsPlug?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"httpSignatures",attrs:{model:t.httpSignaturesData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.httpSignatures,data:t.httpSignaturesData}})],1),t._v(" "),t.httpSignatures?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"httpSecurityData",attrs:{model:t.httpSecurityData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.httpSecurity,data:t.httpSecurityData}})],1),t._v(" "),t.httpSecurity?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"webCacheTtl",attrs:{model:t.webCacheTtlData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.webCacheTtl,data:t.webCacheTtlData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));Mt.options.__file="Http.vue";var Tt=Mt.exports,At={name:"Instance",components:{Setting:lt},computed:c()({},Object(p.b)(["settings"]),{adminToken:function(){return this.settings.description.find(function(t){return t.children&&":admin_token"===t.children[0].key})},adminTokenData:function(){return it.a.get(this.settings.settings,[":pleroma",":admin_token"])||{}},feed:function(){return this.settings.description.find(function(t){return":feed"===t.key})},feedData:function(){return it.a.get(this.settings.settings,[":pleroma",":feed"])||{}},instance:function(){return this.settings.description.find(function(t){return":instance"===t.key})},instanceData:function(){return it.a.get(this.settings.settings,[":pleroma",":instance"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading},manifest:function(){return this.settings.description.find(function(t){return":manifest"===t.key})},manifestData:function(){return it.a.get(this.settings.settings,[":pleroma",":manifest"])||{}},pleromaUser:function(){return this.settings.description.find(function(t){return"Pleroma.User"===t.key})},pleromaUserData:function(){return it.a.get(this.settings.settings,[":pleroma","Pleroma.User"])||{}},scheduledActivity:function(){return this.$store.state.settings.description.find(function(t){return"Pleroma.ScheduledActivity"===t.key})},scheduledActivityData:function(){return it.a.get(this.settings.settings,[":pleroma","Pleroma.ScheduledActivity"])||{}},streamer:function(){return this.$store.state.settings.description.find(function(t){return":streamer"===t.key})},streamerData:function(){return it.a.get(this.settings.settings,[":pleroma",":streamer"])||{}},uriSchemes:function(){return this.settings.description.find(function(t){return":uri_schemes"===t.key})},uriSchemesData:function(){return it.a.get(this.settings.settings,[":pleroma",":uri_schemes"])||{}}}),methods:{onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},Gt=(i("e0P1"),Object(m.a)(At,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{ref:"instanceData",attrs:{model:t.instanceData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.instance,data:t.instanceData}})],1),t._v(" "),t.instance?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"adminToken",attrs:{model:t.adminTokenData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.adminToken,data:t.adminTokenData}})],1),t._v(" "),t.adminToken?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"scheduledActivity",attrs:{model:t.scheduledActivityData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.scheduledActivity,data:t.scheduledActivityData}})],1),t._v(" "),t.scheduledActivity?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"manifest",attrs:{model:t.manifestData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.manifest,data:t.manifestData}})],1),t._v(" "),t.manifest?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"pleromaUser",attrs:{model:t.pleromaUserData,"label-position":t.labelPosition,"label-width":t.labelWidth,"data-search":"Pleroma.User"}},[i("setting",{attrs:{"setting-group":t.pleromaUser,data:t.pleromaUserData}})],1),t._v(" "),t.pleromaUser?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"uriSchemes",attrs:{model:t.uriSchemesData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.uriSchemes,data:t.uriSchemesData}})],1),t._v(" "),t.uriSchemes?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"feed",attrs:{model:t.feedData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.feed,data:t.feedData}})],1),t._v(" "),i("el-form",{ref:"streamer",attrs:{model:t.streamerData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.streamer,data:t.streamerData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));Gt.options.__file="Instance.vue";var Wt=Gt.exports,Lt={name:"JobQueue",components:{Setting:lt},computed:c()({},Object(p.b)(["settings"]),{activityExpiration:function(){return this.settings.description.find(function(t){return"Pleroma.ActivityExpiration"===t.key})},activityExpirationData:function(){return it.a.get(this.settings.settings,[":pleroma","Pleroma.ActivityExpiration"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading},obanQueues:function(){return this.settings.description.find(function(t){return"Oban"===t.key})},obanQueuesData:function(){return it.a.get(this.settings.settings,[":pleroma","Oban"])||{}},workers:function(){return this.settings.description.find(function(t){return":workers"===t.key})},workersData:function(){return it.a.get(this.settings.settings,[":pleroma",":workers"])||{}}}),methods:{onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},It=(i("lNpP"),Object(m.a)(Lt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{ref:"obanQueuesData",attrs:{model:t.obanQueuesData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.obanQueues,data:t.obanQueuesData}})],1),t._v(" "),i("el-form",{ref:"workersData",attrs:{model:t.workersData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.workers,data:t.workersData}})],1),t._v(" "),i("el-form",{ref:"activityExpiration",attrs:{model:t.activityExpirationData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.activityExpiration,data:t.activityExpirationData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));It.options.__file="JobQueue.vue";var Et=It.exports,Rt={name:"Logger",components:{Setting:lt},computed:c()({},Object(p.b)(["settings"]),{console:function(){return this.settings.description.find(function(t){return":console"===t.key})},consoleData:function(){return it.a.get(this.settings.settings,[":logger",":console"])||{}},exsyslogger:function(){return this.settings.description.find(function(t){return":ex_syslogger"===t.key})},exsysloggerData:function(){return it.a.get(this.settings.settings,[":logger",":ex_syslogger"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading},logger:function(){return this.settings.description.find(function(t){return":logger"===t.group})},loggerData:function(){return it.a.get(this.settings.settings,[":logger",":backends"])||{}},quack:function(){return this.settings.description.find(function(t){return":quack"===t.group})},quackData:function(){return it.a.get(this.settings.settings,[":quack"])||{}}}),methods:{onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},Ft=(i("mADP"),Object(m.a)(Rt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{ref:"loggerData",attrs:{model:t.loggerData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.logger,data:t.loggerData}})],1),t._v(" "),t.logger?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"consoleData",attrs:{model:t.consoleData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.console,data:t.consoleData}})],1),t._v(" "),t.console?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"exsysloggerData",attrs:{model:t.exsysloggerData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.exsyslogger,data:t.exsysloggerData}})],1),t._v(" "),t.exsyslogger?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"quackData",attrs:{model:t.quackData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.quack,data:t.quackData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));Ft.options.__file="Logger.vue";var Kt=Ft.exports,Vt={name:"Mailer",components:{Setting:lt},computed:c()({},Object(p.b)(["settings"]),{emailNotifications:function(){return this.settings.description.find(function(t){return":email_notifications"===t.key})},emailNotificationsData:function(){return it.a.get(this.settings.settings,[":pleroma",":email_notifications"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.$store.state.settings.loading},mailer:function(){return this.settings.description.find(function(t){return"Pleroma.Emails.Mailer"===t.key})},mailerData:function(){return it.a.get(this.settings.settings,[":pleroma","Pleroma.Emails.Mailer"])||{}},newUsersDigestEmail:function(){return this.settings.description.find(function(t){return"Pleroma.Emails.NewUsersDigestEmail"===t.key})},newUsersDigestEmailData:function(){return it.a.get(this.settings.settings,[":pleroma","Pleroma.Emails.NewUsersDigestEmail"])||{}},swoosh:function(){return this.settings.description.find(function(t){return":swoosh"===t.group})},swooshData:function(){return it.a.get(this.settings.settings,[":swoosh"])||{}},userEmail:function(){return this.settings.description.find(function(t){return"Pleroma.Emails.UserEmail"===t.key})},userEmailData:function(){return it.a.get(this.settings.settings,[":pleroma","Pleroma.Emails.UserEmail"])||{}}}),methods:{onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},zt=(i("PygS"),Object(m.a)(Vt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{ref:"mailer",attrs:{model:t.mailerData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.mailer,data:t.mailerData}})],1),t._v(" "),t.mailer?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"swoosh",attrs:{model:t.swooshData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.swoosh,data:t.swooshData}})],1),t._v(" "),t.swoosh?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"emailNotifications",attrs:{model:t.emailNotificationsData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.emailNotifications,data:t.emailNotificationsData}})],1),t._v(" "),i("el-form",{ref:"userEmail",attrs:{model:t.userEmailData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.userEmail,data:t.userEmailData}})],1),t._v(" "),i("el-form",{ref:"newUsersDigestEmail",attrs:{model:t.newUsersDigestEmailData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.newUsersDigestEmail,data:t.newUsersDigestEmailData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));zt.options.__file="Mailer.vue";var Nt=zt.exports,qt={name:"MediaProxy",components:{Setting:lt},computed:c()({},Object(p.b)(["settings"]),{isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading},mediaProxy:function(){return this.settings.description.find(function(t){return":media_proxy"===t.key})},mediaProxyData:function(){return it.a.get(this.settings.settings,[":pleroma",":media_proxy"])||{}}}),methods:{onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},Bt=(i("UdS4"),Object(m.a)(qt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[t.loading?t._e():i("el-form",{ref:"mediaProxy",attrs:{model:t.mediaProxyData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.mediaProxy,data:t.mediaProxyData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));Bt.options.__file="MediaProxy.vue";var Ht=Bt.exports,Qt={name:"Metadata",components:{Setting:lt},computed:c()({},Object(p.b)(["settings"]),{isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading},metadata:function(){return this.settings.description.find(function(t){return"Pleroma.Web.Metadata"===t.key})},metadataData:function(){return it.a.get(this.settings.settings,[":pleroma","Pleroma.Web.Metadata"])||{}},richMedia:function(){return this.settings.description.find(function(t){return":rich_media"===t.key})},richMediaData:function(){return it.a.get(this.settings.settings,[":pleroma",":rich_media"])||{}}}),methods:{onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},Jt=(i("apN7"),Object(m.a)(Qt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{ref:"metadata",attrs:{model:t.metadataData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.metadata,data:t.metadataData}})],1),t._v(" "),t.metadata?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"richMedia",attrs:{model:t.richMediaData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.richMedia,data:t.richMediaData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));Jt.options.__file="Metadata.vue";var Yt=Jt.exports,Xt={name:"MRF",components:{Setting:lt},computed:c()({},Object(p.b)(["settings"]),{isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading},modules:function(){return this.settings.description.find(function(t){return":modules"===t.key})},modulesData:function(){return it.a.get(this.settings.settings,[":pleroma",":modules"])||{}},mrfSimple:function(){return this.settings.description.find(function(t){return":mrf_simple"===t.key})},mrfSimpleData:function(){return it.a.get(this.settings.settings,[":pleroma",":mrf_simple"])||{}},mrfRejectnonpublic:function(){return this.settings.description.find(function(t){return":mrf_rejectnonpublic"===t.key})},mrfRejectnonpublicData:function(){return it.a.get(this.settings.settings,[":pleroma",":mrf_rejectnonpublic"])||{}},mrfHellthread:function(){return this.settings.description.find(function(t){return":mrf_hellthread"===t.key})},mrfHellthreadData:function(){return it.a.get(this.settings.settings,[":pleroma",":mrf_hellthread"])||{}},mrfKeyword:function(){return this.settings.description.find(function(t){return":mrf_keyword"===t.key})},mrfKeywordData:function(){return it.a.get(this.settings.settings,[":pleroma",":mrf_keyword"])||{}},mrfObjectAge:function(){return this.settings.description.find(function(t){return":mrf_object_age"===t.key})},mrfObjectAgeData:function(){return it.a.get(this.settings.settings,[":pleroma",":mrf_object_age"])||{}},mrfSubchain:function(){return this.settings.description.find(function(t){return":mrf_subchain"===t.key})},mrfSubchainData:function(){return it.a.get(this.settings.settings,[":pleroma",":mrf_subchain"])||{}},mrfMention:function(){return this.settings.description.find(function(t){return":mrf_mention"===t.key})},mrfMentionData:function(){return it.a.get(this.settings.settings,[":pleroma",":mrf_mention"])||{}},mrfNormalizeMarkup:function(){return this.settings.description.find(function(t){return":mrf_normalize_markup"===t.key})},mrfNormalizeMarkupData:function(){return it.a.get(this.settings.settings,[":pleroma",":mrf_normalize_markup"])||{}},mrfVocabulary:function(){return this.settings.description.find(function(t){return":mrf_vocabulary"===t.key})},mrfVocabularyData:function(){return it.a.get(this.settings.settings,[":pleroma",":mrf_vocabulary"])||{}}}),methods:{onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},Zt=(i("h9z7"),Object(m.a)(Xt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{ref:"mrfSimple",attrs:{model:t.mrfSimpleData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.mrfSimple,data:t.mrfSimpleData}})],1),t._v(" "),t.mrfSimple?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"mrfRejectnonpublic",attrs:{model:t.mrfRejectnonpublicData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.mrfRejectnonpublic,data:t.mrfRejectnonpublicData}})],1),t._v(" "),t.mrfRejectnonpublic?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"mrfHellthread",attrs:{model:t.mrfHellthreadData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.mrfHellthread,data:t.mrfHellthreadData}})],1),t._v(" "),t.mrfHellthread?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"mrfKeyword",attrs:{model:t.mrfKeywordData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.mrfKeyword,data:t.mrfKeywordData}})],1),t._v(" "),i("el-form",{ref:"mrfSubchain",attrs:{model:t.mrfSubchainData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.mrfSubchain,data:t.mrfSubchainData}})],1),t._v(" "),i("el-form",{ref:"mrfMention",attrs:{model:t.mrfMentionData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.mrfMention,data:t.mrfMentionData}})],1),t._v(" "),t.mrfMention?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"mrfNormalizeMarkup",attrs:{model:t.mrfNormalizeMarkupData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.mrfNormalizeMarkup,data:t.mrfNormalizeMarkupData}})],1),t._v(" "),t.mrfNormalizeMarkup?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"mrfVocabulary",attrs:{model:t.mrfVocabularyData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.mrfVocabulary,data:t.mrfVocabularyData}})],1),t._v(" "),t.mrfVocabulary?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"mrfObjectAge",attrs:{model:t.mrfObjectAgeData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.mrfObjectAge,data:t.mrfObjectAgeData}})],1),t._v(" "),t.mrfObjectAge?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"modules",attrs:{model:t.modulesData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.modules,data:t.modulesData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));Zt.options.__file="MRF.vue";var te=Zt.exports,ee={name:"Other",components:{Setting:lt},computed:c()({},Object(p.b)(["settings"]),{isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading},mimeTypes:function(){return this.settings.description.find(function(t){return":mime"===t.group})},mimeTypesData:function(){return it.a.get(this.settings.settings,[":mime"])||{}},remoteIp:function(){return this.settings.description.find(function(t){return"Pleroma.Plugs.RemoteIp"===t.key})},remoteIpData:function(){return it.a.get(this.settings.settings,[":pleroma","Pleroma.Plugs.RemoteIp"])||{}}}),methods:{onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},ie=(i("gFOO"),Object(m.a)(ee,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{ref:"mimeTypes",attrs:{model:t.mimeTypesData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.mimeTypes,data:t.mimeTypesData}})],1),t._v(" "),i("el-form",{ref:"remoteIp",attrs:{model:t.remoteIpData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.remoteIp,data:t.remoteIpData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));ie.options.__file="Other.vue";var se=ie.exports,ne={name:"RateLimiters",components:{Setting:lt},computed:c()({},Object(p.b)(["settings"]),{rateLimiters:function(){return this.settings.description.find(function(t){return":rate_limit"===t.key})},rateLimitersData:function(){return it.a.get(this.settings.settings,[":pleroma",":rate_limit"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.$store.state.settings.loading}}),methods:{onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},ae=(i("WvM+"),Object(m.a)(ne,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[t.loading?t._e():i("el-form",{ref:"rateLimiters",attrs:{model:t.rateLimitersData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.rateLimiters,data:t.rateLimitersData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));ae.options.__file="RateLimiters.vue";var re=ae.exports,oe={name:"Relays",data:function(){return{newRelay:""}},computed:{relays:function(){return this.$store.state.relays.fetchedRelays},relaysTable:function(){return this.relays.map(function(t){return{instance:t}})},loading:function(){return this.$store.state.relays.loading}},mounted:function(){this.$store.dispatch("FetchRelays")},methods:{followRelay:function(){this.$store.dispatch("AddRelay",this.newRelay)},deleteRelay:function(t){this.$store.dispatch("DeleteRelay",t)}}},ue=(i("J7+w"),Object(m.a)(oe,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"relays-container"},[i("div",{staticClass:"follow-relay-container"},[i("el-input",{staticClass:"follow-relay",attrs:{placeholder:t.$t("settings.followRelay")},nativeOn:{keyup:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.followRelay(e)}},model:{value:t.newRelay,callback:function(e){t.newRelay=e},expression:"newRelay"}}),t._v(" "),i("el-button",{attrs:{type:"primary"},nativeOn:{click:function(e){return t.followRelay(e)}}},[t._v(t._s(t.$t("settings.follow")))])],1),t._v(" "),i("el-table",{attrs:{data:t.relaysTable}},[i("el-table-column",{attrs:{label:t.$t("settings.instanceUrl"),prop:"instance"}}),t._v(" "),i("el-table-column",{attrs:{fixed:"right",width:"120"},scopedSlots:t._u([{key:"default",fn:function(e){return[i("el-button",{attrs:{type:"text",size:"small"},nativeOn:{click:function(i){return t.deleteRelay(e.row.instance)}}},[t._v("\n "+t._s(t.$t("table.delete"))+"\n ")])]}}],null,!1,2132974932)})],1)],1)},[],!1,null,null,null));ue.options.__file="Relays.vue";var le=ue.exports,ce={name:"Upload",components:{Setting:lt},computed:c()({},Object(p.b)(["settings"]),{isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading},showUploadersS3:function(){return"Pleroma.Uploaders.S3"===it.a.get(this.settings.settings,[":pleroma","Pleroma.Upload",":uploader"])},showUploadersLocal:function(){return"Pleroma.Uploaders.Local"===it.a.get(this.settings.settings,[":pleroma","Pleroma.Upload",":uploader"])},upload:function(){return this.settings.description.find(function(t){return"Pleroma.Upload"===t.key})},uploadData:function(){return it.a.get(this.settings.settings,[":pleroma","Pleroma.Upload"])||{}},uploadersLocal:function(){return this.settings.description.find(function(t){return"Pleroma.Uploaders.Local"===t.key})},uploadersLocalData:function(){return it.a.get(this.settings.settings,[":pleroma","Pleroma.Uploaders.Local"])||{}},uploadersS3:function(){return this.settings.description.find(function(t){return"Pleroma.Uploaders.S3"===t.key})},uploadersS3Data:function(){return it.a.get(this.settings.settings,[":pleroma","Pleroma.Uploaders.S3"])||{}},uploadFilterMogrify:function(){return this.settings.description.find(function(t){return"Pleroma.Upload.Filter.Mogrify"===t.key})},uploadFilterMogrifyData:function(){return it.a.get(this.settings.settings,[":pleroma","Pleroma.Upload.Filter.Mogrify"])||{}},uploadAnonymizeFilename:function(){return this.settings.description.find(function(t){return"Pleroma.Upload.Filter.AnonymizeFilename"===t.key})},uploadAnonymizeFilenameData:function(){return it.a.get(this.settings.settings,[":pleroma","Pleroma.Upload.Filter.AnonymizeFilename"])||{}}}),methods:{onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},pe=(i("DPt0"),Object(m.a)(ce,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{ref:"uploadData",attrs:{model:t.uploadData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.upload,data:t.uploadData}})],1),t._v(" "),t.showUploadersLocal?i("el-form",{ref:"uploadersLocal",attrs:{model:t.uploadersLocalData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[t.uploadersLocal?i("el-form-item",{staticClass:"grouped-settings-header"},[i("span",{staticClass:"label-font label-with-margin"},[t._v("Pleroma.Uploaders.Local")])]):t._e(),t._v(" "),i("setting",{attrs:{"setting-group":t.uploadersLocal,data:t.uploadersLocalData}}),t._v(" "),t.uploadersLocal?i("el-divider",{staticClass:"divider thick-line"}):t._e()],1):t._e(),t._v(" "),t.showUploadersS3?i("el-form",{ref:"uploadersS3",attrs:{model:t.uploadersS3Data,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.uploadersS3,data:t.uploadersS3Data}}),t._v(" "),t.uploadersS3?i("el-divider",{staticClass:"divider thick-line"}):t._e()],1):t._e(),t._v(" "),i("el-form",{ref:"uploadFilterMogrify",attrs:{model:t.uploadFilterMogrifyData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.uploadFilterMogrify,data:t.uploadFilterMogrifyData}})],1),t._v(" "),t.uploadFilterMogrify?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{ref:"uploadAnonymizeFilename",attrs:{model:t.uploadAnonymizeFilenameData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.uploadAnonymizeFilename,data:t.uploadAnonymizeFilenameData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));pe.options.__file="Upload.vue";var de=pe.exports,ge={name:"WebPush",components:{Setting:lt},computed:c()({},Object(p.b)(["settings"]),{isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading},vapidDetails:function(){return this.settings.description.find(function(t){return":vapid_details"===t.key})},vapidDetailsData:function(){return it.a.get(this.settings.settings,[":web_push_encryption",":vapid_details"])||{}}}),methods:{onSubmit:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},he=(i("+qaP"),Object(m.a)(ge,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[t.loading?t._e():i("el-form",{ref:"vapidDetailsData",attrs:{model:t.vapidDetailsData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.vapidDetails,data:t.vapidDetailsData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));he.options.__file="WebPush.vue";var me=he.exports,fe={components:{ActivityPub:dt,Authentication:mt,AutoLinker:vt,Captcha:kt,Esshd:wt,Frontend:$t,Gopher:Ut,Http:Tt,Instance:Wt,JobQueue:Et,Logger:Kt,Mailer:Nt,MediaProxy:Ht,Metadata:Yt,Mrf:te,Other:se,RateLimiters:re,Relays:le,RebootButton:i("rIUS").a,Upload:de,WebPush:me},data:function(){return{options:[{value:"activityPub",label:o.a.t("settings.activityPub")},{value:"auth",label:o.a.t("settings.auth")},{value:"autoLinker",label:o.a.t("settings.autoLinker")},{value:"esshd",label:o.a.t("settings.esshd")},{value:"captcha",label:o.a.t("settings.captcha")},{value:"frontend",label:o.a.t("settings.frontend")},{value:"gopher",label:o.a.t("settings.gopher")},{value:"http",label:o.a.t("settings.http")},{value:"instance",label:o.a.t("settings.instance")},{value:"jobQueue",label:o.a.t("settings.jobQueue")},{value:"logger",label:o.a.t("settings.logger")},{value:"mailer",label:o.a.t("settings.mailer")},{value:"mediaProxy",label:o.a.t("settings.mediaProxy")},{value:"metadata",label:o.a.t("settings.metadata")},{value:"mrf",label:o.a.t("settings.mrf")},{value:"rateLimiters",label:o.a.t("settings.rateLimiters")},{value:"relays",label:o.a.t("settings.relays")},{value:"webPush",label:o.a.t("settings.webPush")},{value:"upload",label:o.a.t("settings.upload")},{value:"other",label:o.a.t("settings.other")}],searchQuery:""}},computed:{activeTab:{get:function(){return this.$store.state.settings.activeTab},set:function(t){this.$store.dispatch("SetActiveTab",t)}},configDisabled:function(){return this.$store.state.settings.configDisabled},isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"header-sidebar-opened":"header-sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},rebootIsSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"reboot-sidebar-opened":"reboot-sidebar-closed"},searchData:function(){return this.$store.state.settings.searchData},tabs:function(){return u}},mounted:function(){this.$store.dispatch("GetNodeInfo"),this.$store.dispatch("NeedReboot"),this.$store.dispatch("FetchSettings")},methods:{handleSearchSelect:function(){var t=r()(n.a.mark(function t(e){var i,s,a=this;return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return i=Object.keys(this.tabs).find(function(t){return a.tabs[t].settings.includes(":pleroma"===e.group?e.key:e.group)}),t.next=3,this.$store.dispatch("SetActiveTab",i);case 3:(s=document.querySelector('[data-search="'.concat(e.key,'"]')))&&s.scrollIntoView({block:"start",behavior:"smooth"});case 5:case"end":return t.stop()}},t,this)}));return function(e){return t.apply(this,arguments)}}(),querySearch:function(t,e){e(this.searchData.filter(function(e){return e.search.find(function(e){return e.includes(t.toLowerCase())})}).map(function(t){return":opts"===t.groupKey?{value:"".concat(t.label," in Auto Linker"),group:t.groupKey,key:t.key}:{value:"".concat(t.label," in ").concat(t.groupLabel),group:t.groupKey,key:t.key}}))},settingsCantBeChanged:function(t){var e=this;return 0===t.filter(function(t){return[":esshd",":cors_plug",":quack",":logger",":swoosh",":mime"].includes(t)?-1!==e.$store.state.settings.description.findIndex(function(e){return e.group===t}):"Pleroma.Web.Auth.Authenticator"===t||":admin_token"===t?-1!==e.$store.state.settings.description.findIndex(function(e){return e.children[0].key===t}):"relays"===t?[t]:-1!==e.$store.state.settings.description.findIndex(function(e){return e.key===t})}).length}}},be=(i("SFMd"),Object(m.a)(fe,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"settings-container",class:t.rebootIsSidebarOpen},[i("div",{staticClass:"reboot-button-container"},[i("reboot-button")],1),t._v(" "),t.isDesktop?i("div",[i("div",{staticClass:"settings-header-container",class:t.isSidebarOpen},[i("h1",{staticClass:"settings-header"},[t._v(t._s(t.$t("settings.settings")))]),t._v(" "),i("div",{staticClass:"docs-search-container"},[i("el-link",{attrs:{underline:!1,href:"https://docs-develop.pleroma.social/backend/administration/CLI_tasks/config/",target:"_blank"}},[i("el-button",{staticClass:"settings-docs-button"},[i("span",[i("i",{staticClass:"el-icon-document"}),t._v("\n "+t._s(t.$t("settings.seeDocs"))+"\n ")])])],1),t._v(" "),i("el-autocomplete",{staticClass:"settings-search-input",attrs:{"fetch-suggestions":t.querySearch,"trigger-on-focus":!1,clearable:"",placeholder:"Search","prefix-icon":"el-icon-search"},on:{select:t.handleSearchSelect},model:{value:t.searchQuery,callback:function(e){t.searchQuery=e},expression:"searchQuery"}})],1)]),t._v(" "),i("el-tabs",{attrs:{"tab-position":"left"},model:{value:t.activeTab,callback:function(e){t.activeTab=e},expression:"activeTab"}},t._l(t.tabs,function(e,s){return i("el-tab-pane",{key:s,attrs:{label:t.$t(e.label),disabled:t.configDisabled||t.settingsCantBeChanged(e.settings),name:s,lazy:""}},[i(s,{tag:"component"})],1)}),1)],1):t._e(),t._v(" "),t.isMobile||t.isTablet?i("div",[i("div",{staticClass:"settings-header-container",class:t.isSidebarOpen},[i("h1",{staticClass:"settings-header"},[t._v(t._s(t.$t("settings.settings")))])]),t._v(" "),i("div",{staticClass:"nav-container"},[i("el-select",{staticClass:"settings-menu",attrs:{placeholder:"Select"},model:{value:t.activeTab,callback:function(e){t.activeTab=e},expression:"activeTab"}},t._l(t.options,function(e){return i("el-option",{key:e.value,attrs:{label:e.label,value:e.value,disabled:t.configDisabled}})}),1),t._v(" "),i("el-link",{attrs:{underline:!1,href:"https://docs-develop.pleroma.social/backend/administration/CLI_tasks/config/",target:"_blank"}},[i("el-button",{staticClass:"settings-docs-button"},[i("span",[i("i",{staticClass:"el-icon-document"}),t._v("\n "+t._s(t.$t("settings.seeDocs"))+"\n ")])])],1)],1),t._v(" "),i("div",{staticClass:"settings-search-input-container"}),t._v(" "),"activityPub"===t.activeTab?i("activity-pub"):t._e(),t._v(" "),"auth"===t.activeTab?i("authentication"):t._e(),t._v(" "),"autoLinker"===t.activeTab?i("auto-linker"):t._e(),t._v(" "),"esshd"===t.activeTab?i("esshd"):t._e(),t._v(" "),"captcha"===t.activeTab?i("captcha"):t._e(),t._v(" "),"frontend"===t.activeTab?i("frontend"):t._e(),t._v(" "),"gopher"===t.activeTab?i("gopher"):t._e(),t._v(" "),"http"===t.activeTab?i("http"):t._e(),t._v(" "),"instance"===t.activeTab?i("instance"):t._e(),t._v(" "),"jobQueue"===t.activeTab?i("job-queue"):t._e(),t._v(" "),"logger"===t.activeTab?i("logger"):t._e(),t._v(" "),"mailer"===t.activeTab?i("mailer"):t._e(),t._v(" "),"mediaProxy"===t.activeTab?i("media-proxy"):t._e(),t._v(" "),"metadata"===t.activeTab?i("metadata"):t._e(),t._v(" "),"mrf"===t.activeTab?i("mrf"):t._e(),t._v(" "),"rateLimiters"===t.activeTab?i("rate-limiters"):t._e(),t._v(" "),"relays"===t.activeTab?i("relays"):t._e(),t._v(" "),"webPush"===t.activeTab?i("web-push"):t._e(),t._v(" "),"upload"===t.activeTab?i("upload"):t._e(),t._v(" "),"other"===t.activeTab?i("other"):t._e()],1):t._e()])},[],!1,null,"2b61d370",null));be.options.__file="index.vue";e.default=be.exports},apN7:function(t,e,i){"use strict";var s=i("9p49");i.n(s).a},cyzs:function(t,e,i){"use strict";var s=i("Px65");i.n(s).a},e0P1:function(t,e,i){"use strict";var s=i("TudB");i.n(s).a},fyIw:function(t,e,i){},gFOO:function(t,e,i){"use strict";var s=i("jqM2");i.n(s).a},h9z7:function(t,e,i){"use strict";var s=i("TOIk");i.n(s).a},hVXW:function(t,e,i){"use strict";var s=i("uswN");i.n(s).a},irif:function(t,e,i){"use strict";var s=i("UtFC");i.n(s).a},jqM2:function(t,e,i){},lNpP:function(t,e,i){"use strict";var s=i("UbP/");i.n(s).a},ld6V:function(t,e,i){},mADP:function(t,e,i){"use strict";var s=i("qLeA");i.n(s).a},mGnP:function(t,e,i){"use strict";var s=i("smg2");i.n(s).a},mSK5:function(t,e,i){},mstB:function(t,e,i){"use strict";var s=i("pd4h");i.n(s).a},nKzF:function(t,e,i){"use strict";var s=i("77pt");i.n(s).a},"ncj/":function(t,e,i){},pd4h:function(t,e,i){},pnah:function(t,e,i){"use strict";var s=i("JqY8");i.n(s).a},qEST:function(t,e,i){"use strict";var s=i("4NUT");i.n(s).a},qLeA:function(t,e,i){},rIUS:function(t,e,i){"use strict";var s=i("o0o1"),n=i.n(s),a=i("yXPU"),r=i.n(a),o=i("mSNy"),u={name:"RebootButton",computed:{needReboot:function(){return this.$store.state.app.needReboot}},methods:{restartApp:function(){var t=r()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("RestartApplication");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.restartSuccess")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},l=i("KHd+"),c=Object(l.a)(u,function(){var t=this.$createElement,e=this._self._c||t;return this.needReboot?e("el-tooltip",{attrs:{content:this.$t("settings.restartApp"),placement:"bottom-end"}},[e("el-button",{staticClass:"reboot-button",attrs:{type:"warning"},on:{click:this.restartApp}},[e("span",[e("i",{staticClass:"el-icon-refresh"}),this._v("\n "+this._s(this.$t("settings.instanceReboot"))+"\n ")])])],1):this._e()},[],!1,null,null,null);c.options.__file="index.vue";e.a=c.exports},rdar:function(t,e,i){"use strict";var s=i("NiUD");i.n(s).a},smg2:function(t,e,i){},uswN:function(t,e,i){},w5cJ:function(t,e,i){"use strict";var s=i("PYLh");i.n(s).a},wgcy:function(t,e,i){},x6RV:function(t,e,i){},y7KD:function(t,e,i){"use strict";var s=i("YKHE");i.n(s).a}}]); -//# sourceMappingURL=chunk-7e30.ec42e302.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-7e30.ec42e302.js.map b/priv/static/adminfe/static/js/chunk-7e30.ec42e302.js.map deleted file mode 100644 index bc47158ea..000000000 --- a/priv/static/adminfe/static/js/chunk-7e30.ec42e302.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./src/views/settings/components/inputComponents/MascotsInput.vue?c65c","webpack:///./src/views/settings/components/WebPush.vue?38e3","webpack:///./src/views/settings/components/Captcha.vue?029c","webpack:///./src/views/settings/components/inputComponents/SelectInputWithReducedLabels.vue?ac92","webpack:///./src/views/settings/components/Authentication.vue?4503","webpack:///./src/views/settings/components/inputComponents/RegInvitesInput.vue?b469","webpack:///./src/views/settings/components/Upload.vue?33cd","webpack:///./src/views/settings/components/inputComponents/PruneInput.vue?cf11","webpack:///./src/views/settings/components/Esshd.vue?eedf","webpack:///./src/views/settings/components/Relays.vue?3141","webpack:///./src/views/settings/components/Http.vue?56b1","webpack:///./src/views/settings/components/inputComponents/AutoLinkerInput.vue?7da2","webpack:///./src/views/settings/components/Mailer.vue?cb92","webpack:///./src/views/settings/index.vue?7ecf","webpack:///./src/views/settings/components/MediaProxy.vue?e0fb","webpack:///./src/views/settings/components/inputComponents/SpecificMultipleSelect.vue?6f06","webpack:///./src/views/settings/components/RateLimiters.vue?0aac","webpack:///./src/views/settings/index.vue?8677","webpack:///./src/views/settings/components/tabs.js","webpack:///./src/views/settings/components/inputComponents/AutoLinkerInput.vue?f6c5","webpack:///src/views/settings/components/inputComponents/AutoLinkerInput.vue","webpack:///./src/views/settings/components/inputComponents/AutoLinkerInput.vue","webpack:///./src/views/settings/components/inputComponents/AutoLinkerInput.vue?2dcf","webpack:///./src/views/settings/components/inputComponents/EditableKeywordInput.vue?859c","webpack:///src/views/settings/components/inputComponents/EditableKeywordInput.vue","webpack:///./src/views/settings/components/inputComponents/EditableKeywordInput.vue","webpack:///./src/views/settings/components/inputComponents/EditableKeywordInput.vue?9a9b","webpack:///./src/views/settings/components/inputComponents/CrontabInput.vue?fcd8","webpack:///src/views/settings/components/inputComponents/CrontabInput.vue","webpack:///./src/views/settings/components/inputComponents/CrontabInput.vue","webpack:///./src/views/settings/components/inputComponents/CrontabInput.vue?3c41","webpack:///./src/views/settings/components/inputComponents/IconsInput.vue?bdb0","webpack:///src/views/settings/components/inputComponents/IconsInput.vue","webpack:///./src/views/settings/components/inputComponents/IconsInput.vue","webpack:///./src/views/settings/components/inputComponents/IconsInput.vue?a391","webpack:///./src/views/settings/components/inputComponents/MascotsInput.vue?9cfe","webpack:///src/views/settings/components/inputComponents/MascotsInput.vue","webpack:///./src/views/settings/components/inputComponents/MascotsInput.vue","webpack:///./src/views/settings/components/inputComponents/MascotsInput.vue?df45","webpack:///./src/views/settings/components/inputComponents/ProxyUrlInput.vue?4183","webpack:///src/views/settings/components/inputComponents/ProxyUrlInput.vue","webpack:///./src/views/settings/components/inputComponents/ProxyUrlInput.vue","webpack:///./src/views/settings/components/inputComponents/ProxyUrlInput.vue?b4d0","webpack:///./src/views/settings/components/inputComponents/PruneInput.vue?663f","webpack:///src/views/settings/components/inputComponents/PruneInput.vue","webpack:///./src/views/settings/components/inputComponents/PruneInput.vue","webpack:///./src/views/settings/components/inputComponents/PruneInput.vue?cf76","webpack:///./src/views/settings/components/inputComponents/RateLimitInput.vue?2905","webpack:///src/views/settings/components/inputComponents/RateLimitInput.vue","webpack:///./src/views/settings/components/inputComponents/RateLimitInput.vue","webpack:///./src/views/settings/components/inputComponents/RateLimitInput.vue?29fc","webpack:///./src/views/settings/components/inputComponents/RegInvitesInput.vue?4de6","webpack:///src/views/settings/components/inputComponents/RegInvitesInput.vue","webpack:///./src/views/settings/components/inputComponents/RegInvitesInput.vue","webpack:///./src/views/settings/components/inputComponents/RegInvitesInput.vue?ce9b","webpack:///./src/views/settings/components/inputComponents/SelectInputWithReducedLabels.vue?b3f6","webpack:///src/views/settings/components/inputComponents/SelectInputWithReducedLabels.vue","webpack:///./src/views/settings/components/inputComponents/SelectInputWithReducedLabels.vue","webpack:///./src/views/settings/components/inputComponents/SelectInputWithReducedLabels.vue?dd55","webpack:///./src/views/settings/components/inputComponents/SpecificMultipleSelect.vue?8500","webpack:///src/views/settings/components/inputComponents/SpecificMultipleSelect.vue","webpack:///./src/views/settings/components/inputComponents/SpecificMultipleSelect.vue","webpack:///./src/views/settings/components/inputComponents/SpecificMultipleSelect.vue?2907","webpack:///./src/views/settings/components/Inputs.vue?5b3f","webpack:///src/views/settings/components/Inputs.vue","webpack:///./src/views/settings/components/Inputs.vue","webpack:///./src/views/settings/components/Inputs.vue?7bc9","webpack:///./src/views/settings/components/Setting.vue?39a1","webpack:///src/views/settings/components/Setting.vue","webpack:///./src/views/settings/components/Setting.vue","webpack:///./src/views/settings/components/Setting.vue?4f2a","webpack:///./src/views/settings/components/ActivityPub.vue?9ad8","webpack:///src/views/settings/components/ActivityPub.vue","webpack:///./src/views/settings/components/ActivityPub.vue","webpack:///./src/views/settings/components/ActivityPub.vue?041e","webpack:///./src/views/settings/components/Authentication.vue?1922","webpack:///src/views/settings/components/Authentication.vue","webpack:///./src/views/settings/components/Authentication.vue","webpack:///./src/views/settings/components/Authentication.vue?09e5","webpack:///./src/views/settings/components/AutoLinker.vue?fed2","webpack:///src/views/settings/components/AutoLinker.vue","webpack:///./src/views/settings/components/AutoLinker.vue","webpack:///./src/views/settings/components/AutoLinker.vue?7069","webpack:///./src/views/settings/components/Captcha.vue?b5df","webpack:///src/views/settings/components/Captcha.vue","webpack:///./src/views/settings/components/Captcha.vue","webpack:///./src/views/settings/components/Captcha.vue?1a32","webpack:///./src/views/settings/components/Esshd.vue?b0ed","webpack:///src/views/settings/components/Esshd.vue","webpack:///./src/views/settings/components/Esshd.vue","webpack:///./src/views/settings/components/Esshd.vue?2ce0","webpack:///./src/views/settings/components/Frontend.vue?1622","webpack:///src/views/settings/components/Frontend.vue","webpack:///./src/views/settings/components/Frontend.vue","webpack:///./src/views/settings/components/Frontend.vue?2701","webpack:///./src/views/settings/components/Gopher.vue?cb09","webpack:///src/views/settings/components/Gopher.vue","webpack:///./src/views/settings/components/Gopher.vue","webpack:///./src/views/settings/components/Gopher.vue?290c","webpack:///./src/views/settings/components/Http.vue?0ecb","webpack:///src/views/settings/components/Http.vue","webpack:///./src/views/settings/components/Http.vue","webpack:///./src/views/settings/components/Http.vue?d5d9","webpack:///./src/views/settings/components/Instance.vue?ea1e","webpack:///src/views/settings/components/Instance.vue","webpack:///./src/views/settings/components/Instance.vue","webpack:///./src/views/settings/components/Instance.vue?20a1","webpack:///./src/views/settings/components/JobQueue.vue?e650","webpack:///src/views/settings/components/JobQueue.vue","webpack:///./src/views/settings/components/JobQueue.vue","webpack:///./src/views/settings/components/JobQueue.vue?884a","webpack:///./src/views/settings/components/Logger.vue?aa5f","webpack:///src/views/settings/components/Logger.vue","webpack:///./src/views/settings/components/Logger.vue","webpack:///./src/views/settings/components/Logger.vue?bb1c","webpack:///./src/views/settings/components/Mailer.vue?48d6","webpack:///src/views/settings/components/Mailer.vue","webpack:///./src/views/settings/components/Mailer.vue","webpack:///./src/views/settings/components/Mailer.vue?81f1","webpack:///./src/views/settings/components/MediaProxy.vue?9571","webpack:///src/views/settings/components/MediaProxy.vue","webpack:///./src/views/settings/components/MediaProxy.vue","webpack:///./src/views/settings/components/MediaProxy.vue?b888","webpack:///./src/views/settings/components/Metadata.vue?7f4f","webpack:///src/views/settings/components/Metadata.vue","webpack:///./src/views/settings/components/Metadata.vue","webpack:///./src/views/settings/components/Metadata.vue?9aed","webpack:///./src/views/settings/components/MRF.vue?274b","webpack:///src/views/settings/components/MRF.vue","webpack:///./src/views/settings/components/MRF.vue","webpack:///./src/views/settings/components/MRF.vue?82b9","webpack:///./src/views/settings/components/Other.vue?7bf4","webpack:///src/views/settings/components/Other.vue","webpack:///./src/views/settings/components/Other.vue","webpack:///./src/views/settings/components/Other.vue?2b05","webpack:///./src/views/settings/components/RateLimiters.vue?15d2","webpack:///src/views/settings/components/RateLimiters.vue","webpack:///./src/views/settings/components/RateLimiters.vue","webpack:///./src/views/settings/components/RateLimiters.vue?10f8","webpack:///./src/views/settings/components/Relays.vue?72ba","webpack:///src/views/settings/components/Relays.vue","webpack:///./src/views/settings/components/Relays.vue","webpack:///./src/views/settings/components/Relays.vue?c6f8","webpack:///./src/views/settings/components/Upload.vue?304d","webpack:///src/views/settings/components/Upload.vue","webpack:///./src/views/settings/components/Upload.vue","webpack:///./src/views/settings/components/Upload.vue?cc32","webpack:///./src/views/settings/components/WebPush.vue?5451","webpack:///src/views/settings/components/WebPush.vue","webpack:///./src/views/settings/components/WebPush.vue","webpack:///./src/views/settings/components/WebPush.vue?7f8e","webpack:///./src/views/settings/index.vue?3c3a","webpack:///src/views/settings/index.vue","webpack:///./src/views/settings/index.vue","webpack:///./src/views/settings/components/Metadata.vue?0952","webpack:///./src/views/settings/components/AutoLinker.vue?42b3","webpack:///./src/views/settings/components/Instance.vue?2668","webpack:///./src/views/settings/components/Other.vue?8e53","webpack:///./src/views/settings/components/MRF.vue?8c92","webpack:///./src/views/settings/components/Frontend.vue?f18f","webpack:///./src/views/settings/components/inputComponents/RateLimitInput.vue?f3ab","webpack:///./src/views/settings/components/JobQueue.vue?d797","webpack:///./src/views/settings/components/Logger.vue?a62e","webpack:///./src/views/settings/components/inputComponents/ProxyUrlInput.vue?e239","webpack:///./src/views/settings/components/inputComponents/CrontabInput.vue?b209","webpack:///./src/views/settings/components/inputComponents/EditableKeywordInput.vue?5f84","webpack:///./src/views/settings/components/Setting.vue?ebdb","webpack:///./src/views/settings/components/ActivityPub.vue?48d9","webpack:///./src/components/RebootButton/index.vue?8db4","webpack:///./src/components/RebootButton/index.vue?2f45","webpack:///src/components/RebootButton/index.vue","webpack:///./src/components/RebootButton/index.vue","webpack:///./src/views/settings/components/inputComponents/IconsInput.vue?5a78","webpack:///./src/views/settings/components/Gopher.vue?5fd9","webpack:///./src/views/settings/components/Inputs.vue?e1ce"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_MascotsInput_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_WebPush_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Captcha_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_SelectInputWithReducedLabels_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Authentication_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_RegInvitesInput_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Upload_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_PruneInput_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Esshd_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Relays_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Http_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_AutoLinkerInput_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Mailer_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_2b61d370_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_MediaProxy_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_SpecificMultipleSelect_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_RateLimiters_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","tabs","activity-pub","label","settings","authentication","auto-linker","esshd","captcha","frontend","gopher","http","instance","job-queue","logger","mailer","media-proxy","metadata","mrf","rate-limiters","relays","web-push","upload","other","inputComponents_AutoLinkerInputvue_type_script_lang_js_","name","props","data","type","Object","Array","default","setting","settingGroup","methods","autoLinkerBooleanValue","key","value","this","autoLinkerIntegerValue","autoLinkerStringValue","processTwoTypeValue","input","updateSetting","group","$store","dispatch","component","componentNormalizer","_vm","_h","$createElement","_c","_self","attrs","data-search","on","change","$event","_v","_e","options","__file","AutoLinkerInput","inputComponents_EditableKeywordInputvue_type_script_lang_js_","computed","editableKeywordWithInteger","isArray","includes","isDesktop","state","app","device","addRowToEditableKeyword","updatedValue","concat","toConsumableArray_default","","id","generateID","deleteEditableKeywordRow","element","deletedId","getId","filteredValues","filter","values","Math","random","toString","getKey","keys","getValue","parseEditableKeyword","inputType","_this","updatedId","map","index","defineProperty_default","objectSpread_default","updatedSettings","wrapUpdatedSettings","reduce","acc","EditableKeywordInput_component","staticClass","_l","placeholder","size","icon","circle","click","min","multiple","filterable","allow-create","EditableKeywordInput","inputComponents_CrontabInputvue_type_script_lang_js_","isMobile","isTablet","labelWidth","workers","suggestions","worker","getSuggestion","find","suggestion","update","currentValue","updatedValueWithType","CrontabInput_component","label-width","label-position","CrontabInput","inputComponents_IconsInputvue_type_script_lang_js_","addIconToIcons","addValueToIcons","i","deleteIcondRow","parseIcons","_ref","IconsInput_component","ref","IconsInput","inputComponents_MascotsInputvue_type_script_lang_js_","addRowToMascots",":url",":mime_type","deleteMascotsRow","mascot","getName","getUrl","_Object$values","slicedToArray_default","getMimeType","_Object$values3","parseMascots","mascotsWithoutIDs","_Object$values$","mascotValue","objectWithoutProperties_default","MascotsInput_component","MascotsInput","inputComponents_ProxyUrlInputvue_type_script_lang_js_","parents","required","proxyUrlData","length","socks5","host","port","updateProxyUrl","assembledData","_processNested","normalizers","reverse","valueForState","valueForUpdatedSettings","ProxyUrlInput_component","ProxyUrlInput","inputComponents_PruneInputvue_type_script_lang_js_","prune","get","set","updateRadioInput","updateIntInput","updatedSetting","processedValue","PruneInput_component","model","callback","$$v","expression","PruneInput","inputComponents_RateLimitInputvue_type_script_lang_js_","rateLimitAllUsers","rateLimitAuthUsers","rateLimitUnauthUsers","parseRateLimiter","typeOfInput","typeOfLimit","valueToSend","toggleLimits","tuple","RateLimitInput_component","RateLimitInput","inputComponents_RegInvitesInputvue_type_script_lang_js_","registrationsOpen","invitesEnabled","$confirm","confirmButtonText","cancelButtonText","then","RegInvitesInput_component","RegInvitesInput","inputComponents_SelectInputWithReducedLabelsvue_type_script_lang_js_","inputValue","prefixes",":rewrite_policy","Pleroma.Web.Auth.Authenticator",":method",":adapter",":providers",":parsers",":ttl_setters",":scrub_policy",":federation_publisher_modules",":uploader",":filters","split","renderMultipleSelect","rewritePolicyOptions","SelectInputWithReducedLabels_component","option","clearable","SelectInputWithReducedLabels","inputComponents_SpecificMultipleSelectvue_type_script_lang_js_","SpecificMultipleSelect_component","SpecificMultipleSelect","components_Inputsvue_type_script_lang_js_","components","customLabelWidth","String","labelClass","margin","Number","nested","Boolean","settingParent","canBeDeleted","_this$settingGroup","lodash_default","a","db","iconsData","substr","keywordData","reducedSelects","editableKeyword","findIndex","el","getFormattedDescription","desc","marked_default","processNestedData","parentKey","removeSetting","_removeSetting","asyncToGenerator_default","regenerator_default","mark","_callee2","wrap","_context2","prev","next","$t","_callee","config","_context","delete","subkeys","t0","abrupt","$message","message","lang","t","stop","catch","apply","arguments","renderSingleSelect","Inputs_component","class","style","slot","_s","content","placement","subSetting","setting-group","setting-parent","custom-label-width","label-class","undefined","description","domProps","innerHTML","components_Settingvue_type_script_lang_js_","Inputs","emailAdapterChildren","adapter","children","child","loading","settingKey","existingKey","compound","divideSetting","_x","tab","Setting_component","staticStyle","margin-left","Setting","components_ActivityPubvue_type_script_lang_js_","vuex_esm","activitypub","activitypubData","isSidebarOpen","sidebar","opened","labelPosition","user","userData","onSubmit","_onSubmit","ActivityPub_component","ActivityPub","components_Authenticationvue_type_script_lang_js_","auth","authData","ldap","ldapData","oauth2","oauth2Data","pleromaAuthenticator","pleromaAuthenticatorData","Authentication_component","Authentication","components_AutoLinkervue_type_script_lang_js_","autoLinker","autoLinkerData","AutoLinker_component","AutoLinker","components_Captchavue_type_script_lang_js_","captchaData","kocaptcha","kocaptchaData","Captcha_component","Captcha","components_Esshdvue_type_script_lang_js_","esshdData","toggleEsshd","Esshd_component","Esshd","components_Frontendvue_type_script_lang_js_","assets","assetsData","chat","chatData","emoji","emojiData","frontendData","markup","markupData","staticFe","staticFeData","Frontend_component","Frontend","components_Gophervue_type_script_lang_js_","gopherData","Gopher_component","Gopher","components_Httpvue_type_script_lang_js_","corsPlug","corsPlugData","httpData","httpSecurity","httpSecurityData","webCacheTtl","webCacheTtlData","Http_component","httpSignaturesData","httpSignatures","Http","components_Instancevue_type_script_lang_js_","adminToken","adminTokenData","feed","feedData","instanceData","manifest","manifestData","pleromaUser","pleromaUserData","scheduledActivity","scheduledActivityData","streamer","streamerData","uriSchemes","uriSchemesData","Instance_component","Instance","components_JobQueuevue_type_script_lang_js_","activityExpiration","activityExpirationData","obanQueues","obanQueuesData","workersData","JobQueue_component","JobQueue","components_Loggervue_type_script_lang_js_","console","consoleData","exsyslogger","exsysloggerData","loggerData","quack","quackData","Logger_component","Logger","components_Mailervue_type_script_lang_js_","emailNotifications","emailNotificationsData","mailerData","newUsersDigestEmail","newUsersDigestEmailData","swoosh","swooshData","userEmail","userEmailData","Mailer_component","Mailer","components_MediaProxyvue_type_script_lang_js_","mediaProxy","mediaProxyData","MediaProxy_component","MediaProxy","components_Metadatavue_type_script_lang_js_","metadataData","richMedia","richMediaData","Metadata_component","Metadata","components_MRFvue_type_script_lang_js_","modules","modulesData","mrfSimple","mrfSimpleData","mrfRejectnonpublic","mrfRejectnonpublicData","mrfHellthread","mrfHellthreadData","mrfKeyword","mrfKeywordData","mrfObjectAge","mrfObjectAgeData","mrfSubchain","mrfSubchainData","mrfMention","mrfMentionData","mrfNormalizeMarkup","mrfNormalizeMarkupData","mrfVocabulary","mrfVocabularyData","MRF_component","MRF","components_Othervue_type_script_lang_js_","mimeTypes","mimeTypesData","remoteIp","remoteIpData","Other_component","Other","components_RateLimitersvue_type_script_lang_js_","rateLimiters","rateLimitersData","RateLimiters_component","RateLimiters","components_Relaysvue_type_script_lang_js_","newRelay","fetchedRelays","relaysTable","relay","mounted","followRelay","deleteRelay","Relays_component","nativeOn","keyup","indexOf","_k","keyCode","prop","fixed","width","scopedSlots","_u","fn","scope","row","Relays","components_Uploadvue_type_script_lang_js_","showUploadersS3","showUploadersLocal","uploadData","uploadersLocal","uploadersLocalData","uploadersS3","uploadersS3Data","uploadFilterMogrify","uploadFilterMogrifyData","uploadAnonymizeFilename","uploadAnonymizeFilenameData","Upload_component","Upload","components_WebPushvue_type_script_lang_js_","vapidDetails","vapidDetailsData","WebPush_component","WebPush","views_settingsvue_type_script_lang_js_","Mrf","RebootButton","searchQuery","activeTab","configDisabled","rebootIsSidebarOpen","searchData","tabs_tabs","handleSearchSelect","_handleSearchSelect","selectedValue","selectedSetting","document","querySelector","scrollIntoView","block","behavior","querySearch","queryString","cb","searchObj","search","toLowerCase","groupKey","groupLabel","settingsCantBeChanged","_this2","settings_component","underline","href","target","fetch-suggestions","trigger-on-focus","prefix-icon","select","tab-position","componentName","disabled","lazy","tag","item","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Metadata_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_AutoLinker_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Instance_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Other_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_MRF_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Frontend_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_RateLimitInput_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_JobQueue_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Logger_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ProxyUrlInput_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_CrontabInput_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_EditableKeywordInput_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Setting_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ActivityPub_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","components_RebootButtonvue_type_script_lang_js_","needReboot","restartApp","_restartApp","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsInput_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Gopher_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Inputs_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__"],"mappings":"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","file":"static/js/chunk-7e30.ec42e302.js","sourcesContent":["import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MascotsInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MascotsInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebPush.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebPush.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Captcha.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Captcha.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectInputWithReducedLabels.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectInputWithReducedLabels.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Authentication.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Authentication.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RegInvitesInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RegInvitesInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Upload.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Upload.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PruneInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PruneInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Esshd.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Esshd.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Relays.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Relays.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Http.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Http.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AutoLinkerInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AutoLinkerInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Mailer.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Mailer.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=2b61d370&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=2b61d370&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MediaProxy.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MediaProxy.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SpecificMultipleSelect.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SpecificMultipleSelect.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RateLimiters.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RateLimiters.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"settings-container\",class:_vm.rebootIsSidebarOpen},[_c('div',{staticClass:\"reboot-button-container\"},[_c('reboot-button')],1),_vm._v(\" \"),(_vm.isDesktop)?_c('div',[_c('div',{staticClass:\"settings-header-container\",class:_vm.isSidebarOpen},[_c('h1',{staticClass:\"settings-header\"},[_vm._v(_vm._s(_vm.$t('settings.settings')))]),_vm._v(\" \"),_c('div',{staticClass:\"docs-search-container\"},[_c('el-link',{attrs:{\"underline\":false,\"href\":\"https://docs-develop.pleroma.social/backend/administration/CLI_tasks/config/\",\"target\":\"_blank\"}},[_c('el-button',{staticClass:\"settings-docs-button\"},[_c('span',[_c('i',{staticClass:\"el-icon-document\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.seeDocs'))+\"\\n \")])])],1),_vm._v(\" \"),_c('el-autocomplete',{staticClass:\"settings-search-input\",attrs:{\"fetch-suggestions\":_vm.querySearch,\"trigger-on-focus\":false,\"clearable\":\"\",\"placeholder\":\"Search\",\"prefix-icon\":\"el-icon-search\"},on:{\"select\":_vm.handleSearchSelect},model:{value:(_vm.searchQuery),callback:function ($$v) {_vm.searchQuery=$$v},expression:\"searchQuery\"}})],1)]),_vm._v(\" \"),_c('el-tabs',{attrs:{\"tab-position\":\"left\"},model:{value:(_vm.activeTab),callback:function ($$v) {_vm.activeTab=$$v},expression:\"activeTab\"}},_vm._l((_vm.tabs),function(value,componentName){return _c('el-tab-pane',{key:componentName,attrs:{\"label\":_vm.$t(value.label),\"disabled\":_vm.configDisabled || _vm.settingsCantBeChanged(value.settings),\"name\":componentName,\"lazy\":\"\"}},[_c(componentName,{tag:\"component\"})],1)}),1)],1):_vm._e(),_vm._v(\" \"),(_vm.isMobile || _vm.isTablet)?_c('div',[_c('div',{staticClass:\"settings-header-container\",class:_vm.isSidebarOpen},[_c('h1',{staticClass:\"settings-header\"},[_vm._v(_vm._s(_vm.$t('settings.settings')))])]),_vm._v(\" \"),_c('div',{staticClass:\"nav-container\"},[_c('el-select',{staticClass:\"settings-menu\",attrs:{\"placeholder\":\"Select\"},model:{value:(_vm.activeTab),callback:function ($$v) {_vm.activeTab=$$v},expression:\"activeTab\"}},_vm._l((_vm.options),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value,\"disabled\":_vm.configDisabled}})}),1),_vm._v(\" \"),_c('el-link',{attrs:{\"underline\":false,\"href\":\"https://docs-develop.pleroma.social/backend/administration/CLI_tasks/config/\",\"target\":\"_blank\"}},[_c('el-button',{staticClass:\"settings-docs-button\"},[_c('span',[_c('i',{staticClass:\"el-icon-document\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.seeDocs'))+\"\\n \")])])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"settings-search-input-container\"}),_vm._v(\" \"),(_vm.activeTab === 'activityPub')?_c('activity-pub'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'auth')?_c('authentication'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'autoLinker')?_c('auto-linker'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'esshd')?_c('esshd'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'captcha')?_c('captcha'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'frontend')?_c('frontend'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'gopher')?_c('gopher'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'http')?_c('http'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'instance')?_c('instance'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'jobQueue')?_c('job-queue'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'logger')?_c('logger'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'mailer')?_c('mailer'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'mediaProxy')?_c('media-proxy'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'metadata')?_c('metadata'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'mrf')?_c('mrf'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'rateLimiters')?_c('rate-limiters'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'relays')?_c('relays'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'webPush')?_c('web-push'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'upload')?_c('upload'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'other')?_c('other'):_vm._e()],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export const tabs = {\n 'activity-pub': {\n label: 'settings.activityPub',\n settings: [':activitypub', ':user']\n },\n 'authentication': {\n label: 'settings.auth',\n settings: [':auth', ':ldap', ':oauth2', 'Pleroma.Web.Auth.Authenticator']\n },\n 'auto-linker': {\n label: 'settings.autoLinker',\n settings: [':opts']\n },\n 'esshd': {\n label: 'settings.esshd',\n settings: [':esshd']\n },\n 'captcha': {\n label: 'settings.captcha',\n settings: ['Pleroma.Captcha', 'Pleroma.Captcha.Kocaptcha']\n },\n 'frontend': {\n label: 'settings.frontend',\n settings: [':assets', ':chat', ':emoji', ':frontend_configurations', ':markup', ':static_fe']\n },\n 'gopher': {\n label: 'settings.gopher',\n settings: [':gopher']\n },\n 'http': {\n label: 'settings.http',\n settings: [':cors_plug', ':http', ':http_security', ':web_cache_ttl']\n },\n 'instance': {\n label: 'settings.instance',\n settings: [':admin_token', ':instance', ':manifest', 'Pleroma.User', 'Pleroma.ScheduledActivity', ':uri_schemes', ':feed', ':streamer']\n },\n 'job-queue': {\n label: 'settings.jobQueue',\n settings: ['Pleroma.ActivityExpiration', 'Oban', ':workers']\n },\n 'logger': {\n label: 'settings.logger',\n settings: [':console', ':ex_syslogger', ':quack', ':logger']\n },\n 'mailer': {\n label: 'settings.mailer',\n settings: [':email_notifications', 'Pleroma.Emails.Mailer', 'Pleroma.Emails.UserEmail', ':swoosh', 'Pleroma.Emails.NewUsersDigestEmail']\n },\n 'media-proxy': {\n label: 'settings.mediaProxy',\n settings: [':media_proxy']\n },\n 'metadata': {\n label: 'settings.metadata',\n settings: ['Pleroma.Web.Metadata', ':rich_media']\n },\n 'mrf': {\n label: 'settings.mrf',\n settings: [':mrf_simple', ':mrf_rejectnonpublic', ':mrf_hellthread', ':mrf_keyword', ':mrf_subchain', ':mrf_mention', ':mrf_normalize_markup', ':mrf_vocabulary', ':mrf_object_age', ':modules']\n },\n 'rate-limiters': {\n label: 'settings.rateLimiters',\n settings: [':rate_limit']\n },\n 'relays': {\n label: 'settings.relays',\n settings: ['relays']\n },\n 'web-push': {\n label: 'settings.webPush',\n settings: [':vapid_details']\n },\n 'upload': {\n label: 'settings.upload',\n settings: ['Pleroma.Upload.Filter.AnonymizeFilename', 'Pleroma.Upload.Filter.Mogrify', 'Pleroma.Uploaders.S3', 'Pleroma.Uploaders.Local', 'Pleroma.Upload']\n },\n 'other': {\n label: 'settings.other',\n settings: [':mime', 'Pleroma.Plugs.RemoteIp']\n }\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AutoLinkerInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AutoLinkerInput.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./AutoLinkerInput.vue?vue&type=template&id=cea0b11a&\"\nimport script from \"./AutoLinkerInput.vue?vue&type=script&lang=js&\"\nexport * from \"./AutoLinkerInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AutoLinkerInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"AutoLinkerInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.setting.key === ':class' || _vm.setting.key === ':rel')?_c('div',{attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_c('el-switch',{attrs:{\"value\":_vm.autoLinkerBooleanValue(_vm.setting.key)},on:{\"change\":function($event){return _vm.processTwoTypeValue($event, _vm.setting.key)}}}),_vm._v(\" \"),(_vm.autoLinkerBooleanValue(_vm.setting.key))?_c('el-input',{attrs:{\"value\":_vm.autoLinkerStringValue(_vm.setting.key)},on:{\"input\":function($event){return _vm.processTwoTypeValue($event, _vm.setting.key)}}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.setting.key === ':truncate')?_c('div',{attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_c('el-switch',{attrs:{\"value\":_vm.autoLinkerBooleanValue(_vm.setting.key)},on:{\"change\":function($event){return _vm.processTwoTypeValue($event, _vm.setting.key)}}}),_vm._v(\" \"),(_vm.autoLinkerBooleanValue(_vm.setting.key))?_c('el-input-number',{attrs:{\"value\":_vm.autoLinkerIntegerValue(_vm.setting.key)},on:{\"input\":function($event){return _vm.processTwoTypeValue($event, _vm.setting.key)}}}):_vm._e()],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditableKeywordInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditableKeywordInput.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./EditableKeywordInput.vue?vue&type=template&id=59edcd40&\"\nimport script from \"./EditableKeywordInput.vue?vue&type=script&lang=js&\"\nexport * from \"./EditableKeywordInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EditableKeywordInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"EditableKeywordInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"editable-keyword-container\"},[(_vm.setting.key === ':replace')?_c('div',{attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_vm._l((_vm.data),function(element){return _c('div',{key:_vm.getId(element),staticClass:\"setting-input\"},[_c('el-input',{staticClass:\"name-input\",attrs:{\"value\":_vm.getKey(element),\"placeholder\":\"pattern\"},on:{\"input\":function($event){return _vm.parseEditableKeyword($event, 'key', element)}}}),_vm._v(\" :\\n \"),_c('el-input',{staticClass:\"value-input\",attrs:{\"value\":_vm.getValue(element),\"placeholder\":\"replacement\"},on:{\"input\":function($event){return _vm.parseEditableKeyword($event, 'value', element)}}}),_vm._v(\" \"),_c('el-button',{staticClass:\"icon-minus-button\",attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.deleteEditableKeywordRow(element)}}})],1)}),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":_vm.addRowToEditableKeyword}})],2):(_vm.editableKeywordWithInteger)?_c('div',{attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_vm._l((_vm.data),function(element){return _c('div',{key:_vm.getId(element),staticClass:\"setting-input\"},[_c('el-input',{staticClass:\"name-input\",attrs:{\"value\":_vm.getKey(element),\"placeholder\":\"key\"},on:{\"input\":function($event){return _vm.parseEditableKeyword($event, 'key', element)}}}),_vm._v(\" :\\n \"),_c('el-input-number',{staticClass:\"value-input\",attrs:{\"value\":_vm.getValue(element),\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.parseEditableKeyword($event, 'value', element)}}}),_vm._v(\" \"),_c('el-button',{staticClass:\"icon-minus-button\",attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.deleteEditableKeywordRow(element)}}})],1)}),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":_vm.addRowToEditableKeyword}})],2):_c('div',{attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_vm._l((_vm.data),function(element){return _c('div',{key:_vm.getId(element),staticClass:\"setting-input\"},[_c('el-input',{staticClass:\"name-input\",attrs:{\"value\":_vm.getKey(element),\"placeholder\":\"key\"},on:{\"input\":function($event){return _vm.parseEditableKeyword($event, 'key', element)}}}),_vm._v(\" :\\n \"),_c('el-select',{staticClass:\"value-input\",attrs:{\"value\":_vm.getValue(element),\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.parseEditableKeyword($event, 'value', element)}}}),_vm._v(\" \"),_c('el-button',{staticClass:\"icon-minus-button\",attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.deleteEditableKeywordRow(element)}}})],1)}),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":_vm.addRowToEditableKeyword}})],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CrontabInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CrontabInput.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./CrontabInput.vue?vue&type=template&id=55e14917&\"\nimport script from \"./CrontabInput.vue?vue&type=script&lang=js&\"\nexport * from \"./CrontabInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CrontabInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"CrontabInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-form',{staticClass:\"crontab\",attrs:{\"label-width\":_vm.labelWidth,\"label-position\":_vm.isMobile ? 'top' : 'right'}},_vm._l((_vm.workers),function(worker){return _c('el-form-item',{key:worker,staticClass:\"crontab-container\",attrs:{\"label\":worker,\"data-search\":_vm.setting.key}},[_c('el-input',{staticClass:\"input setting-input\",attrs:{\"value\":_vm.data[worker],\"placeholder\":_vm.getSuggestion(worker) || null},on:{\"input\":function($event){return _vm.update($event, worker)}}})],1)}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IconsInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IconsInput.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./IconsInput.vue?vue&type=template&id=0e981ae9&\"\nimport script from \"./IconsInput.vue?vue&type=script&lang=js&\"\nexport * from \"./IconsInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./IconsInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"IconsInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"mascot-container\",attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_vm._l((_vm.data),function(icon,index){return _c('div',{key:index,staticClass:\"mascot\"},[_c('div',{staticClass:\"icons-container\"},[_c('div',{staticClass:\"icon-container\"},_vm._l((icon),function(ref){\nvar key = ref.key;\nvar value = ref.value;\nvar id = ref.id;\nreturn _c('div',{key:id,staticClass:\"icon-values-container\"},[_c('el-input',{staticClass:\"icon-key-input\",attrs:{\"value\":key,\"placeholder\":\"key\"},on:{\"input\":function($event){return _vm.parseIcons($event, 'key', index, id)}}}),_vm._v(\" :\\n \"),_c('el-input',{staticClass:\"icon-value-input\",attrs:{\"value\":value,\"placeholder\":\"value\"},on:{\"input\":function($event){return _vm.parseIcons($event, 'value', index, id)}}})],1)}),0),_vm._v(\" \"),_c('el-button',{staticClass:\"icon-minus-button\",attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.deleteIcondRow(index)}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"icons-button-container\"},[_c('el-button',{attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.addValueToIcons(index)}}}),_vm._v(\" \"),_c('span',{staticClass:\"icons-button-desc\"},[_vm._v(\"Add another `key - value` pair to this icon\")])],1),_vm._v(\" \"),_c('el-divider',{staticClass:\"divider\"})],1)}),_vm._v(\" \"),_c('div',{staticClass:\"icons-button-container\"},[_c('el-button',{attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":_vm.addIconToIcons}}),_vm._v(\" \"),_c('span',{staticClass:\"icons-button-desc\"},[_vm._v(\"Add another icon configuration\")])],1)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MascotsInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MascotsInput.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./MascotsInput.vue?vue&type=template&id=0015a0e3&\"\nimport script from \"./MascotsInput.vue?vue&type=script&lang=js&\"\nexport * from \"./MascotsInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MascotsInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"MascotsInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"mascot-container\",attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_vm._l((_vm.data),function(mascot){return _c('div',{key:_vm.getId(mascot),staticClass:\"mascot\"},[_c('el-form-item',{staticClass:\"mascot-form-item\",attrs:{\"label\":\"Name\",\"label-width\":\"85px\"}},[_c('div',{staticClass:\"mascot-name-container\"},[_c('el-input',{staticClass:\"mascot-name-input\",attrs:{\"value\":_vm.getName(mascot),\"placeholder\":\"Name\"},on:{\"input\":function($event){return _vm.parseMascots($event, 'name', mascot)}}}),_vm._v(\" \"),_c('el-button',{staticClass:\"icon-minus-button\",attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.deleteMascotsRow(mascot)}}})],1)]),_vm._v(\" \"),_c('el-form-item',{staticClass:\"mascot-form-item\",attrs:{\"label\":\"URL\",\"label-width\":\"85px\"}},[_c('el-input',{staticClass:\"mascot-input\",attrs:{\"value\":_vm.getUrl(mascot),\"placeholder\":\"URL\"},on:{\"input\":function($event){return _vm.parseMascots($event, 'url', mascot)}}})],1),_vm._v(\" \"),_c('el-form-item',{staticClass:\"mascot-form-item\",attrs:{\"label\":\"Mime type\",\"label-width\":\"85px\"}},[_c('el-input',{staticClass:\"mascot-input\",attrs:{\"value\":_vm.getMimeType(mascot),\"placeholder\":\"Mime type\"},on:{\"input\":function($event){return _vm.parseMascots($event, 'mimeType', mascot)}}})],1)],1)}),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":_vm.addRowToMascots}})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProxyUrlInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProxyUrlInput.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./ProxyUrlInput.vue?vue&type=template&id=9a053e1c&\"\nimport script from \"./ProxyUrlInput.vue?vue&type=script&lang=js&\"\nexport * from \"./ProxyUrlInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProxyUrlInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"ProxyUrlInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"proxy-url-input\",attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_c('el-input',{staticClass:\"proxy-url-host-input\",attrs:{\"value\":_vm.proxyUrlData.host,\"placeholder\":\"host (e.g. localhost or 127.0.0.1)\"},on:{\"input\":function($event){return _vm.updateProxyUrl($event, 'host')}}}),_vm._v(\" \"),(_vm.isDesktop)?_c('span',[_vm._v(\":\")]):_vm._e(),_vm._v(\" \"),_c('el-input',{staticClass:\"proxy-url-value-input\",attrs:{\"value\":_vm.proxyUrlData.port,\"placeholder\":\"port (e.g 9020 or 3090)\"},on:{\"input\":function($event){return _vm.updateProxyUrl($event, 'port')}}}),_vm._v(\" \"),_c('div',{staticClass:\"socks5-checkbox-container\"},[_c('el-checkbox',{attrs:{\"value\":_vm.proxyUrlData.socks5},on:{\"change\":function($event){return _vm.updateProxyUrl($event, 'socks5')}}}),_vm._v(\" \"),_c('span',{staticClass:\"socks5-checkbox\"},[_vm._v(\"Socks5\")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PruneInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PruneInput.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./PruneInput.vue?vue&type=template&id=172a9876&\"\nimport script from \"./PruneInput.vue?vue&type=script&lang=js&\"\nexport * from \"./PruneInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PruneInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"PruneInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_c('el-radio-group',{staticClass:\"prune-options\",model:{value:(_vm.prune),callback:function ($$v) {_vm.prune=$$v},expression:\"prune\"}},[_c('el-radio',{attrs:{\"label\":\":disabled\"}},[_vm._v(\"Disabled\")]),_vm._v(\" \"),_c('el-radio',{attrs:{\"label\":\":maxlen\"}},[_vm._v(\"Limit-based\")]),_vm._v(\" \"),_c('el-radio',{attrs:{\"label\":\":maxage\"}},[_vm._v(\"Time-based\")])],1),_vm._v(\" \"),(_vm.prune === ':maxlen')?_c('el-form-item',{attrs:{\"label\":\"max length\",\"label-width\":\"100\",\"label-position\":\"left\"}},[_c('el-input-number',{staticClass:\"top-margin\",attrs:{\"value\":_vm.data[1],\"min\":0,\"placeholder\":\"1500\",\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateIntInput($event, ':maxlen')}}})],1):_vm._e(),_vm._v(\" \"),(_vm.prune === ':maxage')?_c('el-form-item',{attrs:{\"label\":\"max age\",\"label-width\":\"100\",\"label-position\":\"left\"}},[_c('el-input-number',{staticClass:\"top-margin\",attrs:{\"value\":_vm.data[1],\"min\":0,\"placeholder\":\"3600\",\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateIntInput($event, ':maxage')}}})],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RateLimitInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RateLimitInput.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./RateLimitInput.vue?vue&type=template&id=7eaf4b58&\"\nimport script from \"./RateLimitInput.vue?vue&type=script&lang=js&\"\nexport * from \"./RateLimitInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RateLimitInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"RateLimitInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"rate-limit-container\",attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[(!_vm.rateLimitAuthUsers)?_c('div',[_c('el-input',{staticClass:\"scale-input\",attrs:{\"value\":_vm.rateLimitAllUsers[0],\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, _vm.setting.key, 'scale', 'oneLimit', _vm.rateLimitAllUsers)}}}),_vm._v(\" \"),_c('span',[_vm._v(\":\")]),_vm._v(\" \"),_c('el-input',{staticClass:\"limit-input\",attrs:{\"value\":_vm.rateLimitAllUsers[1],\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, _vm.setting.key, 'limit', 'oneLimit', _vm.rateLimitAllUsers)}}}),_vm._v(\" \"),_c('div',{staticClass:\"limit-button-container\"},[_c('el-button',{attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.toggleLimits([['', ''], ['', '']], _vm.setting.key)}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl limit-expl\"},[_vm._v(\"Set different limits for unauthenticated and authenticated users\")])],1)],1):_vm._e(),_vm._v(\" \"),(_vm.rateLimitAuthUsers)?_c('div',[_c('el-form-item',{staticClass:\"rate-limit\"},[_c('div',{staticClass:\"rate-limit-label-container\"},[_c('span',{staticClass:\"rate-limit-label\"},[_vm._v(\"\\n Unauthenticated users:\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"rate-limit-content\"},[_c('el-input',{staticClass:\"scale-input\",attrs:{\"value\":_vm.rateLimitUnauthUsers[0],\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter(\n $event, _vm.setting.key, 'scale', 'unauthUsersLimit', [_vm.rateLimitUnauthUsers, _vm.rateLimitAuthUsers]\n )}}}),_vm._v(\" \"),_c('span',[_vm._v(\":\")]),_vm._v(\" \"),_c('el-input',{staticClass:\"limit-input\",attrs:{\"value\":_vm.rateLimitUnauthUsers[1],\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter(\n $event, _vm.setting.key, 'limit', 'unauthUsersLimit', [_vm.rateLimitUnauthUsers, _vm.rateLimitAuthUsers]\n )}}})],1)]),_vm._v(\" \"),_c('el-form-item',{staticClass:\"rate-limit\"},[_c('div',{staticClass:\"rate-limit-label-container\"},[_c('span',{staticClass:\"rate-limit-label\"},[_vm._v(\"\\n Authenticated users:\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"rate-limit-content\"},[_c('el-input',{staticClass:\"scale-input\",attrs:{\"value\":_vm.rateLimitAuthUsers[0],\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, _vm.setting.key, 'scale', 'authUserslimit', [_vm.rateLimitUnauthUsers, _vm.rateLimitAuthUsers])}}}),_vm._v(\" \"),_c('span',[_vm._v(\":\")]),_vm._v(\" \"),_c('el-input',{staticClass:\"limit-input\",attrs:{\"value\":_vm.rateLimitAuthUsers[1],\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, _vm.setting.key, 'limit', 'authUserslimit', [_vm.rateLimitUnauthUsers, _vm.rateLimitAuthUsers])}}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"limit-button-container\"},[_c('el-button',{staticClass:\"icon-minus-button\",attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.toggleLimits(['', ''], _vm.setting.key)}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl limit-expl\"},[_vm._v(\"Set limit for all users\")])],1)],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RegInvitesInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RegInvitesInput.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./RegInvitesInput.vue?vue&type=template&id=55c7fa7c&\"\nimport script from \"./RegInvitesInput.vue?vue&type=script&lang=js&\"\nexport * from \"./RegInvitesInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RegInvitesInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"RegInvitesInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-switch',{staticClass:\"switch-input\",attrs:{\"value\":_vm.data[_vm.setting.key],\"data-search\":_vm.setting.key},on:{\"change\":function($event){return _vm.updateSetting($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.setting.key, _vm.setting.type)}}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectInputWithReducedLabels.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectInputWithReducedLabels.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./SelectInputWithReducedLabels.vue?vue&type=template&id=240dfbe9&\"\nimport script from \"./SelectInputWithReducedLabels.vue?vue&type=script&lang=js&\"\nexport * from \"./SelectInputWithReducedLabels.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SelectInputWithReducedLabels.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"SelectInputWithReducedLabels.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"input\"},[(_vm.renderMultipleSelect(_vm.setting.type))?_c('el-select',{staticClass:\"input\",attrs:{\"value\":_vm.inputValue,\"data-search\":_vm.setting.key,\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.setting.key, _vm.setting.type)}}},_vm._l((_vm.options(_vm.setting.suggestions)),function(option,index){return _c('el-option',{key:index,attrs:{\"value\":option.value,\"label\":option.label}})}),1):_vm._e(),_vm._v(\" \"),(_vm.setting.type === 'module' || (_vm.setting.type.includes('atom') && _vm.setting.type.includes('dropdown')))?_c('el-select',{staticClass:\"input\",attrs:{\"value\":_vm.inputValue === false ? 'false' : _vm.inputValue,\"data-search\":_vm.setting.key || _vm.setting.group,\"clearable\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.setting.key, _vm.setting.type)}}},_vm._l((_vm.options(_vm.setting.suggestions)),function(option,index){return _c('el-option',{key:index,attrs:{\"value\":option.value,\"label\":option.label}})}),1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SpecificMultipleSelect.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SpecificMultipleSelect.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./SpecificMultipleSelect.vue?vue&type=template&id=411d006e&\"\nimport script from \"./SpecificMultipleSelect.vue?vue&type=script&lang=js&\"\nexport * from \"./SpecificMultipleSelect.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SpecificMultipleSelect.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"SpecificMultipleSelect.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"multiple-select-container\"},[(_vm.setting.key === ':backends')?_c('el-select',{staticClass:\"input\",attrs:{\"value\":_vm.data.value,\"data-search\":_vm.setting.key || _vm.setting.group,\"multiple\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.setting.key, _vm.setting.type)}}},[_c('el-option',{attrs:{\"value\":\":console\",\"label\":\"console\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":ex_syslogger\",\"label\":\"ExSyslogger\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"Quack.Logger\",\"label\":\"Quack.Logger\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.setting.key === ':args')?_c('el-select',{staticClass:\"input\",attrs:{\"value\":_vm.data[_vm.setting.key],\"data-search\":_vm.setting.key || _vm.setting.group,\"multiple\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.setting.key, _vm.setting.type)}}},[_c('el-option',{attrs:{\"value\":\"strip\",\"label\":\"strip\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"auto-orient\",\"label\":\"auto-orient\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"implode\",\"label\":\"implode\"}})],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Inputs.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Inputs.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Inputs.vue?vue&type=template&id=73a4e7f2&\"\nimport script from \"./Inputs.vue?vue&type=script&lang=js&\"\nexport * from \"./Inputs.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Inputs.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Inputs.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"input-container\"},[(_vm.setting.type === 'keyword')?_c('div',{staticClass:\"keyword-container\"},[_c('el-form-item',{class:_vm.labelClass,style:((\"margin-left:\" + _vm.margin + \"px;margin-bottom:0\")),attrs:{\"label-width\":_vm.customLabelWidth,\"data-search\":_vm.setting.key || _vm.setting.group}},[_c('span',{attrs:{\"slot\":\"label\"},slot:\"label\"},[_vm._v(\"\\n \"+_vm._s(_vm.setting.label)+\"\\n \"),(_vm.canBeDeleted && _vm.isDesktop)?_c('el-tooltip',{attrs:{\"content\":_vm.$t('settings.removeFromDB'),\"placement\":\"bottom-end\"}},[_c('el-button',{staticClass:\"delete-setting-button\",attrs:{\"icon\":\"el-icon-delete\",\"circle\":\"\",\"size\":\"mini\"},on:{\"click\":_vm.removeSetting}})],1):_vm._e()],1)]),_vm._v(\" \"),_vm._l((_vm.setting.children),function(subSetting){return _c('el-form-item',{key:subSetting.key},[_c('inputs',{attrs:{\"setting-group\":_vm.settingGroup,\"setting-parent\":_vm.settingParent.concat( [subSetting]),\"setting\":subSetting,\"data\":_vm.data[_vm.setting.key],\"custom-label-width\":_vm.isMobile ? '100px' : '120px',\"label-class\":subSetting.type === 'keyword' ? 'center-label' : '',\"margin\":_vm.isDesktop ? _vm.margin + 15 : _vm.margin + 8,\"nested\":true}})],1)})],2):_vm._e(),_vm._v(\" \"),(_vm.setting.type !== 'keyword')?_c('el-form-item',{class:_vm.labelClass,style:(_vm.isDesktop ? '' : (\"margin-left:\" + _vm.margin + \"px\")),attrs:{\"label-width\":_vm.customLabelWidth}},[_c('span',{attrs:{\"slot\":\"label\"},slot:\"label\"},[_vm._v(\"\\n \"+_vm._s(_vm.setting.label)+\"\\n \"),(_vm.canBeDeleted && (_vm.isDesktop || _vm.isMobile))?_c('el-tooltip',{attrs:{\"content\":_vm.$t('settings.removeFromDB'),\"placement\":\"bottom-end\"}},[_c('el-button',{staticClass:\"delete-setting-button\",attrs:{\"icon\":\"el-icon-delete\",\"circle\":\"\",\"size\":\"mini\"},on:{\"click\":_vm.removeSetting}})],1):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"input-row\"},[(_vm.setting.type === 'string' || (_vm.setting.type.includes('string') && _vm.setting.type.includes('atom')))?_c('el-input',{staticClass:\"input\",attrs:{\"value\":_vm.inputValue,\"placeholder\":_vm.setting.suggestions ? _vm.setting.suggestions[0] : null,\"data-search\":_vm.setting.key || _vm.setting.group},on:{\"input\":function($event){return _vm.update($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.settingParent, _vm.setting.key, _vm.setting.type, _vm.nested)}}}):_vm._e(),_vm._v(\" \"),(_vm.setting.type === 'boolean' && ![':registrations_open', ':invites_enabled'].includes(_vm.setting.key))?_c('el-switch',{staticClass:\"switch-input\",attrs:{\"value\":_vm.inputValue,\"data-search\":_vm.setting.key || _vm.setting.group},on:{\"change\":function($event){return _vm.update($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.settingParent, _vm.setting.key, _vm.setting.type, _vm.nested)}}}):_vm._e(),_vm._v(\" \"),(_vm.setting.type === 'integer')?_c('el-input-number',{attrs:{\"value\":_vm.inputValue === null ? undefined : _vm.inputValue,\"placeholder\":_vm.setting.suggestions ? _vm.setting.suggestions[0].toString() : null,\"min\":0,\"size\":_vm.isDesktop ? 'large' : 'medium',\"data-search\":_vm.setting.key || _vm.setting.group},on:{\"change\":function($event){return _vm.update($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.settingParent, _vm.setting.key, _vm.setting.type, _vm.nested)}}}):_vm._e(),_vm._v(\" \"),(_vm.renderSingleSelect(_vm.setting.type))?_c('el-select',{staticClass:\"input\",attrs:{\"value\":_vm.inputValue === false ? 'false' : _vm.inputValue,\"data-search\":_vm.setting.key || _vm.setting.group,\"clearable\":\"\"},on:{\"change\":function($event){return _vm.update($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.settingParent, _vm.setting.key, _vm.setting.type, _vm.nested)}}},_vm._l((_vm.setting.suggestions),function(option,index){return _c('el-option',{key:index,attrs:{\"value\":option}})}),1):_vm._e(),_vm._v(\" \"),(_vm.renderMultipleSelect(_vm.setting.type))?_c('el-select',{staticClass:\"input\",attrs:{\"value\":_vm.inputValue,\"data-search\":_vm.setting.key || _vm.setting.group,\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.update($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.settingParent, _vm.setting.key, _vm.setting.type, _vm.nested)}}},_vm._l((_vm.setting.suggestions),function(option,index){return _c('el-option',{key:index,attrs:{\"value\":option}})}),1):_vm._e(),_vm._v(\" \"),(_vm.setting.key === ':ip')?_c('el-input',{staticClass:\"input\",attrs:{\"value\":_vm.inputValue,\"data-search\":_vm.setting.key || _vm.setting.group,\"placeholder\":\"xxx.xxx.xxx.xx\"},on:{\"input\":function($event){return _vm.update($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.settingParent, _vm.setting.key, _vm.setting.type, _vm.nested)}}}):_vm._e(),_vm._v(\" \"),(_vm.setting.type === 'atom')?_c('el-input',{staticClass:\"input\",attrs:{\"value\":_vm.inputValue,\"placeholder\":_vm.setting.suggestions[0] ? _vm.setting.suggestions[0].substr(1) : '',\"data-search\":_vm.setting.key || _vm.setting.group},on:{\"input\":function($event){return _vm.update($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.settingParent, _vm.setting.key, _vm.setting.type, _vm.nested)}}},[_c('template',{slot:\"prepend\"},[_vm._v(\":\")])],2):_vm._e(),_vm._v(\" \"),(_vm.settingGroup.group === ':auto_linker')?_c('auto-linker-input',{attrs:{\"data\":_vm.data,\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting}}):_vm._e(),_vm._v(\" \"),(_vm.setting.key === ':crontab')?_c('crontab-input',{attrs:{\"data\":_vm.data[_vm.setting.key],\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting}}):_vm._e(),_vm._v(\" \"),(_vm.editableKeyword(_vm.setting.key, _vm.setting.type))?_c('editable-keyword-input',{attrs:{\"data\":_vm.keywordData,\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting}}):_vm._e(),_vm._v(\" \"),(_vm.setting.key === ':icons')?_c('icons-input',{attrs:{\"data\":_vm.iconsData,\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting}}):_vm._e(),_vm._v(\" \"),(_vm.setting.key === ':mascots')?_c('mascots-input',{attrs:{\"data\":_vm.keywordData,\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting}}):_vm._e(),_vm._v(\" \"),(_vm.setting.key === ':proxy_url')?_c('proxy-url-input',{attrs:{\"data\":_vm.data[_vm.setting.key],\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting,\"parents\":_vm.settingParent}}):_vm._e(),_vm._v(\" \"),(_vm.setting.key === ':prune')?_c('prune-input',{attrs:{\"data\":_vm.data[_vm.setting.key],\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting}}):_vm._e(),_vm._v(\" \"),(_vm.settingGroup.key === ':rate_limit')?_c('rate-limit-input',{attrs:{\"data\":_vm.data,\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting}}):_vm._e(),_vm._v(\" \"),([':registrations_open', ':invites_enabled'].includes(_vm.setting.key))?_c('reg-invites-input',{attrs:{\"data\":_vm.data,\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting}}):_vm._e(),_vm._v(\" \"),(_vm.reducedSelects)?_c('select-input-with-reduced-labels',{attrs:{\"data\":_vm.data,\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting}}):_vm._e(),_vm._v(\" \"),(_vm.setting.key === ':backends' || _vm.setting.key === ':args')?_c('specific-multiple-select',{attrs:{\"data\":_vm.data,\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting}}):_vm._e(),_vm._v(\" \"),(_vm.canBeDeleted && _vm.isTablet)?_c('el-tooltip',{staticClass:\"delete-setting-button-container\",attrs:{\"content\":_vm.$t('settings.removeFromDB'),\"placement\":\"bottom-end\"}},[_c('el-button',{staticClass:\"delete-setting-button\",attrs:{\"icon\":\"el-icon-delete\",\"circle\":\"\",\"size\":\"mini\"},on:{\"click\":_vm.removeSetting}})],1):_vm._e()],1),_vm._v(\" \"),(_vm.setting.description && _vm.setting.type !== 'keyword')?_c('div',{staticClass:\"expl\",domProps:{\"innerHTML\":_vm._s(_vm.getFormattedDescription(_vm.setting.description))}}):_vm._e()]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Setting.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Setting.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Setting.vue?vue&type=template&id=641b2402&\"\nimport script from \"./Setting.vue?vue&type=script&lang=js&\"\nexport * from \"./Setting.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Setting.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Setting.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',[(_vm.settingGroup.description)?_c('el-form-item',{staticClass:\"description-container\",attrs:{\"data-search\":_vm.settingGroup.key || _vm.settingGroup.group}},[_c('span',{staticClass:\"description\",domProps:{\"innerHTML\":_vm._s(_vm.getFormattedDescription(_vm.settingGroup.description))}})]):_vm._e(),_vm._v(\" \"),(_vm.settingGroup.key === 'Pleroma.Emails.Mailer')?_c('div',[_vm._l((_vm.settingGroup.children.filter(function (setting) { return !setting.group; })),function(setting){return _c('div',{key:setting.key},[_c('inputs',{attrs:{\"setting-group\":_vm.settingGroup,\"setting\":setting,\"data\":_vm.data}})],1)}),_vm._v(\" \"),_vm._l((_vm.emailAdapterChildren),function(setting){return _c('div',{key:setting.key},[_c('inputs',{attrs:{\"setting-group\":_vm.settingGroup,\"setting\":setting,\"data\":_vm.data}})],1)})],2):_c('div',_vm._l((_vm.settingGroup.children),function(setting){return _c('div',{key:setting.key},[(!_vm.compound(setting))?_c('div',[_c('inputs',{attrs:{\"setting-group\":_vm.settingGroup,\"setting\":setting,\"data\":_vm.data,\"nested\":false}})],1):_vm._e(),_vm._v(\" \"),(_vm.compound(setting))?_c('div',[(_vm.divideSetting(setting.key))?_c('el-divider',{staticClass:\"divider\"}):_vm._e(),_vm._v(\" \"),(!setting.children)?_c('div',[_c('inputs',{attrs:{\"setting-group\":_vm.settingGroup,\"setting\":setting,\"data\":_vm.data[setting.key],\"nested\":true}})],1):_c('div',[_c('div',{staticClass:\"input-container\"},[_c('el-form-item',{staticClass:\"grouped-settings-header\",attrs:{\"data-search\":setting.key || setting.group}},[_c('span',{attrs:{\"slot\":\"label\"},slot:\"label\"},[(_vm.isDesktop && _vm.canBeDeleted(setting.key))?_c('el-tooltip',{attrs:{\"content\":_vm.$t('settings.removeFromDB'),\"placement\":\"bottom-end\"}},[_c('el-button',{staticStyle:{\"margin-left\":\"5px\"},attrs:{\"icon\":\"el-icon-delete\",\"circle\":\"\",\"size\":\"mini\"},on:{\"click\":function($event){return _vm.removeSetting(setting.key)}}})],1):_vm._e()],1),_vm._v(\" \"),_c('span',{staticClass:\"label-font\"},[_vm._v(_vm._s(setting.label))]),_vm._v(\" \"),(_vm.canBeDeleted(setting.key) && (_vm.isMobile || _vm.isTablet))?_c('el-tooltip',{attrs:{\"content\":_vm.$t('settings.removeFromDB'),\"placement\":\"bottom-end\"}},[_c('el-button',{staticClass:\"settings-delete-button\",attrs:{\"icon\":\"el-icon-delete\",\"circle\":\"\",\"size\":\"mini\"},on:{\"click\":function($event){return _vm.removeSetting(setting.key)}}})],1):_vm._e()],1)],1),_vm._v(\" \"),_vm._l((setting.children),function(subSetting){return _c('div',{key:subSetting.key},[_c('inputs',{attrs:{\"setting-group\":_vm.settingGroup,\"setting-parent\":[setting, subSetting],\"setting\":subSetting,\"data\":_vm.data[setting.key],\"nested\":true}})],1)})],2),_vm._v(\" \"),_c('el-divider',{staticClass:\"divider\"})],1):_vm._e()])}),0)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActivityPub.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActivityPub.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./ActivityPub.vue?vue&type=template&id=61d2885c&\"\nimport script from \"./ActivityPub.vue?vue&type=script&lang=js&\"\nexport * from \"./ActivityPub.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ActivityPub.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"ActivityPub.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{ref:\"activitypubData\",attrs:{\"model\":_vm.activitypubData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth,\"data-search\":\":activitypub\"}},[_c('setting',{attrs:{\"setting-group\":_vm.activitypub,\"data\":_vm.activitypubData}})],1),_vm._v(\" \"),(_vm.activitypub)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"userData\",attrs:{\"model\":_vm.userData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth,\"data-search\":\":user\"}},[_c('setting',{attrs:{\"setting-group\":_vm.user,\"data\":_vm.userData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Authentication.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Authentication.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Authentication.vue?vue&type=template&id=fc990042&\"\nimport script from \"./Authentication.vue?vue&type=script&lang=js&\"\nexport * from \"./Authentication.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Authentication.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Authentication.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{ref:\"pleromaAuthenticatorData\",attrs:{\"model\":_vm.pleromaAuthenticatorData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.pleromaAuthenticator,\"data\":_vm.pleromaAuthenticatorData}})],1),_vm._v(\" \"),(_vm.pleromaAuthenticator)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"authData\",attrs:{\"model\":_vm.authData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.auth,\"data\":_vm.authData}})],1),_vm._v(\" \"),(_vm.auth)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"ldapData\",attrs:{\"model\":_vm.ldapData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.ldap,\"data\":_vm.ldapData}})],1),_vm._v(\" \"),(_vm.oauth2)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"oauth2\",attrs:{\"model\":_vm.oauth2Data,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.oauth2,\"data\":_vm.oauth2Data}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AutoLinker.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AutoLinker.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./AutoLinker.vue?vue&type=template&id=11b09d35&\"\nimport script from \"./AutoLinker.vue?vue&type=script&lang=js&\"\nexport * from \"./AutoLinker.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AutoLinker.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"AutoLinker.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{ref:\"autoLinker\",attrs:{\"model\":_vm.autoLinkerData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.autoLinker,\"data\":_vm.autoLinkerData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Captcha.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Captcha.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Captcha.vue?vue&type=template&id=a0aa4d3a&\"\nimport script from \"./Captcha.vue?vue&type=script&lang=js&\"\nexport * from \"./Captcha.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Captcha.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Captcha.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{ref:\"captchaData\",attrs:{\"model\":_vm.captchaData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.captcha,\"data\":_vm.captchaData}})],1),_vm._v(\" \"),(_vm.captcha)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"kocaptchaData\",attrs:{\"model\":_vm.kocaptchaData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.kocaptcha,\"data\":_vm.kocaptchaData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Esshd.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Esshd.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Esshd.vue?vue&type=template&id=12ea7477&\"\nimport script from \"./Esshd.vue?vue&type=script&lang=js&\"\nexport * from \"./Esshd.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Esshd.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Esshd.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{ref:\"esshdData\",attrs:{\"model\":_vm.esshdData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.esshd,\"data\":_vm.esshdData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Frontend.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Frontend.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Frontend.vue?vue&type=template&id=44a493e3&\"\nimport script from \"./Frontend.vue?vue&type=script&lang=js&\"\nexport * from \"./Frontend.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Frontend.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Frontend.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{ref:\"frontendData\",attrs:{\"model\":_vm.frontendData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.frontend,\"data\":_vm.frontendData}})],1),_vm._v(\" \"),_c('el-form',{ref:\"staticFeData\",attrs:{\"model\":_vm.staticFeData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.staticFe,\"data\":_vm.staticFeData}})],1),_vm._v(\" \"),(_vm.staticFe)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"assetsData\",attrs:{\"model\":_vm.assetsData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[(_vm.assets)?_c('el-form-item',{staticClass:\"grouped-settings-header\"},[_c('span',{staticClass:\"label-font label-with-margin\"},[_vm._v(_vm._s(_vm.$t('settings.assets')))])]):_vm._e(),_vm._v(\" \"),_c('setting',{attrs:{\"setting-group\":_vm.assets,\"data\":_vm.assetsData}})],1),_vm._v(\" \"),(_vm.assets)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"emojiData\",attrs:{\"model\":_vm.emojiData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[(_vm.emoji)?_c('el-form-item',{staticClass:\"grouped-settings-header\",attrs:{\"data-search\":\":emoji\"}},[_c('span',{staticClass:\"label-font label-with-margin\"},[_vm._v(_vm._s(_vm.$t('settings.emoji')))])]):_vm._e(),_vm._v(\" \"),_c('setting',{attrs:{\"setting-group\":_vm.emoji,\"data\":_vm.emojiData}})],1),_vm._v(\" \"),(_vm.emoji)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"chatData\",attrs:{\"model\":_vm.chatData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.chat,\"data\":_vm.chatData}})],1),_vm._v(\" \"),(_vm.chat)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"markupData\",attrs:{\"model\":_vm.markupData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[(_vm.markup)?_c('el-form-item',{staticClass:\"grouped-settings-header\",attrs:{\"data-search\":\":markup\"}},[_c('span',{staticClass:\"label-font label-with-margin\"},[_vm._v(_vm._s(_vm.$t('settings.markup')))])]):_vm._e(),_vm._v(\" \"),_c('setting',{attrs:{\"setting-group\":_vm.markup,\"data\":_vm.markupData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Gopher.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Gopher.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Gopher.vue?vue&type=template&id=15ee83b0&\"\nimport script from \"./Gopher.vue?vue&type=script&lang=js&\"\nexport * from \"./Gopher.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Gopher.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Gopher.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[(!_vm.loading)?_c('el-form',{ref:\"gopher\",attrs:{\"model\":_vm.gopherData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.gopher,\"data\":_vm.gopherData}})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Http.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Http.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Http.vue?vue&type=template&id=1ff5d7b6&\"\nimport script from \"./Http.vue?vue&type=script&lang=js&\"\nexport * from \"./Http.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Http.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Http.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{ref:\"httpData\",attrs:{\"model\":_vm.httpData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.http,\"data\":_vm.httpData}})],1),_vm._v(\" \"),_c('el-form',{ref:\"corsPlugData\",attrs:{\"model\":_vm.corsPlugData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[(_vm.corsPlug)?_c('el-form-item',{staticClass:\"grouped-settings-header\",attrs:{\"data-search\":\":cors_plug\"}},[_c('span',{staticClass:\"label-font label-with-margin\"},[_vm._v(_vm._s(_vm.$t('settings.corsPlug')))])]):_vm._e(),_vm._v(\" \"),_c('setting',{attrs:{\"setting-group\":_vm.corsPlug,\"data\":_vm.corsPlugData}})],1),_vm._v(\" \"),(_vm.corsPlug)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"httpSignatures\",attrs:{\"model\":_vm.httpSignaturesData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.httpSignatures,\"data\":_vm.httpSignaturesData}})],1),_vm._v(\" \"),(_vm.httpSignatures)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"httpSecurityData\",attrs:{\"model\":_vm.httpSecurityData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.httpSecurity,\"data\":_vm.httpSecurityData}})],1),_vm._v(\" \"),(_vm.httpSecurity)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"webCacheTtl\",attrs:{\"model\":_vm.webCacheTtlData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.webCacheTtl,\"data\":_vm.webCacheTtlData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Instance.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Instance.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Instance.vue?vue&type=template&id=235800e0&\"\nimport script from \"./Instance.vue?vue&type=script&lang=js&\"\nexport * from \"./Instance.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Instance.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Instance.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{ref:\"instanceData\",attrs:{\"model\":_vm.instanceData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.instance,\"data\":_vm.instanceData}})],1),_vm._v(\" \"),(_vm.instance)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"adminToken\",attrs:{\"model\":_vm.adminTokenData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.adminToken,\"data\":_vm.adminTokenData}})],1),_vm._v(\" \"),(_vm.adminToken)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"scheduledActivity\",attrs:{\"model\":_vm.scheduledActivityData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.scheduledActivity,\"data\":_vm.scheduledActivityData}})],1),_vm._v(\" \"),(_vm.scheduledActivity)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"manifest\",attrs:{\"model\":_vm.manifestData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.manifest,\"data\":_vm.manifestData}})],1),_vm._v(\" \"),(_vm.manifest)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"pleromaUser\",attrs:{\"model\":_vm.pleromaUserData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth,\"data-search\":\"Pleroma.User\"}},[_c('setting',{attrs:{\"setting-group\":_vm.pleromaUser,\"data\":_vm.pleromaUserData}})],1),_vm._v(\" \"),(_vm.pleromaUser)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"uriSchemes\",attrs:{\"model\":_vm.uriSchemesData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.uriSchemes,\"data\":_vm.uriSchemesData}})],1),_vm._v(\" \"),(_vm.uriSchemes)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"feed\",attrs:{\"model\":_vm.feedData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.feed,\"data\":_vm.feedData}})],1),_vm._v(\" \"),_c('el-form',{ref:\"streamer\",attrs:{\"model\":_vm.streamerData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.streamer,\"data\":_vm.streamerData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./JobQueue.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./JobQueue.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./JobQueue.vue?vue&type=template&id=363820de&\"\nimport script from \"./JobQueue.vue?vue&type=script&lang=js&\"\nexport * from \"./JobQueue.vue?vue&type=script&lang=js&\"\nimport style0 from \"./JobQueue.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"JobQueue.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{ref:\"obanQueuesData\",attrs:{\"model\":_vm.obanQueuesData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.obanQueues,\"data\":_vm.obanQueuesData}})],1),_vm._v(\" \"),_c('el-form',{ref:\"workersData\",attrs:{\"model\":_vm.workersData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.workers,\"data\":_vm.workersData}})],1),_vm._v(\" \"),_c('el-form',{ref:\"activityExpiration\",attrs:{\"model\":_vm.activityExpirationData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.activityExpiration,\"data\":_vm.activityExpirationData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logger.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logger.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Logger.vue?vue&type=template&id=0fac35cb&\"\nimport script from \"./Logger.vue?vue&type=script&lang=js&\"\nexport * from \"./Logger.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Logger.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Logger.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{ref:\"loggerData\",attrs:{\"model\":_vm.loggerData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.logger,\"data\":_vm.loggerData}})],1),_vm._v(\" \"),(_vm.logger)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"consoleData\",attrs:{\"model\":_vm.consoleData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.console,\"data\":_vm.consoleData}})],1),_vm._v(\" \"),(_vm.console)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"exsysloggerData\",attrs:{\"model\":_vm.exsysloggerData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.exsyslogger,\"data\":_vm.exsysloggerData}})],1),_vm._v(\" \"),(_vm.exsyslogger)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"quackData\",attrs:{\"model\":_vm.quackData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.quack,\"data\":_vm.quackData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Mailer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Mailer.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Mailer.vue?vue&type=template&id=5331edef&\"\nimport script from \"./Mailer.vue?vue&type=script&lang=js&\"\nexport * from \"./Mailer.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Mailer.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Mailer.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{ref:\"mailer\",attrs:{\"model\":_vm.mailerData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.mailer,\"data\":_vm.mailerData}})],1),_vm._v(\" \"),(_vm.mailer)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"swoosh\",attrs:{\"model\":_vm.swooshData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.swoosh,\"data\":_vm.swooshData}})],1),_vm._v(\" \"),(_vm.swoosh)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"emailNotifications\",attrs:{\"model\":_vm.emailNotificationsData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.emailNotifications,\"data\":_vm.emailNotificationsData}})],1),_vm._v(\" \"),_c('el-form',{ref:\"userEmail\",attrs:{\"model\":_vm.userEmailData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.userEmail,\"data\":_vm.userEmailData}})],1),_vm._v(\" \"),_c('el-form',{ref:\"newUsersDigestEmail\",attrs:{\"model\":_vm.newUsersDigestEmailData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.newUsersDigestEmail,\"data\":_vm.newUsersDigestEmailData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MediaProxy.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MediaProxy.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./MediaProxy.vue?vue&type=template&id=1f81eb24&\"\nimport script from \"./MediaProxy.vue?vue&type=script&lang=js&\"\nexport * from \"./MediaProxy.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MediaProxy.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"MediaProxy.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[(!_vm.loading)?_c('el-form',{ref:\"mediaProxy\",attrs:{\"model\":_vm.mediaProxyData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.mediaProxy,\"data\":_vm.mediaProxyData}})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Metadata.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Metadata.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Metadata.vue?vue&type=template&id=1733a5b4&\"\nimport script from \"./Metadata.vue?vue&type=script&lang=js&\"\nexport * from \"./Metadata.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Metadata.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Metadata.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{ref:\"metadata\",attrs:{\"model\":_vm.metadataData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.metadata,\"data\":_vm.metadataData}})],1),_vm._v(\" \"),(_vm.metadata)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"richMedia\",attrs:{\"model\":_vm.richMediaData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.richMedia,\"data\":_vm.richMediaData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MRF.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MRF.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./MRF.vue?vue&type=template&id=03c3fd9d&\"\nimport script from \"./MRF.vue?vue&type=script&lang=js&\"\nexport * from \"./MRF.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MRF.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"MRF.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{ref:\"mrfSimple\",attrs:{\"model\":_vm.mrfSimpleData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.mrfSimple,\"data\":_vm.mrfSimpleData}})],1),_vm._v(\" \"),(_vm.mrfSimple)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"mrfRejectnonpublic\",attrs:{\"model\":_vm.mrfRejectnonpublicData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.mrfRejectnonpublic,\"data\":_vm.mrfRejectnonpublicData}})],1),_vm._v(\" \"),(_vm.mrfRejectnonpublic)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"mrfHellthread\",attrs:{\"model\":_vm.mrfHellthreadData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.mrfHellthread,\"data\":_vm.mrfHellthreadData}})],1),_vm._v(\" \"),(_vm.mrfHellthread)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"mrfKeyword\",attrs:{\"model\":_vm.mrfKeywordData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.mrfKeyword,\"data\":_vm.mrfKeywordData}})],1),_vm._v(\" \"),_c('el-form',{ref:\"mrfSubchain\",attrs:{\"model\":_vm.mrfSubchainData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.mrfSubchain,\"data\":_vm.mrfSubchainData}})],1),_vm._v(\" \"),_c('el-form',{ref:\"mrfMention\",attrs:{\"model\":_vm.mrfMentionData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.mrfMention,\"data\":_vm.mrfMentionData}})],1),_vm._v(\" \"),(_vm.mrfMention)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"mrfNormalizeMarkup\",attrs:{\"model\":_vm.mrfNormalizeMarkupData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.mrfNormalizeMarkup,\"data\":_vm.mrfNormalizeMarkupData}})],1),_vm._v(\" \"),(_vm.mrfNormalizeMarkup)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"mrfVocabulary\",attrs:{\"model\":_vm.mrfVocabularyData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.mrfVocabulary,\"data\":_vm.mrfVocabularyData}})],1),_vm._v(\" \"),(_vm.mrfVocabulary)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"mrfObjectAge\",attrs:{\"model\":_vm.mrfObjectAgeData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.mrfObjectAge,\"data\":_vm.mrfObjectAgeData}})],1),_vm._v(\" \"),(_vm.mrfObjectAge)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"modules\",attrs:{\"model\":_vm.modulesData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.modules,\"data\":_vm.modulesData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Other.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Other.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Other.vue?vue&type=template&id=529a22f4&\"\nimport script from \"./Other.vue?vue&type=script&lang=js&\"\nexport * from \"./Other.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Other.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Other.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{ref:\"mimeTypes\",attrs:{\"model\":_vm.mimeTypesData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.mimeTypes,\"data\":_vm.mimeTypesData}})],1),_vm._v(\" \"),_c('el-form',{ref:\"remoteIp\",attrs:{\"model\":_vm.remoteIpData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.remoteIp,\"data\":_vm.remoteIpData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RateLimiters.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RateLimiters.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./RateLimiters.vue?vue&type=template&id=342424ac&\"\nimport script from \"./RateLimiters.vue?vue&type=script&lang=js&\"\nexport * from \"./RateLimiters.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RateLimiters.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"RateLimiters.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[(!_vm.loading)?_c('el-form',{ref:\"rateLimiters\",attrs:{\"model\":_vm.rateLimitersData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.rateLimiters,\"data\":_vm.rateLimitersData}})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Relays.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Relays.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Relays.vue?vue&type=template&id=74b90396&\"\nimport script from \"./Relays.vue?vue&type=script&lang=js&\"\nexport * from \"./Relays.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Relays.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Relays.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"relays-container\"},[_c('div',{staticClass:\"follow-relay-container\"},[_c('el-input',{staticClass:\"follow-relay\",attrs:{\"placeholder\":_vm.$t('settings.followRelay')},nativeOn:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.followRelay($event)}},model:{value:(_vm.newRelay),callback:function ($$v) {_vm.newRelay=$$v},expression:\"newRelay\"}}),_vm._v(\" \"),_c('el-button',{attrs:{\"type\":\"primary\"},nativeOn:{\"click\":function($event){return _vm.followRelay($event)}}},[_vm._v(_vm._s(_vm.$t('settings.follow')))])],1),_vm._v(\" \"),_c('el-table',{attrs:{\"data\":_vm.relaysTable}},[_c('el-table-column',{attrs:{\"label\":_vm.$t('settings.instanceUrl'),\"prop\":\"instance\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"fixed\":\"right\",\"width\":\"120\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-button',{attrs:{\"type\":\"text\",\"size\":\"small\"},nativeOn:{\"click\":function($event){return _vm.deleteRelay(scope.row.instance)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('table.delete'))+\"\\n \")])]}}],null,false,2132974932)})],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Upload.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Upload.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Upload.vue?vue&type=template&id=c3685204&\"\nimport script from \"./Upload.vue?vue&type=script&lang=js&\"\nexport * from \"./Upload.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Upload.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Upload.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{ref:\"uploadData\",attrs:{\"model\":_vm.uploadData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.upload,\"data\":_vm.uploadData}})],1),_vm._v(\" \"),(_vm.showUploadersLocal)?_c('el-form',{ref:\"uploadersLocal\",attrs:{\"model\":_vm.uploadersLocalData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[(_vm.uploadersLocal)?_c('el-form-item',{staticClass:\"grouped-settings-header\"},[_c('span',{staticClass:\"label-font label-with-margin\"},[_vm._v(\"Pleroma.Uploaders.Local\")])]):_vm._e(),_vm._v(\" \"),_c('setting',{attrs:{\"setting-group\":_vm.uploadersLocal,\"data\":_vm.uploadersLocalData}}),_vm._v(\" \"),(_vm.uploadersLocal)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.showUploadersS3)?_c('el-form',{ref:\"uploadersS3\",attrs:{\"model\":_vm.uploadersS3Data,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.uploadersS3,\"data\":_vm.uploadersS3Data}}),_vm._v(\" \"),(_vm.uploadersS3)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"uploadFilterMogrify\",attrs:{\"model\":_vm.uploadFilterMogrifyData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.uploadFilterMogrify,\"data\":_vm.uploadFilterMogrifyData}})],1),_vm._v(\" \"),(_vm.uploadFilterMogrify)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{ref:\"uploadAnonymizeFilename\",attrs:{\"model\":_vm.uploadAnonymizeFilenameData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.uploadAnonymizeFilename,\"data\":_vm.uploadAnonymizeFilenameData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebPush.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebPush.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./WebPush.vue?vue&type=template&id=126c753f&\"\nimport script from \"./WebPush.vue?vue&type=script&lang=js&\"\nexport * from \"./WebPush.vue?vue&type=script&lang=js&\"\nimport style0 from \"./WebPush.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"WebPush.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[(!_vm.loading)?_c('el-form',{ref:\"vapidDetailsData\",attrs:{\"model\":_vm.vapidDetailsData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.vapidDetails,\"data\":_vm.vapidDetailsData}})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=2b61d370&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=2b61d370&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2b61d370\",\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Metadata.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Metadata.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AutoLinker.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AutoLinker.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Instance.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Instance.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Other.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Other.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MRF.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MRF.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Frontend.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Frontend.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RateLimitInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RateLimitInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./JobQueue.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./JobQueue.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logger.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logger.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProxyUrlInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProxyUrlInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CrontabInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CrontabInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditableKeywordInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditableKeywordInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Setting.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Setting.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActivityPub.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActivityPub.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.needReboot)?_c('el-tooltip',{attrs:{\"content\":_vm.$t('settings.restartApp'),\"placement\":\"bottom-end\"}},[_c('el-button',{staticClass:\"reboot-button\",attrs:{\"type\":\"warning\"},on:{\"click\":_vm.restartApp}},[_c('span',[_c('i',{staticClass:\"el-icon-refresh\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.instanceReboot'))+\"\\n \")])])],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=53cfaf1d&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IconsInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IconsInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Gopher.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Gopher.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Inputs.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Inputs.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\""],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-970d.2457e066.js b/priv/static/adminfe/static/js/chunk-970d.2457e066.js deleted file mode 100644 index 0f99d835e..000000000 --- a/priv/static/adminfe/static/js/chunk-970d.2457e066.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-970d"],{"07OA":function(t,e,s){"use strict";var a=s("51EY");s.n(a).a},"51EY":function(t,e,s){},"8rU9":function(t,e,s){},Eg1M:function(t,e,s){"use strict";var a=s("8rU9");s.n(a).a},"G/Mk":function(t,e,s){"use strict";var a=s("xdcp");s.n(a).a},Kw8l:function(t,e,s){"use strict";var a=s("cRgN");s.n(a).a},Lbbz:function(t,e,s){"use strict";var a=s("Sxb/");s.n(a).a},RnhZ:function(t,e,s){var a={"./af":"K/tc","./af.js":"K/tc","./ar":"jnO4","./ar-dz":"o1bE","./ar-dz.js":"o1bE","./ar-kw":"Qj4J","./ar-kw.js":"Qj4J","./ar-ly":"HP3h","./ar-ly.js":"HP3h","./ar-ma":"CoRJ","./ar-ma.js":"CoRJ","./ar-sa":"gjCT","./ar-sa.js":"gjCT","./ar-tn":"bYM6","./ar-tn.js":"bYM6","./ar.js":"jnO4","./az":"SFxW","./az.js":"SFxW","./be":"H8ED","./be.js":"H8ED","./bg":"hKrs","./bg.js":"hKrs","./bm":"p/rL","./bm.js":"p/rL","./bn":"kEOa","./bn.js":"kEOa","./bo":"0mo+","./bo.js":"0mo+","./br":"aIdf","./br.js":"aIdf","./bs":"JVSJ","./bs.js":"JVSJ","./ca":"1xZ4","./ca.js":"1xZ4","./cs":"PA2r","./cs.js":"PA2r","./cv":"A+xa","./cv.js":"A+xa","./cy":"l5ep","./cy.js":"l5ep","./da":"DxQv","./da.js":"DxQv","./de":"tGlX","./de-at":"s+uk","./de-at.js":"s+uk","./de-ch":"u3GI","./de-ch.js":"u3GI","./de.js":"tGlX","./dv":"WYrj","./dv.js":"WYrj","./el":"jUeY","./el.js":"jUeY","./en-SG":"zavE","./en-SG.js":"zavE","./en-au":"Dmvi","./en-au.js":"Dmvi","./en-ca":"OIYi","./en-ca.js":"OIYi","./en-gb":"Oaa7","./en-gb.js":"Oaa7","./en-ie":"4dOw","./en-ie.js":"4dOw","./en-il":"czMo","./en-il.js":"czMo","./en-nz":"b1Dy","./en-nz.js":"b1Dy","./eo":"Zduo","./eo.js":"Zduo","./es":"iYuL","./es-do":"CjzT","./es-do.js":"CjzT","./es-us":"Vclq","./es-us.js":"Vclq","./es.js":"iYuL","./et":"7BjC","./et.js":"7BjC","./eu":"D/JM","./eu.js":"D/JM","./fa":"jfSC","./fa.js":"jfSC","./fi":"gekB","./fi.js":"gekB","./fo":"ByF4","./fo.js":"ByF4","./fr":"nyYc","./fr-ca":"2fjn","./fr-ca.js":"2fjn","./fr-ch":"Dkky","./fr-ch.js":"Dkky","./fr.js":"nyYc","./fy":"cRix","./fy.js":"cRix","./ga":"USCx","./ga.js":"USCx","./gd":"9rRi","./gd.js":"9rRi","./gl":"iEDd","./gl.js":"iEDd","./gom-latn":"DKr+","./gom-latn.js":"DKr+","./gu":"4MV3","./gu.js":"4MV3","./he":"x6pH","./he.js":"x6pH","./hi":"3E1r","./hi.js":"3E1r","./hr":"S6ln","./hr.js":"S6ln","./hu":"WxRl","./hu.js":"WxRl","./hy-am":"1rYy","./hy-am.js":"1rYy","./id":"UDhR","./id.js":"UDhR","./is":"BVg3","./is.js":"BVg3","./it":"bpih","./it-ch":"bxKX","./it-ch.js":"bxKX","./it.js":"bpih","./ja":"B55N","./ja.js":"B55N","./jv":"tUCv","./jv.js":"tUCv","./ka":"IBtZ","./ka.js":"IBtZ","./kk":"bXm7","./kk.js":"bXm7","./km":"6B0Y","./km.js":"6B0Y","./kn":"PpIw","./kn.js":"PpIw","./ko":"Ivi+","./ko.js":"Ivi+","./ku":"JCF/","./ku.js":"JCF/","./ky":"lgnt","./ky.js":"lgnt","./lb":"RAwQ","./lb.js":"RAwQ","./lo":"sp3z","./lo.js":"sp3z","./lt":"JvlW","./lt.js":"JvlW","./lv":"uXwI","./lv.js":"uXwI","./me":"KTz0","./me.js":"KTz0","./mi":"aIsn","./mi.js":"aIsn","./mk":"aQkU","./mk.js":"aQkU","./ml":"AvvY","./ml.js":"AvvY","./mn":"lYtQ","./mn.js":"lYtQ","./mr":"Ob0Z","./mr.js":"Ob0Z","./ms":"6+QB","./ms-my":"ZAMP","./ms-my.js":"ZAMP","./ms.js":"6+QB","./mt":"G0Uy","./mt.js":"G0Uy","./my":"honF","./my.js":"honF","./nb":"bOMt","./nb.js":"bOMt","./ne":"OjkT","./ne.js":"OjkT","./nl":"+s0g","./nl-be":"2ykv","./nl-be.js":"2ykv","./nl.js":"+s0g","./nn":"uEye","./nn.js":"uEye","./pa-in":"8/+R","./pa-in.js":"8/+R","./pl":"jVdC","./pl.js":"jVdC","./pt":"8mBD","./pt-br":"0tRk","./pt-br.js":"0tRk","./pt.js":"8mBD","./ro":"lyxo","./ro.js":"lyxo","./ru":"lXzo","./ru.js":"lXzo","./sd":"Z4QM","./sd.js":"Z4QM","./se":"//9w","./se.js":"//9w","./si":"7aV9","./si.js":"7aV9","./sk":"e+ae","./sk.js":"e+ae","./sl":"gVVK","./sl.js":"gVVK","./sq":"yPMs","./sq.js":"yPMs","./sr":"zx6S","./sr-cyrl":"E+lV","./sr-cyrl.js":"E+lV","./sr.js":"zx6S","./ss":"Ur1D","./ss.js":"Ur1D","./sv":"X709","./sv.js":"X709","./sw":"dNwA","./sw.js":"dNwA","./ta":"PeUW","./ta.js":"PeUW","./te":"XLvN","./te.js":"XLvN","./tet":"V2x9","./tet.js":"V2x9","./tg":"Oxv6","./tg.js":"Oxv6","./th":"EOgW","./th.js":"EOgW","./tl-ph":"Dzi0","./tl-ph.js":"Dzi0","./tlh":"z3Vd","./tlh.js":"z3Vd","./tr":"DoHr","./tr.js":"DoHr","./tzl":"z1FC","./tzl.js":"z1FC","./tzm":"wQk9","./tzm-latn":"tT3J","./tzm-latn.js":"tT3J","./tzm.js":"wQk9","./ug-cn":"YRex","./ug-cn.js":"YRex","./uk":"raLr","./uk.js":"raLr","./ur":"UpQW","./ur.js":"UpQW","./uz":"Loxo","./uz-latn":"AQ68","./uz-latn.js":"AQ68","./uz.js":"Loxo","./vi":"KSF8","./vi.js":"KSF8","./x-pseudo":"/X5v","./x-pseudo.js":"/X5v","./yo":"fzPg","./yo.js":"fzPg","./zh-cn":"XDpg","./zh-cn.js":"XDpg","./zh-hk":"SatO","./zh-hk.js":"SatO","./zh-tw":"kOpN","./zh-tw.js":"kOpN"};function n(t){var e=r(t);return s(e)}function r(t){if(!s.o(a,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return a[t]}n.keys=function(){return Object.keys(a)},n.resolve=r,t.exports=n,n.id="RnhZ"},"Sxb/":function(t,e,s){},cEOe:function(t,e,s){"use strict";s.r(e);var a=s("ZhIB"),n=s.n(a),r=s("wd/R"),o=s.n(r),i={name:"NoteCard",props:{report:{type:Object,required:!0},note:{type:Object,required:!0}},methods:{parseTimestamp:function(t){return o()(t).format("YYYY-MM-DD HH:mm")},handleNoteDeletion:function(t,e){this.$store.dispatch("DeleteReportNote",{noteID:t,reportID:e})}}},c=(s("G/Mk"),s("KHd+")),l=Object(c.a)(i,function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("el-card",{staticClass:"note-card"},[s("div",{attrs:{slot:"header"},slot:"header"},[s("div",{staticClass:"note-header"},[s("div",{staticClass:"note-actor-container"},[s("div",{staticClass:"note-actor"},[s("img",{staticClass:"note-avatar-img",attrs:{src:t.note.user.avatar}}),t._v(" "),s("h3",{staticClass:"note-actor-name"},[t._v(t._s(t.note.user.display_name))])]),t._v(" "),s("a",{attrs:{href:t.note.user.url,target:"_blank"}},[t._v("\n @"+t._s(t.note.user.display_name)+"\n ")])]),t._v(" "),s("div",[s("el-popconfirm",{attrs:{title:"Are you sure to delete this?","confirm-button-text":"Yes","cancel-button-text":"No"},on:{onConfirm:function(e){return t.handleNoteDeletion(t.note.id,t.report.id)}}},[s("el-button",{attrs:{slot:"reference",size:"mini"},slot:"reference"},[t._v("\n "+t._s(t.$t("reports.deleteNote"))+"\n ")])],1)],1)])]),t._v(" "),s("div",{staticClass:"note-body"},[s("span",{staticClass:"note-content",domProps:{innerHTML:t._s(t.note.content)}}),t._v("\n "+t._s(t.parseTimestamp(t.note.created_at))+"\n ")])])},[],!1,null,null,null);l.options.__file="NoteCard.vue";var u=l.exports,d=s("ot3S"),p={name:"ModerateUserDropdown",props:{account:{type:Object,required:!0}},computed:{tags:function(){return this.account.tags||[]}},methods:{handleDeactivation:function(t){var e=t.nickname;this.$store.dispatch("ToggleUserActivation",e)},handleDeletion:function(t){this.$store.dispatch("DeleteUser",t)},showDeactivatedButton:function(t){return this.$store.state.user.id!==t},toggleTag:function(t,e){t.tags.includes(e)?this.$store.dispatch("RemoveTag",{users:[t],tag:e}):this.$store.dispatch("AddTag",{users:[t],tag:e})}}},v=Object(c.a)(p,function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("el-dropdown",{attrs:{trigger:"click"}},[s("el-button",{attrs:{disabled:!t.account.id,plain:"",size:"small",icon:"el-icon-files"}},[t._v(t._s(t.$t("reports.moderateUser"))+"\n "),s("i",{staticClass:"el-icon-arrow-down el-icon--right"})]),t._v(" "),s("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[t.showDeactivatedButton(t.account)?s("el-dropdown-item",{nativeOn:{click:function(e){return t.handleDeactivation(t.account)}}},[t._v("\n "+t._s(t.account.deactivated?t.$t("users.activateAccount"):t.$t("users.deactivateAccount"))+"\n ")]):t._e(),t._v(" "),t.showDeactivatedButton(t.account.id)?s("el-dropdown-item",{nativeOn:{click:function(e){return t.handleDeletion(t.account.id)}}},[t._v("\n "+t._s(t.$t("users.deleteAccount"))+"\n ")]):t._e(),t._v(" "),s("el-dropdown-item",{class:{"active-tag":t.tags.includes("force_nsfw")},attrs:{divided:!0},nativeOn:{click:function(e){return t.toggleTag(t.account,"force_nsfw")}}},[t._v("\n "+t._s(t.$t("users.forceNsfw"))+"\n "),t.tags.includes("force_nsfw")?s("i",{staticClass:"el-icon-check"}):t._e()]),t._v(" "),s("el-dropdown-item",{class:{"active-tag":t.tags.includes("strip_media")},nativeOn:{click:function(e){return t.toggleTag(t.account,"strip_media")}}},[t._v("\n "+t._s(t.$t("users.stripMedia"))+"\n "),t.tags.includes("strip_media")?s("i",{staticClass:"el-icon-check"}):t._e()]),t._v(" "),s("el-dropdown-item",{class:{"active-tag":t.tags.includes("force_unlisted")},nativeOn:{click:function(e){return t.toggleTag(t.account,"force_unlisted")}}},[t._v("\n "+t._s(t.$t("users.forceUnlisted"))+"\n "),t.tags.includes("force_unlisted")?s("i",{staticClass:"el-icon-check"}):t._e()]),t._v(" "),s("el-dropdown-item",{class:{"active-tag":t.tags.includes("sandbox")},nativeOn:{click:function(e){return t.toggleTag(t.account,"sandbox")}}},[t._v("\n "+t._s(t.$t("users.sandbox"))+"\n "),t.tags.includes("sandbox")?s("i",{staticClass:"el-icon-check"}):t._e()]),t._v(" "),t.account.local?s("el-dropdown-item",{class:{"active-tag":t.tags.includes("disable_remote_subscription")},nativeOn:{click:function(e){return t.toggleTag(t.account,"disable_remote_subscription")}}},[t._v("\n "+t._s(t.$t("users.disableRemoteSubscription"))+"\n "),t.tags.includes("disable_remote_subscription")?s("i",{staticClass:"el-icon-check"}):t._e()]):t._e(),t._v(" "),t.account.local?s("el-dropdown-item",{class:{"active-tag":t.tags.includes("disable_any_subscription")},nativeOn:{click:function(e){return t.toggleTag(t.account,"disable_any_subscription")}}},[t._v("\n "+t._s(t.$t("users.disableAnySubscription"))+"\n "),t.tags.includes("disable_any_subscription")?s("i",{staticClass:"el-icon-check"}):t._e()]):t._e()],1)],1)},[],!1,null,null,null);v.options.__file="ModerateUserDropdown.vue";var _=v.exports,h={name:"Report",components:{Status:d.a,ModerateUserDropdown:_,NoteCard:u},props:{reports:{type:Array,required:!0}},data:function(){return{notes:{}}},computed:{loading:function(){return this.$store.state.reports.loading},pageSize:function(){return this.$store.state.reports.pageSize},totalReportsCount:function(){return this.$store.state.reports.totalReportsCount},currentPage:function(){return this.$store.state.reports.currentPage}},methods:{accountExists:function(t,e){return t[e]},changeReportState:function(t,e){this.$store.dispatch("ChangeReportState",[{state:t,id:e}])},capitalizeFirstLetter:function(t){return t.charAt(0).toUpperCase()+t.slice(1)},getStateType:function(t){switch(t){case"closed":return"info";case"resolved":return"success";default:return"primary"}},getStatusesTitle:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return"Reported statuses: ".concat(t.length," item(s)")},getNotesTitle:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return"Notes: ".concat(t.length," item(s)")},handleNewNote:function(t){this.$store.dispatch("CreateReportNote",{content:this.notes[t],reportID:t}),this.notes[t]=""},handlePageChange:function(t){this.$store.dispatch("FetchReports",t)},parseTimestamp:function(t){return o()(t).format("L HH:mm")},showStatuses:function(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).length>0}}},m=(s("07OA"),Object(c.a)(h,function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",[s("el-timeline",{staticClass:"reports-timeline"},t._l(t.reports,function(e){return s("el-timeline-item",{key:e.id,staticClass:"timeline-item-container",attrs:{timestamp:t.parseTimestamp(e.created_at),placement:"top"}},[s("el-card",{staticClass:"report"},[s("div",{staticClass:"report-header-container"},[s("div",{staticClass:"title-container"},[t.accountExists(e.account,"display_name")?s("h3",{staticClass:"report-title"},[t._v(t._s(t.$t("reports.reportOn"))+" "+t._s(e.account.display_name))]):s("h3",{staticClass:"report-title"},[t._v(t._s(t.$t("reports.report")))]),t._v(" "),s("h5",{staticClass:"id"},[t._v(t._s(t.$t("reports.id"))+": "+t._s(e.id))])]),t._v(" "),s("div",[s("el-tag",{staticClass:"report-tag",attrs:{type:t.getStateType(e.state),size:"large"}},[t._v(t._s(t.capitalizeFirstLetter(e.state)))]),t._v(" "),s("el-dropdown",{attrs:{trigger:"click"}},[s("el-button",{staticClass:"report-actions-button",attrs:{plain:"",size:"small",icon:"el-icon-edit"}},[t._v(t._s(t.$t("reports.changeState"))),s("i",{staticClass:"el-icon-arrow-down el-icon--right"})]),t._v(" "),s("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},["resolved"!==e.state?s("el-dropdown-item",{nativeOn:{click:function(s){return t.changeReportState("resolved",e.id)}}},[t._v(t._s(t.$t("reports.resolve")))]):t._e(),t._v(" "),"open"!==e.state?s("el-dropdown-item",{nativeOn:{click:function(s){return t.changeReportState("open",e.id)}}},[t._v(t._s(t.$t("reports.reopen")))]):t._e(),t._v(" "),"closed"!==e.state?s("el-dropdown-item",{nativeOn:{click:function(s){return t.changeReportState("closed",e.id)}}},[t._v(t._s(t.$t("reports.close")))]):t._e()],1)],1),t._v(" "),s("moderate-user-dropdown",{attrs:{account:e.account}})],1)]),t._v(" "),s("div",[s("el-divider",{staticClass:"divider"}),t._v(" "),s("span",{staticClass:"report-row-key"},[t._v(t._s(t.$t("reports.account"))+":")]),t._v(" "),t.accountExists(e.account,"avatar")&&t.accountExists(e.account,"display_name")?s("span",[s("img",{staticClass:"avatar-img",attrs:{src:e.account.avatar,alt:"avatar"}}),t._v(" "),e.account.deactivated?s("span",[t._v("\n "+t._s(e.account.display_name)+"\n "),s("span",{staticClass:"deactivated"},[t._v(" (deactivated)")])]):s("a",{staticClass:"account",attrs:{href:e.account.url,target:"_blank"}},[s("span",[t._v(t._s(e.account.display_name))])])]):s("span",{staticClass:"deactivated"},[t._v("("+t._s(t.$t("reports.notFound"))+")")])],1),t._v(" "),e.content&&e.content.length>0?s("div",[s("el-divider",{staticClass:"divider"}),t._v(" "),s("span",{staticClass:"report-row-key"},[t._v(t._s(t.$t("reports.content"))+":\n "),s("span",[t._v(t._s(e.content))])])],1):t._e(),t._v(" "),s("div",{style:t.showStatuses(e.statuses)?"":"margin-bottom:15px"},[s("el-divider",{staticClass:"divider"}),t._v(" "),s("span",{staticClass:"report-row-key"},[t._v(t._s(t.$t("reports.actor"))+":")]),t._v(" "),t.accountExists(e.actor,"avatar")&&t.accountExists(e.actor,"display_name")?s("span",[s("img",{staticClass:"avatar-img",attrs:{src:e.actor.avatar,alt:"avatar"}}),t._v(" "),s("a",{staticClass:"account",attrs:{href:e.actor.url,target:"_blank"}},[s("span",[t._v(t._s(e.actor.display_name))])])]):s("span",{staticClass:"deactivated"},[t._v("("+t._s(t.$t("reports.notFound"))+")")])],1),t._v(" "),t.showStatuses(e.statuses)?s("div",{staticClass:"statuses"},[s("el-collapse",[s("el-collapse-item",{attrs:{title:t.getStatusesTitle(e.statuses)}},t._l(e.statuses,function(a){return s("div",{key:a.id},[s("status",{attrs:{status:a,account:a.account.display_name?a.account:e.account,"show-checkbox":!1,page:t.currentPage}})],1)}),0)],1)],1):t._e(),t._v(" "),s("div",{staticClass:"report-notes"},[s("el-collapse",[s("el-collapse-item",{attrs:{title:t.getNotesTitle(e.notes)}},t._l(e.notes,function(t,a){return s("note-card",{key:a,attrs:{note:t,report:e}})}),1)],1),t._v(" "),s("div",{staticClass:"report-note-form"},[s("el-input",{attrs:{placeholder:t.$t("reports.leaveNote"),type:"textarea",rows:"2"},model:{value:t.notes[e.id],callback:function(s){t.$set(t.notes,e.id,s)},expression:"notes[report.id]"}}),t._v(" "),s("div",{staticClass:"report-post-note"},[s("el-button",{on:{click:function(s){return t.handleNewNote(e.id)}}},[t._v(t._s(t.$t("reports.postNote")))])],1)],1)],1)])],1)}),1),t._v(" "),t.loading?t._e():s("div",{staticClass:"reports-pagination"},[s("el-pagination",{attrs:{total:t.totalReportsCount,"current-page":t.currentPage,"page-size":t.pageSize,background:"",layout:"prev, pager, next"},on:{"current-change":t.handlePageChange}})],1)],1)},[],!1,null,null,null));m.options.__file="Report.vue";var g=m.exports,f=s("mSNy"),j={data:function(){return{filter:"open",options:[{value:"open",label:f.a.t("reportsFilter.open")},{value:"closed",label:f.a.t("reportsFilter.closed")},{value:"resolved",label:f.a.t("reportsFilter.resolved")}]}},created:function(){this.$store.dispatch("SetFilter",this.$data.filter)},methods:{toggleFilters:function(){this.$store.dispatch("SetFilter",this.$data.filter),this.$store.dispatch("ClearFetchedReports"),this.$store.dispatch("FetchReports",1)}}},b=(s("Eg1M"),Object(c.a)(j,function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("el-select",{staticClass:"select-field",attrs:{placeholder:t.$t("reportsFilter.inputPlaceholder"),clearable:"","value-key":"value"},on:{change:t.toggleFilters},model:{value:t.filter,callback:function(e){t.filter=e},expression:"filter"}},t._l(t.options,function(e){return s("el-option",{key:e.value,attrs:{label:e.label,value:e.value}},[t._v(t._s(e.label))])}),1)},[],!1,null,"ecc36f5a",null));b.options.__file="ReportsFilter.vue";var C=b.exports,y={components:{RebootButton:s("rIUS").a,Report:g,ReportsFilter:C},computed:{loading:function(){return this.$store.state.reports.loading},normalizedReportsCount:function(){return n()(this.$store.state.reports.totalReportsCount).format("0a")},reports:function(){return this.$store.state.reports.fetchedReports}},mounted:function(){this.$store.dispatch("GetNodeInfo"),this.$store.dispatch("NeedReboot"),this.$store.dispatch("FetchReports",1)}},k=(s("Lbbz"),Object(c.a)(y,function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"reports-container"},[s("div",{staticClass:"reports-header-container"},[s("h1",[t._v("\n "+t._s(t.$t("reports.reports"))+"\n "),s("span",{staticClass:"report-count"},[t._v("("+t._s(t.normalizedReportsCount)+")")])]),t._v(" "),s("reboot-button")],1),t._v(" "),s("div",{staticClass:"reports-filter-container"},[s("reports-filter")],1),t._v(" "),s("div",{staticClass:"block"},[s("report",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],attrs:{reports:t.reports}}),t._v(" "),0===t.reports.length?s("div",{staticClass:"no-reports-message"},[s("p",[t._v("There are no reports to display")])]):t._e()],1)])},[],!1,null,"fa601560",null));k.options.__file="index.vue";e.default=k.exports},cRgN:function(t,e,s){},ot3S:function(t,e,s){"use strict";var a=s("wd/R"),n=s.n(a),r={name:"Status",props:{account:{type:Object,required:!1,default:function(){return{}}},fetchStatusesByInstance:{type:Boolean,required:!1,default:!1},showCheckbox:{type:Boolean,required:!0,default:!1},status:{type:Object,required:!0},page:{type:Number,required:!1,default:0},userId:{type:String,required:!1,default:""},godmode:{type:Boolean,required:!1,default:!1}},data:function(){return{showHiddenStatus:!1}},methods:{capitalizeFirstLetter:function(t){return t.charAt(0).toUpperCase()+t.slice(1)},changeStatus:function(t,e,s){this.$store.dispatch("ChangeStatusScope",{statusId:t,isSensitive:e,visibility:s,reportCurrentPage:this.page,userId:this.userId,godmode:this.godmode,fetchStatusesByInstance:this.fetchStatusesByInstance})},deleteStatus:function(t){var e=this;this.$confirm("Are you sure you want to delete this status?","Warning",{confirmButtonText:"OK",cancelButtonText:"Cancel",type:"warning"}).then(function(){e.$store.dispatch("DeleteStatus",{statusId:t,reportCurrentPage:e.page,userId:e.userId,godmode:e.godmode,fetchStatusesByInstance:e.fetchStatusesByInstance}),e.$message({type:"success",message:"Delete completed"})}).catch(function(){e.$message({type:"info",message:"Delete canceled"})})},optionPercent:function(t,e){var s=t.options.reduce(function(t,e){return t+e.votes_count},0);return 0===s?0:+(e.votes_count/s*100).toFixed(1)},parseTimestamp:function(t){return n()(t).format("YYYY-MM-DD HH:mm")},handleStatusSelection:function(t){this.$emit("status-selection",t)}}},o=(s("Kw8l"),s("KHd+")),i=Object(o.a)(r,function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",[t.status.deleted?s("el-card",{staticClass:"status-card"},[s("div",{attrs:{slot:"header"},slot:"header"},[s("div",{staticClass:"status-header"},[s("div",{staticClass:"status-account-container"},[s("div",{staticClass:"status-account"},[s("h4",{staticClass:"status-deleted"},[t._v(t._s(t.$t("reports.statusDeleted")))])])])])]),t._v(" "),s("div",{staticClass:"status-body"},[t.status.content?s("span",{staticClass:"status-content",domProps:{innerHTML:t._s(t.status.content)}}):s("span",{staticClass:"status-without-content"},[t._v("no content")])]),t._v(" "),t.status.created_at?s("a",{staticClass:"account",attrs:{href:t.status.url,target:"_blank"}},[t._v("\n "+t._s(t.parseTimestamp(t.status.created_at))+"\n ")]):t._e()]):s("el-card",{staticClass:"status-card"},[s("div",{attrs:{slot:"header"},slot:"header"},[s("div",{staticClass:"status-header"},[s("div",{staticClass:"status-account-container"},[s("div",{staticClass:"status-account"},[t.showCheckbox?s("el-checkbox",{staticClass:"status-checkbox",on:{change:function(e){return t.handleStatusSelection(t.account)}}}):t._e(),t._v(" "),s("img",{staticClass:"status-avatar-img",attrs:{src:t.account.avatar}}),t._v(" "),t.account.deactivated?s("span",[s("h3",{staticClass:"status-account-name"},[t._v(t._s(t.account.display_name))]),t._v(" "),s("h3",{staticClass:"status-account-name deactivated"},[t._v(" (deactivated)")])]):s("a",{staticClass:"account",attrs:{href:t.account.url,target:"_blank"}},[s("h3",{staticClass:"status-account-name"},[t._v(t._s(t.account.display_name))])])],1)]),t._v(" "),s("div",{staticClass:"status-actions"},[t.status.sensitive?s("el-tag",{attrs:{type:"warning",size:"large"}},[t._v(t._s(t.$t("reports.sensitive")))]):t._e(),t._v(" "),s("el-tag",{attrs:{size:"large"}},[t._v(t._s(t.capitalizeFirstLetter(t.status.visibility)))]),t._v(" "),s("el-dropdown",{attrs:{trigger:"click"}},[s("el-button",{staticClass:"status-actions-button",attrs:{plain:"",size:"small",icon:"el-icon-edit"}},[t._v("\n "+t._s(t.$t("reports.changeScope"))),s("i",{staticClass:"el-icon-arrow-down el-icon--right"})]),t._v(" "),s("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[t.status.sensitive?t._e():s("el-dropdown-item",{nativeOn:{click:function(e){return t.changeStatus(t.status.id,!0,t.status.visibility)}}},[t._v("\n "+t._s(t.$t("reports.addSensitive"))+"\n ")]),t._v(" "),t.status.sensitive?s("el-dropdown-item",{nativeOn:{click:function(e){return t.changeStatus(t.status.id,!1,t.status.visibility)}}},[t._v("\n "+t._s(t.$t("reports.removeSensitive"))+"\n ")]):t._e(),t._v(" "),"public"!==t.status.visibility?s("el-dropdown-item",{nativeOn:{click:function(e){return t.changeStatus(t.status.id,t.status.sensitive,"public")}}},[t._v("\n "+t._s(t.$t("reports.public"))+"\n ")]):t._e(),t._v(" "),"private"!==t.status.visibility?s("el-dropdown-item",{nativeOn:{click:function(e){return t.changeStatus(t.status.id,t.status.sensitive,"private")}}},[t._v("\n "+t._s(t.$t("reports.private"))+"\n ")]):t._e(),t._v(" "),"unlisted"!==t.status.visibility?s("el-dropdown-item",{nativeOn:{click:function(e){return t.changeStatus(t.status.id,t.status.sensitive,"unlisted")}}},[t._v("\n "+t._s(t.$t("reports.unlisted"))+"\n ")]):t._e(),t._v(" "),s("el-dropdown-item",{nativeOn:{click:function(e){return t.deleteStatus(t.status.id)}}},[t._v("\n "+t._s(t.$t("reports.deleteStatus"))+"\n ")])],1)],1)],1)])]),t._v(" "),s("div",{staticClass:"status-body"},[t.status.spoiler_text?s("div",[s("strong",[t._v(t._s(t.status.spoiler_text))]),t._v(" "),t.showHiddenStatus?t._e():s("el-button",{staticClass:"show-more-button",attrs:{size:"mini"},on:{click:function(e){t.showHiddenStatus=!0}}},[t._v("Show more")]),t._v(" "),t.showHiddenStatus?s("el-button",{staticClass:"show-more-button",attrs:{size:"mini"},on:{click:function(e){t.showHiddenStatus=!1}}},[t._v("Show less")]):t._e(),t._v(" "),t.showHiddenStatus?s("div",[s("span",{staticClass:"status-content",domProps:{innerHTML:t._s(t.status.content)}}),t._v(" "),t.status.poll?s("div",{staticClass:"poll"},[s("ul",t._l(t.status.poll.options,function(e,a){return s("li",{key:a},[t._v("\n "+t._s(e.title)+"\n "),s("el-progress",{attrs:{percentage:t.optionPercent(t.status.poll,e)}})],1)}),0)]):t._e(),t._v(" "),t._l(t.status.media_attachments,function(t,e){return s("div",{key:e,staticClass:"image"},[s("img",{attrs:{src:t.preview_url}})])})],2):t._e()],1):t._e(),t._v(" "),t.status.spoiler_text?t._e():s("div",[s("span",{staticClass:"status-content",domProps:{innerHTML:t._s(t.status.content)}}),t._v(" "),t.status.poll?s("div",{staticClass:"poll"},[s("ul",t._l(t.status.poll.options,function(e,a){return s("li",{key:a},[t._v("\n "+t._s(e.title)+"\n "),s("el-progress",{attrs:{percentage:t.optionPercent(t.status.poll,e)}})],1)}),0)]):t._e(),t._v(" "),t._l(t.status.media_attachments,function(t,e){return s("div",{key:e,staticClass:"image"},[s("img",{attrs:{src:t.preview_url}})])})],2),t._v(" "),s("a",{staticClass:"account",attrs:{href:t.status.url,target:"_blank"}},[t._v("\n "+t._s(t.parseTimestamp(t.status.created_at))+"\n ")])])])],1)},[],!1,null,null,null);i.options.__file="index.vue";e.a=i.exports},rIUS:function(t,e,s){"use strict";var a=s("o0o1"),n=s.n(a),r=s("yXPU"),o=s.n(r),i=s("mSNy"),c={name:"RebootButton",computed:{needReboot:function(){return this.$store.state.app.needReboot}},methods:{restartApp:function(){var t=o()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("RestartApplication");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:i.a.t("settings.restartSuccess")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},l=s("KHd+"),u=Object(l.a)(c,function(){var t=this.$createElement,e=this._self._c||t;return this.needReboot?e("el-tooltip",{attrs:{content:this.$t("settings.restartApp"),placement:"bottom-end"}},[e("el-button",{staticClass:"reboot-button",attrs:{type:"warning"},on:{click:this.restartApp}},[e("span",[e("i",{staticClass:"el-icon-refresh"}),this._v("\n "+this._s(this.$t("settings.instanceReboot"))+"\n ")])])],1):this._e()},[],!1,null,null,null);u.options.__file="index.vue";e.a=u.exports},xdcp:function(t,e,s){}}]); -//# sourceMappingURL=chunk-970d.2457e066.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-970d.2457e066.js.map b/priv/static/adminfe/static/js/chunk-970d.2457e066.js.map deleted file mode 100644 index 6896407b0..000000000 --- a/priv/static/adminfe/static/js/chunk-970d.2457e066.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./src/views/reports/components/Report.vue?ad5f","webpack:///./src/views/reports/components/ReportsFilter.vue?a490","webpack:///./src/views/reports/components/NoteCard.vue?b93a","webpack:///./src/components/Status/index.vue?aecc","webpack:///./src/views/reports/index.vue?cda2","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/views/reports/index.vue?43f7","webpack:///./src/views/reports/components/NoteCard.vue?6205","webpack:///src/views/reports/components/NoteCard.vue","webpack:///./src/views/reports/components/NoteCard.vue","webpack:///./src/views/reports/components/NoteCard.vue?b0ed","webpack:///./src/views/reports/components/ModerateUserDropdown.vue?6745","webpack:///src/views/reports/components/ModerateUserDropdown.vue","webpack:///./src/views/reports/components/ModerateUserDropdown.vue","webpack:///./src/views/reports/components/ModerateUserDropdown.vue?65ad","webpack:///./src/views/reports/components/Report.vue?a764","webpack:///src/views/reports/components/Report.vue","webpack:///./src/views/reports/components/Report.vue","webpack:///./src/views/reports/components/Report.vue?b7da","webpack:///./src/views/reports/components/ReportsFilter.vue?e3b7","webpack:///src/views/reports/components/ReportsFilter.vue","webpack:///./src/views/reports/components/ReportsFilter.vue","webpack:///./src/views/reports/components/ReportsFilter.vue?f6ad","webpack:///./src/views/reports/index.vue?3bcc","webpack:///src/views/reports/index.vue","webpack:///./src/views/reports/index.vue","webpack:///./src/components/Status/index.vue?f9b2","webpack:///./src/components/Status/index.vue?6071","webpack:///src/components/Status/index.vue","webpack:///./src/components/Status/index.vue","webpack:///./src/components/RebootButton/index.vue?8db4","webpack:///./src/components/RebootButton/index.vue?2f45","webpack:///src/components/RebootButton/index.vue","webpack:///./src/components/RebootButton/index.vue"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Report_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ReportsFilter_vue_vue_type_style_index_0_id_ecc36f5a_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_NoteCard_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_fa601560_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","map","./af","./af.js","./ar","./ar-dz","./ar-dz.js","./ar-kw","./ar-kw.js","./ar-ly","./ar-ly.js","./ar-ma","./ar-ma.js","./ar-sa","./ar-sa.js","./ar-tn","./ar-tn.js","./ar.js","./az","./az.js","./be","./be.js","./bg","./bg.js","./bm","./bm.js","./bn","./bn.js","./bo","./bo.js","./br","./br.js","./bs","./bs.js","./ca","./ca.js","./cs","./cs.js","./cv","./cv.js","./cy","./cy.js","./da","./da.js","./de","./de-at","./de-at.js","./de-ch","./de-ch.js","./de.js","./dv","./dv.js","./el","./el.js","./en-SG","./en-SG.js","./en-au","./en-au.js","./en-ca","./en-ca.js","./en-gb","./en-gb.js","./en-ie","./en-ie.js","./en-il","./en-il.js","./en-nz","./en-nz.js","./eo","./eo.js","./es","./es-do","./es-do.js","./es-us","./es-us.js","./es.js","./et","./et.js","./eu","./eu.js","./fa","./fa.js","./fi","./fi.js","./fo","./fo.js","./fr","./fr-ca","./fr-ca.js","./fr-ch","./fr-ch.js","./fr.js","./fy","./fy.js","./ga","./ga.js","./gd","./gd.js","./gl","./gl.js","./gom-latn","./gom-latn.js","./gu","./gu.js","./he","./he.js","./hi","./hi.js","./hr","./hr.js","./hu","./hu.js","./hy-am","./hy-am.js","./id","./id.js","./is","./is.js","./it","./it-ch","./it-ch.js","./it.js","./ja","./ja.js","./jv","./jv.js","./ka","./ka.js","./kk","./kk.js","./km","./km.js","./kn","./kn.js","./ko","./ko.js","./ku","./ku.js","./ky","./ky.js","./lb","./lb.js","./lo","./lo.js","./lt","./lt.js","./lv","./lv.js","./me","./me.js","./mi","./mi.js","./mk","./mk.js","./ml","./ml.js","./mn","./mn.js","./mr","./mr.js","./ms","./ms-my","./ms-my.js","./ms.js","./mt","./mt.js","./my","./my.js","./nb","./nb.js","./ne","./ne.js","./nl","./nl-be","./nl-be.js","./nl.js","./nn","./nn.js","./pa-in","./pa-in.js","./pl","./pl.js","./pt","./pt-br","./pt-br.js","./pt.js","./ro","./ro.js","./ru","./ru.js","./sd","./sd.js","./se","./se.js","./si","./si.js","./sk","./sk.js","./sl","./sl.js","./sq","./sq.js","./sr","./sr-cyrl","./sr-cyrl.js","./sr.js","./ss","./ss.js","./sv","./sv.js","./sw","./sw.js","./ta","./ta.js","./te","./te.js","./tet","./tet.js","./tg","./tg.js","./th","./th.js","./tl-ph","./tl-ph.js","./tlh","./tlh.js","./tr","./tr.js","./tzl","./tzl.js","./tzm","./tzm-latn","./tzm-latn.js","./tzm.js","./ug-cn","./ug-cn.js","./uk","./uk.js","./ur","./ur.js","./uz","./uz-latn","./uz-latn.js","./uz.js","./vi","./vi.js","./x-pseudo","./x-pseudo.js","./yo","./yo.js","./zh-cn","./zh-cn.js","./zh-hk","./zh-hk.js","./zh-tw","./zh-tw.js","webpackContext","req","id","webpackContextResolve","o","e","Error","code","keys","Object","resolve","module","exports","components_NoteCardvue_type_script_lang_js_","name","props","report","type","required","note","methods","parseTimestamp","timestamp","moment_default","format","handleNoteDeletion","noteID","reportID","this","$store","dispatch","component","componentNormalizer","_vm","_h","$createElement","_c","_self","staticClass","attrs","slot","src","user","avatar","_v","_s","display_name","href","url","target","title","confirm-button-text","cancel-button-text","on","onConfirm","$event","size","$t","domProps","innerHTML","content","created_at","options","__file","NoteCard","components_ModerateUserDropdownvue_type_script_lang_js_","account","computed","tags","handleDeactivation","_ref","nickname","handleDeletion","showDeactivatedButton","state","toggleTag","tag","includes","users","ModerateUserDropdown_component","trigger","disabled","plain","icon","nativeOn","click","deactivated","_e","class","active-tag","divided","ModerateUserDropdown","components_Reportvue_type_script_lang_js_","components","Status","reports","Array","data","notes","loading","pageSize","totalReportsCount","currentPage","accountExists","key","changeReportState","capitalizeFirstLetter","str","charAt","toUpperCase","slice","getStateType","getStatusesTitle","statuses","arguments","length","undefined","concat","getNotesTitle","handleNewNote","handlePageChange","page","showStatuses","Report_component","_l","placement","alt","style","actor","status","show-checkbox","index","placeholder","rows","model","value","callback","$$v","$set","expression","total","current-page","page-size","background","layout","current-change","Report","components_ReportsFiltervue_type_script_lang_js_","filter","label","lang","t","created","$data","toggleFilters","ReportsFilter_component","clearable","value-key","change","item","ReportsFilter","views_reportsvue_type_script_lang_js_","RebootButton","normalizedReportsCount","numeral_default","fetchedReports","mounted","reports_component","directives","rawName","__webpack_exports__","components_Statusvue_type_script_lang_js_","default","fetchStatusesByInstance","Boolean","showCheckbox","Number","userId","String","godmode","showHiddenStatus","changeStatus","statusId","isSensitive","visibility","reportCurrentPage","deleteStatus","_this","$confirm","confirmButtonText","cancelButtonText","then","$message","message","catch","optionPercent","poll","pollOption","allVotes","reduce","acc","option","votes_count","toFixed","handleStatusSelection","$emit","deleted","sensitive","spoiler_text","percentage","attachment","preview_url","components_RebootButtonvue_type_script_lang_js_","needReboot","app","restartApp","_restartApp","asyncToGenerator_default","regenerator_default","a","mark","_callee","wrap","_context","prev","next","t0","abrupt","stop","apply"],"mappings":"wGAAA,IAAAA,EAAAC,EAAA,QAAAA,EAAAC,EAAAF,GAA0e,uFCA1e,IAAAG,EAAAF,EAAA,QAAAA,EAAAC,EAAAC,GAAygB,uCCAzgB,IAAAC,EAAAH,EAAA,QAAAA,EAAAC,EAAAE,GAA4e,qCCA5e,IAAAC,EAAAJ,EAAA,QAAAA,EAAAC,EAAAG,GAAud,qCCAvd,IAAAC,EAAAL,EAAA,QAAAA,EAAAC,EAAAI,GAA+e,wBCA/e,IAAAC,GACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,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","file":"static/js/chunk-970d.2457e066.js","sourcesContent":["import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Report.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Report.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReportsFilter.vue?vue&type=style&index=0&id=ecc36f5a&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReportsFilter.vue?vue&type=style&index=0&id=ecc36f5a&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NoteCard.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NoteCard.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=fa601560&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=fa601560&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","var map = {\n\t\"./af\": \"K/tc\",\n\t\"./af.js\": \"K/tc\",\n\t\"./ar\": \"jnO4\",\n\t\"./ar-dz\": \"o1bE\",\n\t\"./ar-dz.js\": \"o1bE\",\n\t\"./ar-kw\": \"Qj4J\",\n\t\"./ar-kw.js\": \"Qj4J\",\n\t\"./ar-ly\": \"HP3h\",\n\t\"./ar-ly.js\": \"HP3h\",\n\t\"./ar-ma\": \"CoRJ\",\n\t\"./ar-ma.js\": \"CoRJ\",\n\t\"./ar-sa\": \"gjCT\",\n\t\"./ar-sa.js\": \"gjCT\",\n\t\"./ar-tn\": \"bYM6\",\n\t\"./ar-tn.js\": \"bYM6\",\n\t\"./ar.js\": \"jnO4\",\n\t\"./az\": \"SFxW\",\n\t\"./az.js\": \"SFxW\",\n\t\"./be\": \"H8ED\",\n\t\"./be.js\": \"H8ED\",\n\t\"./bg\": \"hKrs\",\n\t\"./bg.js\": \"hKrs\",\n\t\"./bm\": \"p/rL\",\n\t\"./bm.js\": \"p/rL\",\n\t\"./bn\": \"kEOa\",\n\t\"./bn.js\": \"kEOa\",\n\t\"./bo\": \"0mo+\",\n\t\"./bo.js\": \"0mo+\",\n\t\"./br\": \"aIdf\",\n\t\"./br.js\": \"aIdf\",\n\t\"./bs\": \"JVSJ\",\n\t\"./bs.js\": \"JVSJ\",\n\t\"./ca\": \"1xZ4\",\n\t\"./ca.js\": \"1xZ4\",\n\t\"./cs\": \"PA2r\",\n\t\"./cs.js\": \"PA2r\",\n\t\"./cv\": \"A+xa\",\n\t\"./cv.js\": \"A+xa\",\n\t\"./cy\": \"l5ep\",\n\t\"./cy.js\": \"l5ep\",\n\t\"./da\": \"DxQv\",\n\t\"./da.js\": \"DxQv\",\n\t\"./de\": \"tGlX\",\n\t\"./de-at\": \"s+uk\",\n\t\"./de-at.js\": \"s+uk\",\n\t\"./de-ch\": \"u3GI\",\n\t\"./de-ch.js\": \"u3GI\",\n\t\"./de.js\": \"tGlX\",\n\t\"./dv\": \"WYrj\",\n\t\"./dv.js\": \"WYrj\",\n\t\"./el\": \"jUeY\",\n\t\"./el.js\": \"jUeY\",\n\t\"./en-SG\": \"zavE\",\n\t\"./en-SG.js\": \"zavE\",\n\t\"./en-au\": \"Dmvi\",\n\t\"./en-au.js\": \"Dmvi\",\n\t\"./en-ca\": \"OIYi\",\n\t\"./en-ca.js\": \"OIYi\",\n\t\"./en-gb\": \"Oaa7\",\n\t\"./en-gb.js\": \"Oaa7\",\n\t\"./en-ie\": \"4dOw\",\n\t\"./en-ie.js\": \"4dOw\",\n\t\"./en-il\": \"czMo\",\n\t\"./en-il.js\": \"czMo\",\n\t\"./en-nz\": \"b1Dy\",\n\t\"./en-nz.js\": \"b1Dy\",\n\t\"./eo\": \"Zduo\",\n\t\"./eo.js\": \"Zduo\",\n\t\"./es\": \"iYuL\",\n\t\"./es-do\": \"CjzT\",\n\t\"./es-do.js\": \"CjzT\",\n\t\"./es-us\": \"Vclq\",\n\t\"./es-us.js\": \"Vclq\",\n\t\"./es.js\": \"iYuL\",\n\t\"./et\": \"7BjC\",\n\t\"./et.js\": \"7BjC\",\n\t\"./eu\": \"D/JM\",\n\t\"./eu.js\": \"D/JM\",\n\t\"./fa\": \"jfSC\",\n\t\"./fa.js\": \"jfSC\",\n\t\"./fi\": \"gekB\",\n\t\"./fi.js\": \"gekB\",\n\t\"./fo\": \"ByF4\",\n\t\"./fo.js\": \"ByF4\",\n\t\"./fr\": \"nyYc\",\n\t\"./fr-ca\": \"2fjn\",\n\t\"./fr-ca.js\": \"2fjn\",\n\t\"./fr-ch\": \"Dkky\",\n\t\"./fr-ch.js\": \"Dkky\",\n\t\"./fr.js\": \"nyYc\",\n\t\"./fy\": \"cRix\",\n\t\"./fy.js\": \"cRix\",\n\t\"./ga\": \"USCx\",\n\t\"./ga.js\": \"USCx\",\n\t\"./gd\": \"9rRi\",\n\t\"./gd.js\": \"9rRi\",\n\t\"./gl\": \"iEDd\",\n\t\"./gl.js\": \"iEDd\",\n\t\"./gom-latn\": \"DKr+\",\n\t\"./gom-latn.js\": \"DKr+\",\n\t\"./gu\": \"4MV3\",\n\t\"./gu.js\": \"4MV3\",\n\t\"./he\": \"x6pH\",\n\t\"./he.js\": \"x6pH\",\n\t\"./hi\": \"3E1r\",\n\t\"./hi.js\": \"3E1r\",\n\t\"./hr\": \"S6ln\",\n\t\"./hr.js\": \"S6ln\",\n\t\"./hu\": \"WxRl\",\n\t\"./hu.js\": \"WxRl\",\n\t\"./hy-am\": \"1rYy\",\n\t\"./hy-am.js\": \"1rYy\",\n\t\"./id\": \"UDhR\",\n\t\"./id.js\": \"UDhR\",\n\t\"./is\": \"BVg3\",\n\t\"./is.js\": \"BVg3\",\n\t\"./it\": \"bpih\",\n\t\"./it-ch\": \"bxKX\",\n\t\"./it-ch.js\": \"bxKX\",\n\t\"./it.js\": \"bpih\",\n\t\"./ja\": \"B55N\",\n\t\"./ja.js\": \"B55N\",\n\t\"./jv\": \"tUCv\",\n\t\"./jv.js\": \"tUCv\",\n\t\"./ka\": \"IBtZ\",\n\t\"./ka.js\": \"IBtZ\",\n\t\"./kk\": \"bXm7\",\n\t\"./kk.js\": \"bXm7\",\n\t\"./km\": \"6B0Y\",\n\t\"./km.js\": \"6B0Y\",\n\t\"./kn\": \"PpIw\",\n\t\"./kn.js\": \"PpIw\",\n\t\"./ko\": \"Ivi+\",\n\t\"./ko.js\": \"Ivi+\",\n\t\"./ku\": \"JCF/\",\n\t\"./ku.js\": \"JCF/\",\n\t\"./ky\": \"lgnt\",\n\t\"./ky.js\": \"lgnt\",\n\t\"./lb\": \"RAwQ\",\n\t\"./lb.js\": \"RAwQ\",\n\t\"./lo\": \"sp3z\",\n\t\"./lo.js\": \"sp3z\",\n\t\"./lt\": \"JvlW\",\n\t\"./lt.js\": \"JvlW\",\n\t\"./lv\": \"uXwI\",\n\t\"./lv.js\": \"uXwI\",\n\t\"./me\": \"KTz0\",\n\t\"./me.js\": \"KTz0\",\n\t\"./mi\": \"aIsn\",\n\t\"./mi.js\": \"aIsn\",\n\t\"./mk\": \"aQkU\",\n\t\"./mk.js\": \"aQkU\",\n\t\"./ml\": \"AvvY\",\n\t\"./ml.js\": \"AvvY\",\n\t\"./mn\": \"lYtQ\",\n\t\"./mn.js\": \"lYtQ\",\n\t\"./mr\": \"Ob0Z\",\n\t\"./mr.js\": \"Ob0Z\",\n\t\"./ms\": \"6+QB\",\n\t\"./ms-my\": \"ZAMP\",\n\t\"./ms-my.js\": \"ZAMP\",\n\t\"./ms.js\": \"6+QB\",\n\t\"./mt\": \"G0Uy\",\n\t\"./mt.js\": \"G0Uy\",\n\t\"./my\": \"honF\",\n\t\"./my.js\": \"honF\",\n\t\"./nb\": \"bOMt\",\n\t\"./nb.js\": \"bOMt\",\n\t\"./ne\": \"OjkT\",\n\t\"./ne.js\": \"OjkT\",\n\t\"./nl\": \"+s0g\",\n\t\"./nl-be\": \"2ykv\",\n\t\"./nl-be.js\": \"2ykv\",\n\t\"./nl.js\": \"+s0g\",\n\t\"./nn\": \"uEye\",\n\t\"./nn.js\": \"uEye\",\n\t\"./pa-in\": \"8/+R\",\n\t\"./pa-in.js\": \"8/+R\",\n\t\"./pl\": \"jVdC\",\n\t\"./pl.js\": \"jVdC\",\n\t\"./pt\": \"8mBD\",\n\t\"./pt-br\": \"0tRk\",\n\t\"./pt-br.js\": \"0tRk\",\n\t\"./pt.js\": \"8mBD\",\n\t\"./ro\": \"lyxo\",\n\t\"./ro.js\": \"lyxo\",\n\t\"./ru\": \"lXzo\",\n\t\"./ru.js\": \"lXzo\",\n\t\"./sd\": \"Z4QM\",\n\t\"./sd.js\": \"Z4QM\",\n\t\"./se\": \"//9w\",\n\t\"./se.js\": \"//9w\",\n\t\"./si\": \"7aV9\",\n\t\"./si.js\": \"7aV9\",\n\t\"./sk\": \"e+ae\",\n\t\"./sk.js\": \"e+ae\",\n\t\"./sl\": \"gVVK\",\n\t\"./sl.js\": \"gVVK\",\n\t\"./sq\": \"yPMs\",\n\t\"./sq.js\": \"yPMs\",\n\t\"./sr\": \"zx6S\",\n\t\"./sr-cyrl\": \"E+lV\",\n\t\"./sr-cyrl.js\": \"E+lV\",\n\t\"./sr.js\": \"zx6S\",\n\t\"./ss\": \"Ur1D\",\n\t\"./ss.js\": \"Ur1D\",\n\t\"./sv\": \"X709\",\n\t\"./sv.js\": \"X709\",\n\t\"./sw\": \"dNwA\",\n\t\"./sw.js\": \"dNwA\",\n\t\"./ta\": \"PeUW\",\n\t\"./ta.js\": \"PeUW\",\n\t\"./te\": \"XLvN\",\n\t\"./te.js\": \"XLvN\",\n\t\"./tet\": \"V2x9\",\n\t\"./tet.js\": \"V2x9\",\n\t\"./tg\": \"Oxv6\",\n\t\"./tg.js\": \"Oxv6\",\n\t\"./th\": \"EOgW\",\n\t\"./th.js\": \"EOgW\",\n\t\"./tl-ph\": \"Dzi0\",\n\t\"./tl-ph.js\": \"Dzi0\",\n\t\"./tlh\": \"z3Vd\",\n\t\"./tlh.js\": \"z3Vd\",\n\t\"./tr\": \"DoHr\",\n\t\"./tr.js\": \"DoHr\",\n\t\"./tzl\": \"z1FC\",\n\t\"./tzl.js\": \"z1FC\",\n\t\"./tzm\": \"wQk9\",\n\t\"./tzm-latn\": \"tT3J\",\n\t\"./tzm-latn.js\": \"tT3J\",\n\t\"./tzm.js\": \"wQk9\",\n\t\"./ug-cn\": \"YRex\",\n\t\"./ug-cn.js\": \"YRex\",\n\t\"./uk\": \"raLr\",\n\t\"./uk.js\": \"raLr\",\n\t\"./ur\": \"UpQW\",\n\t\"./ur.js\": \"UpQW\",\n\t\"./uz\": \"Loxo\",\n\t\"./uz-latn\": \"AQ68\",\n\t\"./uz-latn.js\": \"AQ68\",\n\t\"./uz.js\": \"Loxo\",\n\t\"./vi\": \"KSF8\",\n\t\"./vi.js\": \"KSF8\",\n\t\"./x-pseudo\": \"/X5v\",\n\t\"./x-pseudo.js\": \"/X5v\",\n\t\"./yo\": \"fzPg\",\n\t\"./yo.js\": \"fzPg\",\n\t\"./zh-cn\": \"XDpg\",\n\t\"./zh-cn.js\": \"XDpg\",\n\t\"./zh-hk\": \"SatO\",\n\t\"./zh-hk.js\": \"SatO\",\n\t\"./zh-tw\": \"kOpN\",\n\t\"./zh-tw.js\": \"kOpN\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"RnhZ\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"reports-container\"},[_c('div',{staticClass:\"reports-header-container\"},[_c('h1',[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.reports'))+\"\\n \"),_c('span',{staticClass:\"report-count\"},[_vm._v(\"(\"+_vm._s(_vm.normalizedReportsCount)+\")\")])]),_vm._v(\" \"),_c('reboot-button')],1),_vm._v(\" \"),_c('div',{staticClass:\"reports-filter-container\"},[_c('reports-filter')],1),_vm._v(\" \"),_c('div',{staticClass:\"block\"},[_c('report',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],attrs:{\"reports\":_vm.reports}}),_vm._v(\" \"),(_vm.reports.length === 0)?_c('div',{staticClass:\"no-reports-message\"},[_c('p',[_vm._v(\"There are no reports to display\")])]):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NoteCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NoteCard.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./NoteCard.vue?vue&type=template&id=3e6c4f7e&\"\nimport script from \"./NoteCard.vue?vue&type=script&lang=js&\"\nexport * from \"./NoteCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NoteCard.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"NoteCard.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-card',{staticClass:\"note-card\"},[_c('div',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('div',{staticClass:\"note-header\"},[_c('div',{staticClass:\"note-actor-container\"},[_c('div',{staticClass:\"note-actor\"},[_c('img',{staticClass:\"note-avatar-img\",attrs:{\"src\":_vm.note.user.avatar}}),_vm._v(\" \"),_c('h3',{staticClass:\"note-actor-name\"},[_vm._v(_vm._s(_vm.note.user.display_name))])]),_vm._v(\" \"),_c('a',{attrs:{\"href\":_vm.note.user.url,\"target\":\"_blank\"}},[_vm._v(\"\\n @\"+_vm._s(_vm.note.user.display_name)+\"\\n \")])]),_vm._v(\" \"),_c('div',[_c('el-popconfirm',{attrs:{\"title\":\"Are you sure to delete this?\",\"confirm-button-text\":\"Yes\",\"cancel-button-text\":\"No\"},on:{\"onConfirm\":function($event){return _vm.handleNoteDeletion(_vm.note.id, _vm.report.id)}}},[_c('el-button',{attrs:{\"slot\":\"reference\",\"size\":\"mini\"},slot:\"reference\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.deleteNote'))+\"\\n \")])],1)],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"note-body\"},[_c('span',{staticClass:\"note-content\",domProps:{\"innerHTML\":_vm._s(_vm.note.content)}}),_vm._v(\"\\n \"+_vm._s(_vm.parseTimestamp(_vm.note.created_at))+\"\\n \")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerateUserDropdown.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerateUserDropdown.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./ModerateUserDropdown.vue?vue&type=template&id=bcf0134c&\"\nimport script from \"./ModerateUserDropdown.vue?vue&type=script&lang=js&\"\nexport * from \"./ModerateUserDropdown.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"ModerateUserDropdown.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dropdown',{attrs:{\"trigger\":\"click\"}},[_c('el-button',{attrs:{\"disabled\":!_vm.account.id,\"plain\":\"\",\"size\":\"small\",\"icon\":\"el-icon-files\"}},[_vm._v(_vm._s(_vm.$t('reports.moderateUser'))+\"\\n \"),_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"})]),_vm._v(\" \"),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[(_vm.showDeactivatedButton(_vm.account))?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleDeactivation(_vm.account)}}},[_vm._v(\"\\n \"+_vm._s(_vm.account.deactivated ? _vm.$t('users.activateAccount') : _vm.$t('users.deactivateAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showDeactivatedButton(_vm.account.id))?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleDeletion(_vm.account.id)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.deleteAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.tags.includes('force_nsfw') },attrs:{\"divided\":true},nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.account, 'force_nsfw')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.forceNsfw'))+\"\\n \"),(_vm.tags.includes('force_nsfw'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.tags.includes('strip_media') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.account, 'strip_media')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.stripMedia'))+\"\\n \"),(_vm.tags.includes('strip_media'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.tags.includes('force_unlisted') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.account, 'force_unlisted')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.forceUnlisted'))+\"\\n \"),(_vm.tags.includes('force_unlisted'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.tags.includes('sandbox') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.account, 'sandbox')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.sandbox'))+\"\\n \"),(_vm.tags.includes('sandbox'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),(_vm.account.local)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.tags.includes('disable_remote_subscription') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.account, 'disable_remote_subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableRemoteSubscription'))+\"\\n \"),(_vm.tags.includes('disable_remote_subscription'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.account.local)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.tags.includes('disable_any_subscription') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.account, 'disable_any_subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableAnySubscription'))+\"\\n \"),(_vm.tags.includes('disable_any_subscription'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Report.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Report.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Report.vue?vue&type=template&id=2161c30a&\"\nimport script from \"./Report.vue?vue&type=script&lang=js&\"\nexport * from \"./Report.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Report.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Report.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('el-timeline',{staticClass:\"reports-timeline\"},_vm._l((_vm.reports),function(report){return _c('el-timeline-item',{key:report.id,staticClass:\"timeline-item-container\",attrs:{\"timestamp\":_vm.parseTimestamp(report.created_at),\"placement\":\"top\"}},[_c('el-card',{staticClass:\"report\"},[_c('div',{staticClass:\"report-header-container\"},[_c('div',{staticClass:\"title-container\"},[(_vm.accountExists(report.account, 'display_name'))?_c('h3',{staticClass:\"report-title\"},[_vm._v(_vm._s(_vm.$t('reports.reportOn'))+\" \"+_vm._s(report.account.display_name))]):_c('h3',{staticClass:\"report-title\"},[_vm._v(_vm._s(_vm.$t('reports.report')))]),_vm._v(\" \"),_c('h5',{staticClass:\"id\"},[_vm._v(_vm._s(_vm.$t('reports.id'))+\": \"+_vm._s(report.id))])]),_vm._v(\" \"),_c('div',[_c('el-tag',{staticClass:\"report-tag\",attrs:{\"type\":_vm.getStateType(report.state),\"size\":\"large\"}},[_vm._v(_vm._s(_vm.capitalizeFirstLetter(report.state)))]),_vm._v(\" \"),_c('el-dropdown',{attrs:{\"trigger\":\"click\"}},[_c('el-button',{staticClass:\"report-actions-button\",attrs:{\"plain\":\"\",\"size\":\"small\",\"icon\":\"el-icon-edit\"}},[_vm._v(_vm._s(_vm.$t('reports.changeState'))),_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"})]),_vm._v(\" \"),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[(report.state !== 'resolved')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeReportState('resolved', report.id)}}},[_vm._v(_vm._s(_vm.$t('reports.resolve')))]):_vm._e(),_vm._v(\" \"),(report.state !== 'open')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeReportState('open', report.id)}}},[_vm._v(_vm._s(_vm.$t('reports.reopen')))]):_vm._e(),_vm._v(\" \"),(report.state !== 'closed')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeReportState('closed', report.id)}}},[_vm._v(_vm._s(_vm.$t('reports.close')))]):_vm._e()],1)],1),_vm._v(\" \"),_c('moderate-user-dropdown',{attrs:{\"account\":report.account}})],1)]),_vm._v(\" \"),_c('div',[_c('el-divider',{staticClass:\"divider\"}),_vm._v(\" \"),_c('span',{staticClass:\"report-row-key\"},[_vm._v(_vm._s(_vm.$t('reports.account'))+\":\")]),_vm._v(\" \"),(_vm.accountExists(report.account, 'avatar') && _vm.accountExists(report.account, 'display_name'))?_c('span',[_c('img',{staticClass:\"avatar-img\",attrs:{\"src\":report.account.avatar,\"alt\":\"avatar\"}}),_vm._v(\" \"),(!report.account.deactivated)?_c('a',{staticClass:\"account\",attrs:{\"href\":report.account.url,\"target\":\"_blank\"}},[_c('span',[_vm._v(_vm._s(report.account.display_name))])]):_c('span',[_vm._v(\"\\n \"+_vm._s(report.account.display_name)+\"\\n \"),_c('span',{staticClass:\"deactivated\"},[_vm._v(\" (deactivated)\")])])]):_c('span',{staticClass:\"deactivated\"},[_vm._v(\"(\"+_vm._s(_vm.$t('reports.notFound'))+\")\")])],1),_vm._v(\" \"),(report.content && report.content.length > 0)?_c('div',[_c('el-divider',{staticClass:\"divider\"}),_vm._v(\" \"),_c('span',{staticClass:\"report-row-key\"},[_vm._v(_vm._s(_vm.$t('reports.content'))+\":\\n \"),_c('span',[_vm._v(_vm._s(report.content))])])],1):_vm._e(),_vm._v(\" \"),_c('div',{style:(_vm.showStatuses(report.statuses) ? '' : 'margin-bottom:15px')},[_c('el-divider',{staticClass:\"divider\"}),_vm._v(\" \"),_c('span',{staticClass:\"report-row-key\"},[_vm._v(_vm._s(_vm.$t('reports.actor'))+\":\")]),_vm._v(\" \"),(_vm.accountExists(report.actor, 'avatar') && _vm.accountExists(report.actor, 'display_name'))?_c('span',[_c('img',{staticClass:\"avatar-img\",attrs:{\"src\":report.actor.avatar,\"alt\":\"avatar\"}}),_vm._v(\" \"),_c('a',{staticClass:\"account\",attrs:{\"href\":report.actor.url,\"target\":\"_blank\"}},[_c('span',[_vm._v(_vm._s(report.actor.display_name))])])]):_c('span',{staticClass:\"deactivated\"},[_vm._v(\"(\"+_vm._s(_vm.$t('reports.notFound'))+\")\")])],1),_vm._v(\" \"),(_vm.showStatuses(report.statuses))?_c('div',{staticClass:\"statuses\"},[_c('el-collapse',[_c('el-collapse-item',{attrs:{\"title\":_vm.getStatusesTitle(report.statuses)}},_vm._l((report.statuses),function(status){return _c('div',{key:status.id},[_c('status',{attrs:{\"status\":status,\"account\":status.account.display_name ? status.account : report.account,\"show-checkbox\":false,\"page\":_vm.currentPage}})],1)}),0)],1)],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"report-notes\"},[_c('el-collapse',[_c('el-collapse-item',{attrs:{\"title\":_vm.getNotesTitle(report.notes)}},_vm._l((report.notes),function(note,index){return _c('note-card',{key:index,attrs:{\"note\":note,\"report\":report}})}),1)],1),_vm._v(\" \"),_c('div',{staticClass:\"report-note-form\"},[_c('el-input',{attrs:{\"placeholder\":_vm.$t('reports.leaveNote'),\"type\":\"textarea\",\"rows\":\"2\"},model:{value:(_vm.notes[report.id]),callback:function ($$v) {_vm.$set(_vm.notes, report.id, $$v)},expression:\"notes[report.id]\"}}),_vm._v(\" \"),_c('div',{staticClass:\"report-post-note\"},[_c('el-button',{on:{\"click\":function($event){return _vm.handleNewNote(report.id)}}},[_vm._v(_vm._s(_vm.$t('reports.postNote')))])],1)],1)],1)])],1)}),1),_vm._v(\" \"),(!_vm.loading)?_c('div',{staticClass:\"reports-pagination\"},[_c('el-pagination',{attrs:{\"total\":_vm.totalReportsCount,\"current-page\":_vm.currentPage,\"page-size\":_vm.pageSize,\"background\":\"\",\"layout\":\"prev, pager, next\"},on:{\"current-change\":_vm.handlePageChange}})],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReportsFilter.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReportsFilter.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./ReportsFilter.vue?vue&type=template&id=ecc36f5a&scoped=true&\"\nimport script from \"./ReportsFilter.vue?vue&type=script&lang=js&\"\nexport * from \"./ReportsFilter.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ReportsFilter.vue?vue&type=style&index=0&id=ecc36f5a&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ecc36f5a\",\n null\n \n)\n\ncomponent.options.__file = \"ReportsFilter.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-select',{staticClass:\"select-field\",attrs:{\"placeholder\":_vm.$t('reportsFilter.inputPlaceholder'),\"clearable\":\"\",\"value-key\":\"value\"},on:{\"change\":_vm.toggleFilters},model:{value:(_vm.filter),callback:function ($$v) {_vm.filter=$$v},expression:\"filter\"}},_vm._l((_vm.options),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}},[_vm._v(_vm._s(item.label))])}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=fa601560&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=fa601560&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"fa601560\",\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(!_vm.status.deleted)?_c('el-card',{staticClass:\"status-card\"},[_c('div',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('div',{staticClass:\"status-header\"},[_c('div',{staticClass:\"status-account-container\"},[_c('div',{staticClass:\"status-account\"},[(_vm.showCheckbox)?_c('el-checkbox',{staticClass:\"status-checkbox\",on:{\"change\":function($event){return _vm.handleStatusSelection(_vm.account)}}}):_vm._e(),_vm._v(\" \"),_c('img',{staticClass:\"status-avatar-img\",attrs:{\"src\":_vm.account.avatar}}),_vm._v(\" \"),(!_vm.account.deactivated)?_c('a',{staticClass:\"account\",attrs:{\"href\":_vm.account.url,\"target\":\"_blank\"}},[_c('h3',{staticClass:\"status-account-name\"},[_vm._v(_vm._s(_vm.account.display_name))])]):_c('span',[_c('h3',{staticClass:\"status-account-name\"},[_vm._v(_vm._s(_vm.account.display_name))]),_vm._v(\" \"),_c('h3',{staticClass:\"status-account-name deactivated\"},[_vm._v(\" (deactivated)\")])])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"status-actions\"},[(_vm.status.sensitive)?_c('el-tag',{attrs:{\"type\":\"warning\",\"size\":\"large\"}},[_vm._v(_vm._s(_vm.$t('reports.sensitive')))]):_vm._e(),_vm._v(\" \"),_c('el-tag',{attrs:{\"size\":\"large\"}},[_vm._v(_vm._s(_vm.capitalizeFirstLetter(_vm.status.visibility)))]),_vm._v(\" \"),_c('el-dropdown',{attrs:{\"trigger\":\"click\"}},[_c('el-button',{staticClass:\"status-actions-button\",attrs:{\"plain\":\"\",\"size\":\"small\",\"icon\":\"el-icon-edit\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.changeScope'))),_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"})]),_vm._v(\" \"),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[(!_vm.status.sensitive)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeStatus(_vm.status.id, true, _vm.status.visibility)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.addSensitive'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.status.sensitive)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeStatus(_vm.status.id, false, _vm.status.visibility)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.removeSensitive'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.status.visibility !== 'public')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeStatus(_vm.status.id, _vm.status.sensitive, 'public')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.public'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.status.visibility !== 'private')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeStatus(_vm.status.id, _vm.status.sensitive, 'private')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.private'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.status.visibility !== 'unlisted')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeStatus(_vm.status.id, _vm.status.sensitive, 'unlisted')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.unlisted'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.deleteStatus(_vm.status.id)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.deleteStatus'))+\"\\n \")])],1)],1)],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"status-body\"},[(_vm.status.spoiler_text)?_c('div',[_c('strong',[_vm._v(_vm._s(_vm.status.spoiler_text))]),_vm._v(\" \"),(!_vm.showHiddenStatus)?_c('el-button',{staticClass:\"show-more-button\",attrs:{\"size\":\"mini\"},on:{\"click\":function($event){_vm.showHiddenStatus = true}}},[_vm._v(\"Show more\")]):_vm._e(),_vm._v(\" \"),(_vm.showHiddenStatus)?_c('el-button',{staticClass:\"show-more-button\",attrs:{\"size\":\"mini\"},on:{\"click\":function($event){_vm.showHiddenStatus = false}}},[_vm._v(\"Show less\")]):_vm._e(),_vm._v(\" \"),(_vm.showHiddenStatus)?_c('div',[_c('span',{staticClass:\"status-content\",domProps:{\"innerHTML\":_vm._s(_vm.status.content)}}),_vm._v(\" \"),(_vm.status.poll)?_c('div',{staticClass:\"poll\"},[_c('ul',_vm._l((_vm.status.poll.options),function(option,index){return _c('li',{key:index},[_vm._v(\"\\n \"+_vm._s(option.title)+\"\\n \"),_c('el-progress',{attrs:{\"percentage\":_vm.optionPercent(_vm.status.poll, option)}})],1)}),0)]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.status.media_attachments),function(attachment,index){return _c('div',{key:index,staticClass:\"image\"},[_c('img',{attrs:{\"src\":attachment.preview_url}})])})],2):_vm._e()],1):_vm._e(),_vm._v(\" \"),(!_vm.status.spoiler_text)?_c('div',[_c('span',{staticClass:\"status-content\",domProps:{\"innerHTML\":_vm._s(_vm.status.content)}}),_vm._v(\" \"),(_vm.status.poll)?_c('div',{staticClass:\"poll\"},[_c('ul',_vm._l((_vm.status.poll.options),function(option,index){return _c('li',{key:index},[_vm._v(\"\\n \"+_vm._s(option.title)+\"\\n \"),_c('el-progress',{attrs:{\"percentage\":_vm.optionPercent(_vm.status.poll, option)}})],1)}),0)]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.status.media_attachments),function(attachment,index){return _c('div',{key:index,staticClass:\"image\"},[_c('img',{attrs:{\"src\":attachment.preview_url}})])})],2):_vm._e(),_vm._v(\" \"),_c('a',{staticClass:\"account\",attrs:{\"href\":_vm.status.url,\"target\":\"_blank\"}},[_vm._v(\"\\n \"+_vm._s(_vm.parseTimestamp(_vm.status.created_at))+\"\\n \")])])]):_c('el-card',{staticClass:\"status-card\"},[_c('div',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('div',{staticClass:\"status-header\"},[_c('div',{staticClass:\"status-account-container\"},[_c('div',{staticClass:\"status-account\"},[_c('h4',{staticClass:\"status-deleted\"},[_vm._v(_vm._s(_vm.$t('reports.statusDeleted')))])])])])]),_vm._v(\" \"),_c('div',{staticClass:\"status-body\"},[(_vm.status.content)?_c('span',{staticClass:\"status-content\",domProps:{\"innerHTML\":_vm._s(_vm.status.content)}}):_c('span',{staticClass:\"status-without-content\"},[_vm._v(\"no content\")])]),_vm._v(\" \"),(_vm.status.created_at)?_c('a',{staticClass:\"account\",attrs:{\"href\":_vm.status.url,\"target\":\"_blank\"}},[_vm._v(\"\\n \"+_vm._s(_vm.parseTimestamp(_vm.status.created_at))+\"\\n \")]):_vm._e()])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=0fdc1bba&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.needReboot)?_c('el-tooltip',{attrs:{\"content\":_vm.$t('settings.restartApp'),\"placement\":\"bottom-end\"}},[_c('el-button',{staticClass:\"reboot-button\",attrs:{\"type\":\"warning\"},on:{\"click\":_vm.restartApp}},[_c('span',[_c('i',{staticClass:\"el-icon-refresh\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.instanceReboot'))+\"\\n \")])])],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=53cfaf1d&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-c5f4.304479e7.js b/priv/static/adminfe/static/js/chunk-c5f4.304479e7.js new file mode 100644 index 000000000..4220621be --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-c5f4.304479e7.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-c5f4"],{"26YS":function(e,t,a){"use strict";a.r(t);var o=a("o0o1"),s=a.n(o),i=a("yXPU"),c=a.n(i),l=a("MVZn"),n=a.n(l),r=a("mm8V"),m={props:{host:{type:String,required:!0},packName:{type:String,required:!0},shortcode:{type:String,required:!0},file:{type:String,required:!0},isLocal:{type:Boolean,required:!0}},data:function(){return{newShortcode:null,newFile:null,copyToLocalPackName:null,copyPopoverVisible:!1,copyToShortcode:"",copyToFilename:""}},computed:{emojiName:{get:function(){return null!==this.newShortcode?this.newShortcode:this.shortcode},set:function(e){this.newShortcode=e}},emojiFile:{get:function(){return null!==this.newFile?this.newFile:this.file},set:function(e){this.newFile=e}},isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device},localPacks:function(){return this.$store.state.emojiPacks.localPacks},remoteInstance:function(){return new URL(this.$store.state.emojiPacks.remoteInstance).host}},methods:{update:function(){var e=c()(s.a.mark(function e(){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:e.prev=0,this.$store.dispatch("UpdateEmojiFile",{packName:this.packName,shortcode:this.shortcode,newShortcode:this.emojiName,newFilename:this.emojiFile,force:!0}),e.next=7;break;case 4:return e.prev=4,e.t0=e.catch(0),e.abrupt("return");case 7:this.newShortcode=null,this.newFile=null,this.$store.dispatch("ReloadEmoji");case 10:case"end":return e.stop()}},e,this,[[0,4]])}));return function(){return e.apply(this,arguments)}}(),remove:function(){var e=this;this.$confirm("This will delete the emoji, are you sure?","Warning",{confirmButtonText:"Yes, delete the emoji",cancelButtonText:"No, leave it be",type:"warning"}).then(function(){e.$store.dispatch("DeleteEmojiFile",{packName:e.packName,shortcode:e.shortcode}).then(function(){e.newShortcode=null,e.newFile=null,e.$store.dispatch("ReloadEmoji")})})},copyToLocal:function(){try{this.$store.dispatch("AddNewEmojiFile",{packName:this.copyToLocalPackName,file:this.addressOfEmojiInPack(this.remoteInstance,this.packName,this.file),shortcode:""!==this.copyToShortcode.trim()?this.copyToShortcode.trim():this.shortcode,filename:""!==this.copyToFilename.trim()?this.copyToFilename.trim():this.file})}catch(e){return}this.copyToLocalPackName=null,this.copyToLocalVisible=!1,this.copyToShortcode="",this.copyToFilename="",this.$store.dispatch("ReloadEmoji")},addressOfEmojiInPack:r.b}},p=(a("4ySm"),a("KHd+")),d=Object(p.a)(m,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",[e.isLocal?a("div",{class:e.isMobile?"emoji-container-flex":"emoji-container-grid"},[a("img",{staticClass:"emoji-preview-img",attrs:{src:e.addressOfEmojiInPack(e.host,e.packName,e.file)}}),e._v(" "),a("el-input",{staticClass:"emoji-info",attrs:{placeholder:e.$t("emoji.shortcode")},model:{value:e.emojiName,callback:function(t){e.emojiName=t},expression:"emojiName"}}),e._v(" "),a("el-input",{staticClass:"emoji-info",attrs:{placeholder:e.$t("emoji.file")},model:{value:e.emojiFile,callback:function(t){e.emojiFile=t},expression:"emojiFile"}}),e._v(" "),a("div",{staticClass:"emoji-buttons"},[a("el-button",{attrs:{type:"primary"},on:{click:e.update}},[e._v(e._s(e.$t("emoji.update")))]),e._v(" "),a("el-button",{staticClass:"remove-emoji-button",on:{click:e.remove}},[e._v(e._s(e.$t("emoji.remove")))])],1)],1):e._e(),e._v(" "),e.isLocal?e._e():a("div",{class:e.isMobile?"emoji-container-flex":"remote-emoji-container-grid"},[a("img",{staticClass:"emoji-preview-img",attrs:{src:e.addressOfEmojiInPack(e.remoteInstance,e.packName,e.file)}}),e._v(" "),a("el-input",{staticClass:"emoji-info",attrs:{value:e.emojiName,placeholder:e.$t("emoji.shortcode")}}),e._v(" "),a("el-input",{staticClass:"emoji-info",attrs:{value:e.emojiFile,placeholder:e.$t("emoji.file")}}),e._v(" "),a("el-popover",{staticClass:"copy-pack-container",attrs:{placement:"left-start","popper-class":"copy-popover"},model:{value:e.copyPopoverVisible,callback:function(t){e.copyPopoverVisible=t},expression:"copyPopoverVisible"}},[a("p",[e._v(e._s(e.$t("emoji.selectLocalPack")))]),e._v(" "),a("el-select",{staticClass:"copy-pack-select",attrs:{placeholder:e.$t("emoji.localPack")},model:{value:e.copyToLocalPackName,callback:function(t){e.copyToLocalPackName=t},expression:"copyToLocalPackName"}},e._l(e.localPacks,function(e,t){return a("el-option",{key:t,attrs:{label:t,value:t}})}),1),e._v(" "),a("p",[e._v(e._s(e.$t("emoji.specifyShortcode")))]),e._v(" "),a("el-input",{attrs:{placeholder:e.$t("emoji.leaveEmptyShortcode")},model:{value:e.copyToShortcode,callback:function(t){e.copyToShortcode=t},expression:"copyToShortcode"}}),e._v(" "),a("p",[e._v(e._s(e.$t("emoji.specifyFilename")))]),e._v(" "),a("el-input",{attrs:{placeholder:e.$t("emoji.leaveEmptyFilename")},model:{value:e.copyToFilename,callback:function(t){e.copyToFilename=t},expression:"copyToFilename"}}),e._v(" "),a("el-button",{staticClass:"copy-to-local-pack-button",attrs:{disabled:!e.copyToLocalPackName,type:"primary"},on:{click:e.copyToLocal}},[e._v(e._s(e.$t("emoji.copy")))]),e._v(" "),a("el-button",{staticClass:"emoji-button",attrs:{slot:"reference",type:"primary"},slot:"reference"},[e._v(e._s(e.$t("emoji.copyToLocalPack")))])],1)],1)])},[],!1,null,null,null);d.options.__file="SingleEmojiEditor.vue";var u=d.exports,h={props:{packName:{type:String,required:!0}},data:function(){return{shortcode:"",imageUploadURL:"",customFileName:""}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device}},methods:{uploadEmoji:function(){var e=c()(s.a.mark(function e(t){var a;return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.file,e.prev=1,this.$store.dispatch("AddNewEmojiFile",{packName:this.packName,file:a||this.imageUploadURL,shortcode:this.shortcode,filename:this.customFileName}),e.next=8;break;case 5:return e.prev=5,e.t0=e.catch(1),e.abrupt("return");case 8:this.shortcode="",this.imageUploadURL="",this.customFileName="",this.$store.dispatch("ReloadEmoji");case 12:case"end":return e.stop()}},e,this,[[1,5]])}));return function(t){return e.apply(this,arguments)}}()}},k=(a("IVv3"),Object(p.a)(h,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("el-form",{staticClass:"new-emoji-uploader-form",attrs:{"label-position":e.isMobile?"top":"left","label-width":"130px",size:"small"}},[a("el-form-item",{attrs:{label:e.$t("emoji.shortcode")}},[a("el-input",{attrs:{placeholder:e.$t("emoji.optional")},model:{value:e.shortcode,callback:function(t){e.shortcode=t},expression:"shortcode"}})],1),e._v(" "),a("el-form-item",{attrs:{label:e.$t("emoji.customFilename")}},[a("el-input",{attrs:{placeholder:e.$t("emoji.optional")},model:{value:e.customFileName,callback:function(t){e.customFileName=t},expression:"customFileName"}})],1),e._v(" "),a("el-form-item",{attrs:{label:e.$t("emoji.uploadFile")}},[a("div",{staticClass:"upload-file-url"},[a("el-input",{attrs:{placeholder:e.$t("emoji.url")},model:{value:e.imageUploadURL,callback:function(t){e.imageUploadURL=t},expression:"imageUploadURL"}}),e._v(" "),a("el-button",{staticClass:"upload-button",attrs:{type:"primary"},on:{click:e.uploadEmoji}},[e._v(e._s(e.$t("emoji.upload")))])],1),e._v(" "),a("div",{staticClass:"upload-container"},[a("p",{staticClass:"text"},[e._v("or")]),e._v(" "),a("el-upload",{attrs:{"http-request":e.uploadEmoji,multiple:!1,"show-file-list":!1,action:"add"}},[a("el-button",{attrs:{type:"primary"}},[e._v(e._s(e.$t("emoji.clickToUpload")))])],1)],1)])],1)},[],!1,null,null,null));k.options.__file="NewEmojiUploader.vue";var f={components:{SingleEmojiEditor:u,NewEmojiUploader:k.exports},props:{name:{type:String,required:!0},pack:{type:Object,required:!0},host:{type:String,required:!0},isLocal:{type:Boolean,required:!0}},data:function(){return{showPackContent:[]}},computed:{isMobile:function(){return"mobile"===this.$store.state.app.device},isTablet:function(){return"tablet"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"90px":(this.isTablet,"155px")},share:{get:function(){return this.pack.pack["share-files"]},set:function(e){this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"share-files",value:e})}},homepage:{get:function(){return this.pack.pack.homepage},set:function(e){this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"homepage",value:e})}},description:{get:function(){return this.pack.pack.description},set:function(e){this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"description",value:e})}},license:{get:function(){return this.pack.pack.license},set:function(e){this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"license",value:e})}},fallbackSrc:{get:function(){return this.pack.pack["fallback-src"]},set:function(e){""!==e.trim()?this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"fallback-src",value:e}):(this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"fallback-src",value:null}),this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"fallback-src-sha256",value:null}))}}},methods:{deletePack:function(){var e=this;this.$confirm("This will delete the pack, are you sure?","Warning",{confirmButtonText:"Yes, delete the pack",cancelButtonText:"No, leave it be",type:"warning"}).then(function(){e.$store.dispatch("DeletePack",{name:e.name}).then(function(){return e.$store.dispatch("ReloadEmoji")}).then(function(){return e.$store.dispatch("SetLocalEmojiPacks")})}).catch(function(){})},savePackMetadata:function(){this.$store.dispatch("SavePackMetadata",{packName:this.name})}}},v=(a("LE4i"),Object(p.a)(f,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("el-collapse-item",{staticClass:"has-background",attrs:{title:e.name,name:e.name}},[a("el-form",{staticClass:"emoji-pack-metadata",attrs:{"label-width":e.labelWidth,"label-position":"left",size:"small"}},[a("el-form-item",{attrs:{label:e.$t("emoji.sharePack")}},[a("el-switch",{model:{value:e.share,callback:function(t){e.share=t},expression:"share"}})],1),e._v(" "),a("el-form-item",{attrs:{label:e.$t("emoji.homepage")}},[a("el-input",{model:{value:e.homepage,callback:function(t){e.homepage=t},expression:"homepage"}})],1),e._v(" "),a("el-form-item",{attrs:{label:e.$t("emoji.description")}},[a("el-input",{attrs:{type:"textarea"},model:{value:e.description,callback:function(t){e.description=t},expression:"description"}})],1),e._v(" "),a("el-form-item",{attrs:{label:e.$t("emoji.license")}},[a("el-input",{model:{value:e.license,callback:function(t){e.license=t},expression:"license"}})],1),e._v(" "),a("el-form-item",{attrs:{label:e.$t("emoji.fallbackSrc")}},[a("el-input",{model:{value:e.fallbackSrc,callback:function(t){e.fallbackSrc=t},expression:"fallbackSrc"}})],1),e._v(" "),e.fallbackSrc&&""!==e.fallbackSrc.trim()?a("el-form-item",{attrs:{label:e.$t("emoji.fallbackSrcSha")}},[e._v("\n "+e._s(e.pack.pack["fallback-src-sha256"])+"\n ")]):e._e()],1),e._v(" "),a("div",{staticClass:"pack-button-container"},[a("div",{staticClass:"save-pack-button-container"},[a("el-button",{staticClass:"save-pack-button",attrs:{type:"primary"},on:{click:e.savePackMetadata}},[e._v(e._s(e.$t("emoji.saveMetadata")))]),e._v(" "),a("el-button",{staticClass:"delete-pack-button",on:{click:e.deletePack}},[e._v(e._s(e.$t("emoji.deletePack")))])],1),e._v(" "),a("div",{staticClass:"download-pack-button-container"},[e.pack.pack["can-download"]?a("el-link",{attrs:{href:"//"+e.host+"/api/pleroma/emoji/packs/"+e.name+"/download_shared",underline:!1,type:"primary",target:"_blank"}},[a("el-button",{staticClass:"download-archive"},[e._v(e._s(e.$t("emoji.downloadPackArchive")))])],1):e._e()],1)]),e._v(" "),a("el-collapse",{staticClass:"contents-collapse",model:{value:e.showPackContent,callback:function(t){e.showPackContent=t},expression:"showPackContent"}},[e.isLocal?a("el-collapse-item",{staticClass:"no-background",attrs:{title:e.$t("emoji.addNewEmoji"),name:"addEmoji"}},[a("new-emoji-uploader",{attrs:{"pack-name":e.name}})],1):e._e(),e._v(" "),e.pack.files.length>0?a("el-collapse-item",{staticClass:"no-background",attrs:{title:e.$t("emoji.manageEmoji"),name:"manageEmoji"}},e._l(e.pack.files,function(t){var o=t[0],s=t[1];return a("single-emoji-editor",{key:o,attrs:{host:e.host,"pack-name":e.name,shortcode:o,file:s,"is-local":e.isLocal}})}),1):e._e()],1)],1)},[],!1,null,null,null));v.options.__file="LocalEmojiPack.vue";var b=v.exports,j={components:{SingleEmojiEditor:u},props:{name:{type:String,required:!0},pack:{type:Object,required:!0},host:{type:String,required:!0},isLocal:{type:Boolean,required:!0}},data:function(){return{showPackContent:[],downloadSharedAs:""}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device},isTablet:function(){return"tablet"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"90px":(this.isTablet,"120px")},loadRemotePack:function(){return this.$store.state.emojiPacks.activeCollapseItems.includes(this.name)},remoteInstanceAddress:function(){return this.$store.state.emojiPacks.remoteInstance},share:{get:function(){return this.pack.pack["share-files"]},set:function(e){this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"share-files",value:e})}},homepage:{get:function(){return this.pack.pack.homepage},set:function(e){this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"homepage",value:e})}},description:{get:function(){return this.pack.pack.description},set:function(e){this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"description",value:e})}},license:{get:function(){return this.pack.pack.license},set:function(e){this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"license",value:e})}},fallbackSrc:{get:function(){return this.pack.pack["fallback-src"]},set:function(e){""!==e.trim()?this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"fallback-src",value:e}):(this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"fallback-src",value:null}),this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"fallback-src-sha256",value:null}))}}},methods:{downloadFromInstance:function(){var e=this;this.$store.dispatch("DownloadFrom",{instanceAddress:this.remoteInstanceAddress,packName:this.name,as:this.downloadSharedAs}).then(function(){return e.$store.dispatch("ReloadEmoji")}).then(function(){return e.$store.dispatch("SetLocalEmojiPacks")})}}},_=(a("Zd0x"),Object(p.a)(j,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("el-collapse-item",{staticClass:"has-background",attrs:{title:e.name,name:e.name}},[e.loadRemotePack?a("div",[a("el-form",{staticClass:"emoji-pack-metadata remote-pack-metadata",attrs:{"label-width":e.labelWidth,"label-position":"left",size:"small"}},[a("el-form-item",{attrs:{label:e.$t("emoji.sharePack")}},[a("el-switch",{attrs:{disabled:""},model:{value:e.share,callback:function(t){e.share=t},expression:"share"}})],1),e._v(" "),e.homepage?a("el-form-item",{attrs:{label:e.$t("emoji.homepage")}},[a("span",[e._v(e._s(e.homepage))])]):e._e(),e._v(" "),e.description?a("el-form-item",{attrs:{label:e.$t("emoji.description")}},[a("span",[e._v(e._s(e.description))])]):e._e(),e._v(" "),e.license?a("el-form-item",{attrs:{label:e.$t("emoji.license")}},[a("span",[e._v(e._s(e.license))])]):e._e(),e._v(" "),e.fallbackSrc?a("el-form-item",{attrs:{label:e.$t("emoji.fallbackSrc")}},[a("span",[e._v(e._s(e.fallbackSrc))])]):e._e(),e._v(" "),e.fallbackSrc&&""!==e.fallbackSrc.trim()?a("el-form-item",{attrs:{label:e.$t("emoji.fallbackSrcSha")}},[e._v("\n "+e._s(e.pack.pack["fallback-src-sha256"])+"\n ")]):e._e(),e._v(" "),a("el-form-item",[e.pack.pack["can-download"]?a("el-link",{attrs:{href:e.pack.pack["fallback-src"],underline:!1,type:"primary",target:"_blank"}},[a("el-button",{staticClass:"download-archive"},[e._v(e._s(e.$t("emoji.downloadPackArchive")))])],1):e._e()],1)],1),e._v(" "),a("el-collapse",{staticClass:"contents-collapse",model:{value:e.showPackContent,callback:function(t){e.showPackContent=t},expression:"showPackContent"}},[e.pack.files.length>0?a("el-collapse-item",{staticClass:"no-background",attrs:{title:e.$t("emoji.manageEmoji"),name:"manageEmoji"}},e._l(e.pack.files,function(t){var o=t[0],s=t[1];return a("single-emoji-editor",{key:o,attrs:{host:e.host,"pack-name":e.name,shortcode:o,file:s,"is-local":e.isLocal}})}),1):e._e(),e._v(" "),a("el-collapse-item",{staticClass:"no-background",attrs:{title:e.$t("emoji.downloadPack"),name:"downloadPack"}},[a("p",[e._v("\n "+e._s(e.$t("emoji.thisWillDownload"))+' "'+e._s(e.name)+'" '+e._s(e.$t("emoji.downloadToCurrentInstance"))+'\n "'+e._s(""===e.downloadSharedAs.trim()?e.name:e.downloadSharedAs)+'" ('+e._s(e.$t("emoji.canBeChanged"))+").\n "+e._s(e.$t("emoji.willBeUsable"))+".\n ")]),e._v(" "),a("div",{staticClass:"download-shared-pack"},[a("el-input",{attrs:{placeholder:e.$t("emoji.downloadAsOptional")},model:{value:e.downloadSharedAs,callback:function(t){e.downloadSharedAs=t},expression:"downloadSharedAs"}}),e._v(" "),a("el-button",{staticClass:"download-shared-pack-button",attrs:{type:"primary"},on:{click:e.downloadFromInstance}},[e._v("\n "+e._s(e.isDesktop?e.$t("emoji.downloadSharedPack"):e.$t("emoji.downloadSharedPackMobile"))+"\n ")])],1)])],1)],1):e._e()])},[],!1,null,null,null));_.options.__file="RemoteEmojiPack.vue";var $=_.exports,P=a("mSNy"),y={components:{LocalEmojiPack:b,RebootButton:a("rIUS").a,RemoteEmojiPack:$},data:function(){return{newPackName:"",activeLocalPack:[],activeRemotePack:[],fullscreenLoading:!1}},computed:{isMobile:function(){return"mobile"===this.$store.state.app.device},isTablet:function(){return"tablet"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"105px":this.isTablet?"180px":"240px"},localPacks:function(){return this.$store.state.emojiPacks.localPacks},remoteInstanceAddress:{get:function(){return this.$store.state.emojiPacks.remoteInstance},set:function(e){this.$store.dispatch("SetRemoteInstance",e)}},remotePacks:function(){return this.$store.state.emojiPacks.remotePacks}},mounted:function(){this.$store.dispatch("GetNodeInfo"),this.$store.dispatch("NeedReboot"),this.refreshLocalPacks()},methods:{createLocalPack:function(){var e=this;this.$store.dispatch("CreatePack",{name:this.newPackName}).then(function(){e.newPackName="",e.$store.dispatch("SetLocalEmojiPacks"),e.$store.dispatch("ReloadEmoji")})},importFromFS:function(){var e=this;this.$store.dispatch("ImportFromFS").then(function(){e.$store.dispatch("SetLocalEmojiPacks"),e.$store.dispatch("ReloadEmoji")})},sortPack:function(e){var t=Object.keys(e.files).sort(function(e,t){return e.localeCompare(t)}).map(function(t){return[t,e.files[t]]});return n()({},e,{files:t})},refreshLocalPacks:function(){try{this.$store.dispatch("SetLocalEmojiPacks")}catch(e){return}this.$message({type:"success",message:P.a.t("emoji.refreshed")})},refreshRemotePacks:function(){var e=c()(s.a.mark(function e(){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return this.fullscreenLoading=!0,e.next=3,this.$store.dispatch("SetRemoteEmojiPacks",{remoteInstance:this.remoteInstanceAddress});case 3:this.fullscreenLoading=!1;case 4:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}(),reloadEmoji:function(){var e=c()(s.a.mark(function e(){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:e.prev=0,this.$store.dispatch("ReloadEmoji"),e.next=7;break;case 4:return e.prev=4,e.t0=e.catch(0),e.abrupt("return");case 7:this.$message({type:"success",message:P.a.t("emoji.reloaded")});case 8:case"end":return e.stop()}},e,this,[[0,4]])}));return function(){return e.apply(this,arguments)}}(),setActiveCollapseItems:function(e){var t=Array.isArray(e)?e:[e];this.$store.dispatch("SetActiveCollapseItems",t)}}},w=(a("smuD"),Object(p.a)(y,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"emoji-packs"},[a("div",{staticClass:"emoji-packs-header"},[a("h1",[e._v(e._s(e.$t("emoji.emojiPacks")))]),e._v(" "),a("reboot-button")],1),e._v(" "),a("div",{staticClass:"emoji-header-container"},[a("div",{staticClass:"emoji-packs-header-button-container"},[a("el-button",{staticClass:"reload-emoji-button",attrs:{type:"primary"},on:{click:e.reloadEmoji}},[e._v(e._s(e.$t("emoji.reloadEmoji")))]),e._v(" "),a("el-tooltip",{attrs:{content:e.$t("emoji.importEmojiTooltip"),effects:"dark",placement:"bottom","popper-class":"import-pack-button"}},[a("el-button",{attrs:{type:"primary"},on:{click:e.importFromFS}},[e._v("\n "+e._s(e.$t("emoji.importPacks"))+"\n ")])],1)],1)]),e._v(" "),a("el-divider",{staticClass:"divider"}),e._v(" "),a("el-form",{staticClass:"emoji-packs-form",attrs:{"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:e.$t("emoji.localPacks")}},[a("el-button",{attrs:{type:"primary"},on:{click:e.refreshLocalPacks}},[e._v(e._s(e.$t("emoji.refreshLocalPacks")))])],1),e._v(" "),a("el-form-item",{attrs:{label:e.$t("emoji.createLocalPack")}},[a("div",{staticClass:"create-pack"},[a("el-input",{attrs:{placeholder:e.$t("users.name")},model:{value:e.newPackName,callback:function(t){e.newPackName=t},expression:"newPackName"}}),e._v(" "),a("el-button",{staticClass:"create-pack-button",attrs:{disabled:""===e.newPackName.trim()},on:{click:e.createLocalPack}},[e._v("\n "+e._s(e.$t("users.create"))+"\n ")])],1)]),e._v(" "),Object.keys(e.localPacks).length>0?a("el-form-item",{attrs:{label:e.$t("emoji.packs")}},e._l(e.localPacks,function(t,o){return a("el-collapse",{key:o,model:{value:e.activeLocalPack,callback:function(t){e.activeLocalPack=t},expression:"activeLocalPack"}},[a("local-emoji-pack",{attrs:{name:o,pack:e.sortPack(t),host:e.$store.getters.authHost,"is-local":!0}})],1)}),1):e._e(),e._v(" "),a("el-divider",{staticClass:"divider"}),e._v(" "),a("el-form-item",{attrs:{label:e.$t("emoji.remotePacks")}},[a("div",{staticClass:"create-pack"},[a("el-input",{attrs:{placeholder:e.$t("emoji.remoteInstanceAddress")},model:{value:e.remoteInstanceAddress,callback:function(t){e.remoteInstanceAddress=t},expression:"remoteInstanceAddress"}}),e._v(" "),a("el-button",{directives:[{name:"loading",rawName:"v-loading.fullscreen.lock",value:e.fullscreenLoading,expression:"fullscreenLoading",modifiers:{fullscreen:!0,lock:!0}}],staticClass:"create-pack-button",attrs:{disabled:""===e.remoteInstanceAddress.trim()},on:{click:e.refreshRemotePacks}},[e._v("\n "+e._s(e.$t("emoji.refreshRemote"))+"\n ")])],1)]),e._v(" "),Object.keys(e.remotePacks).length>0?a("el-form-item",{attrs:{label:e.$t("emoji.packs")}},e._l(e.remotePacks,function(t,o){return a("el-collapse",{key:o,on:{change:e.setActiveCollapseItems},model:{value:e.activeRemotePack,callback:function(t){e.activeRemotePack=t},expression:"activeRemotePack"}},[a("remote-emoji-pack",{attrs:{name:o,pack:e.sortPack(t),host:e.$store.getters.authHost,"is-local":!1}})],1)}),1):e._e()],1)],1)},[],!1,null,null,null));w.options.__file="index.vue";t.default=w.exports},"4ySm":function(e,t,a){"use strict";var o=a("n6gr");a.n(o).a},"6lYW":function(e,t,a){},HBNe:function(e,t,a){},IVv3:function(e,t,a){"use strict";var o=a("6lYW");a.n(o).a},LE4i:function(e,t,a){"use strict";var o=a("HBNe");a.n(o).a},QZC8:function(e,t,a){},Zd0x:function(e,t,a){"use strict";var o=a("eDOw");a.n(o).a},eDOw:function(e,t,a){},n6gr:function(e,t,a){},smuD:function(e,t,a){"use strict";var o=a("QZC8");a.n(o).a}}]); +//# sourceMappingURL=chunk-c5f4.304479e7.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-c5f4.304479e7.js.map b/priv/static/adminfe/static/js/chunk-c5f4.304479e7.js.map new file mode 100644 index 000000000..2ab89731d --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-c5f4.304479e7.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/emojiPacks/index.vue?f3a6","webpack:///./src/views/emojiPacks/components/SingleEmojiEditor.vue?5a7e","webpack:///src/views/emojiPacks/components/SingleEmojiEditor.vue","webpack:///./src/views/emojiPacks/components/SingleEmojiEditor.vue","webpack:///./src/views/emojiPacks/components/SingleEmojiEditor.vue?9e34","webpack:///./src/views/emojiPacks/components/NewEmojiUploader.vue?1c09","webpack:///src/views/emojiPacks/components/NewEmojiUploader.vue","webpack:///./src/views/emojiPacks/components/NewEmojiUploader.vue","webpack:///./src/views/emojiPacks/components/NewEmojiUploader.vue?e7aa","webpack:///./src/views/emojiPacks/components/LocalEmojiPack.vue?88cd","webpack:///src/views/emojiPacks/components/LocalEmojiPack.vue","webpack:///./src/views/emojiPacks/components/LocalEmojiPack.vue","webpack:///./src/views/emojiPacks/components/LocalEmojiPack.vue?a6c1","webpack:///./src/views/emojiPacks/components/RemoteEmojiPack.vue?4c9f","webpack:///src/views/emojiPacks/components/RemoteEmojiPack.vue","webpack:///./src/views/emojiPacks/components/RemoteEmojiPack.vue","webpack:///./src/views/emojiPacks/components/RemoteEmojiPack.vue?d192","webpack:///./src/views/emojiPacks/index.vue?a332","webpack:///src/views/emojiPacks/index.vue","webpack:///./src/views/emojiPacks/index.vue","webpack:///./src/views/emojiPacks/components/SingleEmojiEditor.vue?bc44","webpack:///./src/views/emojiPacks/components/NewEmojiUploader.vue?d98f","webpack:///./src/views/emojiPacks/components/LocalEmojiPack.vue?2a38","webpack:///./src/views/emojiPacks/components/RemoteEmojiPack.vue?118a","webpack:///./src/views/emojiPacks/index.vue?7b86"],"names":["components_SingleEmojiEditorvue_type_script_lang_js_","props","host","type","String","required","packName","shortcode","file","isLocal","Boolean","data","newShortcode","newFile","copyToLocalPackName","copyPopoverVisible","copyToShortcode","copyToFilename","computed","emojiName","get","this","set","val","emojiFile","isDesktop","$store","state","app","device","isMobile","localPacks","emojiPacks","remoteInstance","URL","methods","update","_update","asyncToGenerator_default","regenerator_default","a","mark","_callee","wrap","_context","prev","next","dispatch","newFilename","force","t0","abrupt","stop","apply","arguments","remove","_this","$confirm","confirmButtonText","cancelButtonText","then","copyToLocal","addressOfEmojiInPack","trim","filename","e","copyToLocalVisible","component","Object","componentNormalizer","_vm","_h","$createElement","_c","_self","class","staticClass","attrs","src","_v","placeholder","$t","model","value","callback","$$v","expression","on","click","_s","_e","placement","popper-class","_l","_pack","name","key","label","disabled","slot","options","__file","SingleEmojiEditor","components_NewEmojiUploadervue_type_script_lang_js_","imageUploadURL","customFileName","uploadEmoji","_uploadEmoji","_ref","_x","NewEmojiUploader_component","label-position","label-width","size","http-request","multiple","show-file-list","action","components_LocalEmojiPackvue_type_script_lang_js_","components","NewEmojiUploader","pack","showPackContent","isTablet","labelWidth","share","homepage","description","license","fallbackSrc","deletePack","catch","savePackMetadata","LocalEmojiPack_component","title","href","underline","target","pack-name","files","length","ref","is-local","LocalEmojiPack","components_RemoteEmojiPackvue_type_script_lang_js_","downloadSharedAs","loadRemotePack","activeCollapseItems","includes","remoteInstanceAddress","downloadFromInstance","instanceAddress","as","RemoteEmojiPack_component","RemoteEmojiPack","views_emojiPacksvue_type_script_lang_js_","RebootButton","newPackName","activeLocalPack","activeRemotePack","fullscreenLoading","instance","remotePacks","mounted","refreshLocalPacks","createLocalPack","importFromFS","_this2","sortPack","orderedFiles","keys","sort","b","localeCompare","map","objectSpread_default","$message","message","lang","t","refreshRemotePacks","_refreshRemotePacks","reloadEmoji","_reloadEmoji","_callee2","_context2","setActiveCollapseItems","activeItems","items","Array","isArray","emojiPacks_component","content","effects","getters","authHost","directives","rawName","modifiers","fullscreen","lock","change","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_SingleEmojiEditor_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_NewEmojiUploader_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_LocalEmojiPack_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_RemoteEmojiPack_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__"],"mappings":"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","file":"static/js/chunk-c5f4.304479e7.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"emoji-packs\"},[_c('div',{staticClass:\"emoji-packs-header\"},[_c('h1',[_vm._v(_vm._s(_vm.$t('emoji.emojiPacks')))]),_vm._v(\" \"),_c('reboot-button')],1),_vm._v(\" \"),_c('div',{staticClass:\"emoji-header-container\"},[_c('div',{staticClass:\"emoji-packs-header-button-container\"},[_c('el-button',{staticClass:\"reload-emoji-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.reloadEmoji}},[_vm._v(_vm._s(_vm.$t('emoji.reloadEmoji')))]),_vm._v(\" \"),_c('el-tooltip',{attrs:{\"content\":_vm.$t('emoji.importEmojiTooltip'),\"effects\":\"dark\",\"placement\":\"bottom\",\"popper-class\":\"import-pack-button\"}},[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.importFromFS}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('emoji.importPacks'))+\"\\n \")])],1)],1)]),_vm._v(\" \"),_c('el-divider',{staticClass:\"divider\"}),_vm._v(\" \"),_c('el-form',{staticClass:\"emoji-packs-form\",attrs:{\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.localPacks')}},[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.refreshLocalPacks}},[_vm._v(_vm._s(_vm.$t('emoji.refreshLocalPacks')))])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.createLocalPack')}},[_c('div',{staticClass:\"create-pack\"},[_c('el-input',{attrs:{\"placeholder\":_vm.$t('users.name')},model:{value:(_vm.newPackName),callback:function ($$v) {_vm.newPackName=$$v},expression:\"newPackName\"}}),_vm._v(\" \"),_c('el-button',{staticClass:\"create-pack-button\",attrs:{\"disabled\":_vm.newPackName.trim() === ''},on:{\"click\":_vm.createLocalPack}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.create'))+\"\\n \")])],1)]),_vm._v(\" \"),(Object.keys(_vm.localPacks).length > 0)?_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.packs')}},_vm._l((_vm.localPacks),function(pack,name){return _c('el-collapse',{key:name,model:{value:(_vm.activeLocalPack),callback:function ($$v) {_vm.activeLocalPack=$$v},expression:\"activeLocalPack\"}},[_c('local-emoji-pack',{attrs:{\"name\":name,\"pack\":_vm.sortPack(pack),\"host\":_vm.$store.getters.authHost,\"is-local\":true}})],1)}),1):_vm._e(),_vm._v(\" \"),_c('el-divider',{staticClass:\"divider\"}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.remotePacks')}},[_c('div',{staticClass:\"create-pack\"},[_c('el-input',{attrs:{\"placeholder\":_vm.$t('emoji.remoteInstanceAddress')},model:{value:(_vm.remoteInstanceAddress),callback:function ($$v) {_vm.remoteInstanceAddress=$$v},expression:\"remoteInstanceAddress\"}}),_vm._v(\" \"),_c('el-button',{directives:[{name:\"loading\",rawName:\"v-loading.fullscreen.lock\",value:(_vm.fullscreenLoading),expression:\"fullscreenLoading\",modifiers:{\"fullscreen\":true,\"lock\":true}}],staticClass:\"create-pack-button\",attrs:{\"disabled\":_vm.remoteInstanceAddress.trim() === ''},on:{\"click\":_vm.refreshRemotePacks}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('emoji.refreshRemote'))+\"\\n \")])],1)]),_vm._v(\" \"),(Object.keys(_vm.remotePacks).length > 0)?_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.packs')}},_vm._l((_vm.remotePacks),function(pack,name){return _c('el-collapse',{key:name,on:{\"change\":_vm.setActiveCollapseItems},model:{value:(_vm.activeRemotePack),callback:function ($$v) {_vm.activeRemotePack=$$v},expression:\"activeRemotePack\"}},[_c('remote-emoji-pack',{attrs:{\"name\":name,\"pack\":_vm.sortPack(pack),\"host\":_vm.$store.getters.authHost,\"is-local\":false}})],1)}),1):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SingleEmojiEditor.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SingleEmojiEditor.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./SingleEmojiEditor.vue?vue&type=template&id=5d2cbcfa&\"\nimport script from \"./SingleEmojiEditor.vue?vue&type=script&lang=js&\"\nexport * from \"./SingleEmojiEditor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SingleEmojiEditor.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"SingleEmojiEditor.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.isLocal)?_c('div',{class:_vm.isMobile ? 'emoji-container-flex' : 'emoji-container-grid'},[_c('img',{staticClass:\"emoji-preview-img\",attrs:{\"src\":_vm.addressOfEmojiInPack(_vm.host, _vm.packName, _vm.file)}}),_vm._v(\" \"),_c('el-input',{staticClass:\"emoji-info\",attrs:{\"placeholder\":_vm.$t('emoji.shortcode')},model:{value:(_vm.emojiName),callback:function ($$v) {_vm.emojiName=$$v},expression:\"emojiName\"}}),_vm._v(\" \"),_c('el-input',{staticClass:\"emoji-info\",attrs:{\"placeholder\":_vm.$t('emoji.file')},model:{value:(_vm.emojiFile),callback:function ($$v) {_vm.emojiFile=$$v},expression:\"emojiFile\"}}),_vm._v(\" \"),_c('div',{staticClass:\"emoji-buttons\"},[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.update}},[_vm._v(_vm._s(_vm.$t('emoji.update')))]),_vm._v(\" \"),_c('el-button',{staticClass:\"remove-emoji-button\",on:{\"click\":_vm.remove}},[_vm._v(_vm._s(_vm.$t('emoji.remove')))])],1)],1):_vm._e(),_vm._v(\" \"),(!_vm.isLocal)?_c('div',{class:_vm.isMobile ? 'emoji-container-flex' : 'remote-emoji-container-grid'},[_c('img',{staticClass:\"emoji-preview-img\",attrs:{\"src\":_vm.addressOfEmojiInPack(_vm.remoteInstance, _vm.packName, _vm.file)}}),_vm._v(\" \"),_c('el-input',{staticClass:\"emoji-info\",attrs:{\"value\":_vm.emojiName,\"placeholder\":_vm.$t('emoji.shortcode')}}),_vm._v(\" \"),_c('el-input',{staticClass:\"emoji-info\",attrs:{\"value\":_vm.emojiFile,\"placeholder\":_vm.$t('emoji.file')}}),_vm._v(\" \"),_c('el-popover',{staticClass:\"copy-pack-container\",attrs:{\"placement\":\"left-start\",\"popper-class\":\"copy-popover\"},model:{value:(_vm.copyPopoverVisible),callback:function ($$v) {_vm.copyPopoverVisible=$$v},expression:\"copyPopoverVisible\"}},[_c('p',[_vm._v(_vm._s(_vm.$t('emoji.selectLocalPack')))]),_vm._v(\" \"),_c('el-select',{staticClass:\"copy-pack-select\",attrs:{\"placeholder\":_vm.$t('emoji.localPack')},model:{value:(_vm.copyToLocalPackName),callback:function ($$v) {_vm.copyToLocalPackName=$$v},expression:\"copyToLocalPackName\"}},_vm._l((_vm.localPacks),function(_pack,name){return _c('el-option',{key:name,attrs:{\"label\":name,\"value\":name}})}),1),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('emoji.specifyShortcode')))]),_vm._v(\" \"),_c('el-input',{attrs:{\"placeholder\":_vm.$t('emoji.leaveEmptyShortcode')},model:{value:(_vm.copyToShortcode),callback:function ($$v) {_vm.copyToShortcode=$$v},expression:\"copyToShortcode\"}}),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('emoji.specifyFilename')))]),_vm._v(\" \"),_c('el-input',{attrs:{\"placeholder\":_vm.$t('emoji.leaveEmptyFilename')},model:{value:(_vm.copyToFilename),callback:function ($$v) {_vm.copyToFilename=$$v},expression:\"copyToFilename\"}}),_vm._v(\" \"),_c('el-button',{staticClass:\"copy-to-local-pack-button\",attrs:{\"disabled\":!_vm.copyToLocalPackName,\"type\":\"primary\"},on:{\"click\":_vm.copyToLocal}},[_vm._v(_vm._s(_vm.$t('emoji.copy')))]),_vm._v(\" \"),_c('el-button',{staticClass:\"emoji-button\",attrs:{\"slot\":\"reference\",\"type\":\"primary\"},slot:\"reference\"},[_vm._v(_vm._s(_vm.$t('emoji.copyToLocalPack')))])],1)],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewEmojiUploader.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewEmojiUploader.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./NewEmojiUploader.vue?vue&type=template&id=403a380a&\"\nimport script from \"./NewEmojiUploader.vue?vue&type=script&lang=js&\"\nexport * from \"./NewEmojiUploader.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NewEmojiUploader.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"NewEmojiUploader.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-form',{staticClass:\"new-emoji-uploader-form\",attrs:{\"label-position\":_vm.isMobile ? 'top' : 'left',\"label-width\":\"130px\",\"size\":\"small\"}},[_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.shortcode')}},[_c('el-input',{attrs:{\"placeholder\":_vm.$t('emoji.optional')},model:{value:(_vm.shortcode),callback:function ($$v) {_vm.shortcode=$$v},expression:\"shortcode\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.customFilename')}},[_c('el-input',{attrs:{\"placeholder\":_vm.$t('emoji.optional')},model:{value:(_vm.customFileName),callback:function ($$v) {_vm.customFileName=$$v},expression:\"customFileName\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.uploadFile')}},[_c('div',{staticClass:\"upload-file-url\"},[_c('el-input',{attrs:{\"placeholder\":_vm.$t('emoji.url')},model:{value:(_vm.imageUploadURL),callback:function ($$v) {_vm.imageUploadURL=$$v},expression:\"imageUploadURL\"}}),_vm._v(\" \"),_c('el-button',{staticClass:\"upload-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.uploadEmoji}},[_vm._v(_vm._s(_vm.$t('emoji.upload')))])],1),_vm._v(\" \"),_c('div',{staticClass:\"upload-container\"},[_c('p',{staticClass:\"text\"},[_vm._v(\"or\")]),_vm._v(\" \"),_c('el-upload',{attrs:{\"http-request\":_vm.uploadEmoji,\"multiple\":false,\"show-file-list\":false,\"action\":\"add\"}},[_c('el-button',{attrs:{\"type\":\"primary\"}},[_vm._v(_vm._s(_vm.$t('emoji.clickToUpload')))])],1)],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocalEmojiPack.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocalEmojiPack.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./LocalEmojiPack.vue?vue&type=template&id=1f26166f&\"\nimport script from \"./LocalEmojiPack.vue?vue&type=script&lang=js&\"\nexport * from \"./LocalEmojiPack.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LocalEmojiPack.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"LocalEmojiPack.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-collapse-item',{staticClass:\"has-background\",attrs:{\"title\":_vm.name,\"name\":_vm.name}},[_c('el-form',{staticClass:\"emoji-pack-metadata\",attrs:{\"label-width\":_vm.labelWidth,\"label-position\":\"left\",\"size\":\"small\"}},[_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.sharePack')}},[_c('el-switch',{model:{value:(_vm.share),callback:function ($$v) {_vm.share=$$v},expression:\"share\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.homepage')}},[_c('el-input',{model:{value:(_vm.homepage),callback:function ($$v) {_vm.homepage=$$v},expression:\"homepage\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.description')}},[_c('el-input',{attrs:{\"type\":\"textarea\"},model:{value:(_vm.description),callback:function ($$v) {_vm.description=$$v},expression:\"description\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.license')}},[_c('el-input',{model:{value:(_vm.license),callback:function ($$v) {_vm.license=$$v},expression:\"license\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.fallbackSrc')}},[_c('el-input',{model:{value:(_vm.fallbackSrc),callback:function ($$v) {_vm.fallbackSrc=$$v},expression:\"fallbackSrc\"}})],1),_vm._v(\" \"),(_vm.fallbackSrc && _vm.fallbackSrc.trim() !== '')?_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.fallbackSrcSha')}},[_vm._v(\"\\n \"+_vm._s(_vm.pack.pack[\"fallback-src-sha256\"])+\"\\n \")]):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"pack-button-container\"},[_c('div',{staticClass:\"save-pack-button-container\"},[_c('el-button',{staticClass:\"save-pack-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.savePackMetadata}},[_vm._v(_vm._s(_vm.$t('emoji.saveMetadata')))]),_vm._v(\" \"),_c('el-button',{staticClass:\"delete-pack-button\",on:{\"click\":_vm.deletePack}},[_vm._v(_vm._s(_vm.$t('emoji.deletePack')))])],1),_vm._v(\" \"),_c('div',{staticClass:\"download-pack-button-container\"},[(_vm.pack.pack['can-download'])?_c('el-link',{attrs:{\"href\":(\"//\" + _vm.host + \"/api/pleroma/emoji/packs/\" + _vm.name + \"/download_shared\"),\"underline\":false,\"type\":\"primary\",\"target\":\"_blank\"}},[_c('el-button',{staticClass:\"download-archive\"},[_vm._v(_vm._s(_vm.$t('emoji.downloadPackArchive')))])],1):_vm._e()],1)]),_vm._v(\" \"),_c('el-collapse',{staticClass:\"contents-collapse\",model:{value:(_vm.showPackContent),callback:function ($$v) {_vm.showPackContent=$$v},expression:\"showPackContent\"}},[(_vm.isLocal)?_c('el-collapse-item',{staticClass:\"no-background\",attrs:{\"title\":_vm.$t('emoji.addNewEmoji'),\"name\":\"addEmoji\"}},[_c('new-emoji-uploader',{attrs:{\"pack-name\":_vm.name}})],1):_vm._e(),_vm._v(\" \"),(_vm.pack.files.length > 0)?_c('el-collapse-item',{staticClass:\"no-background\",attrs:{\"title\":_vm.$t('emoji.manageEmoji'),\"name\":\"manageEmoji\"}},_vm._l((_vm.pack.files),function(ref){\nvar shortcode = ref[0];\nvar file = ref[1];\nreturn _c('single-emoji-editor',{key:shortcode,attrs:{\"host\":_vm.host,\"pack-name\":_vm.name,\"shortcode\":shortcode,\"file\":file,\"is-local\":_vm.isLocal}})}),1):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RemoteEmojiPack.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RemoteEmojiPack.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./RemoteEmojiPack.vue?vue&type=template&id=6ff625b1&\"\nimport script from \"./RemoteEmojiPack.vue?vue&type=script&lang=js&\"\nexport * from \"./RemoteEmojiPack.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RemoteEmojiPack.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"RemoteEmojiPack.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-collapse-item',{staticClass:\"has-background\",attrs:{\"title\":_vm.name,\"name\":_vm.name}},[(_vm.loadRemotePack)?_c('div',[_c('el-form',{staticClass:\"emoji-pack-metadata remote-pack-metadata\",attrs:{\"label-width\":_vm.labelWidth,\"label-position\":\"left\",\"size\":\"small\"}},[_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.sharePack')}},[_c('el-switch',{attrs:{\"disabled\":\"\"},model:{value:(_vm.share),callback:function ($$v) {_vm.share=$$v},expression:\"share\"}})],1),_vm._v(\" \"),(_vm.homepage)?_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.homepage')}},[_c('span',[_vm._v(_vm._s(_vm.homepage))])]):_vm._e(),_vm._v(\" \"),(_vm.description)?_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.description')}},[_c('span',[_vm._v(_vm._s(_vm.description))])]):_vm._e(),_vm._v(\" \"),(_vm.license)?_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.license')}},[_c('span',[_vm._v(_vm._s(_vm.license))])]):_vm._e(),_vm._v(\" \"),(_vm.fallbackSrc)?_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.fallbackSrc')}},[_c('span',[_vm._v(_vm._s(_vm.fallbackSrc))])]):_vm._e(),_vm._v(\" \"),(_vm.fallbackSrc && _vm.fallbackSrc.trim() !== '')?_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.fallbackSrcSha')}},[_vm._v(\"\\n \"+_vm._s(_vm.pack.pack[\"fallback-src-sha256\"])+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('el-form-item',[(_vm.pack.pack['can-download'])?_c('el-link',{attrs:{\"href\":_vm.pack.pack['fallback-src'],\"underline\":false,\"type\":\"primary\",\"target\":\"_blank\"}},[_c('el-button',{staticClass:\"download-archive\"},[_vm._v(_vm._s(_vm.$t('emoji.downloadPackArchive')))])],1):_vm._e()],1)],1),_vm._v(\" \"),_c('el-collapse',{staticClass:\"contents-collapse\",model:{value:(_vm.showPackContent),callback:function ($$v) {_vm.showPackContent=$$v},expression:\"showPackContent\"}},[(_vm.pack.files.length > 0)?_c('el-collapse-item',{staticClass:\"no-background\",attrs:{\"title\":_vm.$t('emoji.manageEmoji'),\"name\":\"manageEmoji\"}},_vm._l((_vm.pack.files),function(ref){\nvar shortcode = ref[0];\nvar file = ref[1];\nreturn _c('single-emoji-editor',{key:shortcode,attrs:{\"host\":_vm.host,\"pack-name\":_vm.name,\"shortcode\":shortcode,\"file\":file,\"is-local\":_vm.isLocal}})}),1):_vm._e(),_vm._v(\" \"),_c('el-collapse-item',{staticClass:\"no-background\",attrs:{\"title\":_vm.$t('emoji.downloadPack'),\"name\":\"downloadPack\"}},[_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.$t('emoji.thisWillDownload'))+\" \\\"\"+_vm._s(_vm.name)+\"\\\" \"+_vm._s(_vm.$t('emoji.downloadToCurrentInstance'))+\"\\n \\\"\"+_vm._s(_vm.downloadSharedAs.trim() === '' ? _vm.name : _vm.downloadSharedAs)+\"\\\" (\"+_vm._s(_vm.$t('emoji.canBeChanged'))+\").\\n \"+_vm._s(_vm.$t('emoji.willBeUsable'))+\".\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"download-shared-pack\"},[_c('el-input',{attrs:{\"placeholder\":_vm.$t('emoji.downloadAsOptional')},model:{value:(_vm.downloadSharedAs),callback:function ($$v) {_vm.downloadSharedAs=$$v},expression:\"downloadSharedAs\"}}),_vm._v(\" \"),_c('el-button',{staticClass:\"download-shared-pack-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.downloadFromInstance}},[_vm._v(\"\\n \"+_vm._s(_vm.isDesktop ? _vm.$t('emoji.downloadSharedPack') : _vm.$t('emoji.downloadSharedPackMobile'))+\"\\n \")])],1)])],1)],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=631f1c16&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SingleEmojiEditor.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SingleEmojiEditor.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewEmojiUploader.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewEmojiUploader.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocalEmojiPack.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocalEmojiPack.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RemoteEmojiPack.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RemoteEmojiPack.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\""],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-commons.5a106955.js b/priv/static/adminfe/static/js/chunk-commons.5a106955.js new file mode 100644 index 000000000..a6cf2ce52 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-commons.5a106955.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-commons"],{Kw8l:function(t,s,e){"use strict";var a=e("cRgN");e.n(a).a},cRgN:function(t,s,e){},ot3S:function(t,s,e){"use strict";var a=e("wd/R"),n=e.n(a),i={name:"Status",props:{account:{type:Object,required:!1,default:function(){return{}}},fetchStatusesByInstance:{type:Boolean,required:!1,default:!1},showCheckbox:{type:Boolean,required:!0,default:!1},status:{type:Object,required:!0},page:{type:Number,required:!1,default:0},userId:{type:String,required:!1,default:""},godmode:{type:Boolean,required:!1,default:!1}},data:function(){return{showHiddenStatus:!1}},methods:{capitalizeFirstLetter:function(t){return t.charAt(0).toUpperCase()+t.slice(1)},changeStatus:function(t,s,e){this.$store.dispatch("ChangeStatusScope",{statusId:t,isSensitive:s,visibility:e,reportCurrentPage:this.page,userId:this.userId,godmode:this.godmode,fetchStatusesByInstance:this.fetchStatusesByInstance})},deleteStatus:function(t){var s=this;this.$confirm("Are you sure you want to delete this status?","Warning",{confirmButtonText:"OK",cancelButtonText:"Cancel",type:"warning"}).then(function(){s.$store.dispatch("DeleteStatus",{statusId:t,reportCurrentPage:s.page,userId:s.userId,godmode:s.godmode,fetchStatusesByInstance:s.fetchStatusesByInstance}),s.$message({type:"success",message:"Delete completed"})}).catch(function(){s.$message({type:"info",message:"Delete canceled"})})},handleStatusSelection:function(t){this.$emit("status-selection",t)},handleRouteChange:function(){this.$router.push({name:"StatusShow",params:{id:this.status.id}})},optionPercent:function(t,s){var e=t.options.reduce(function(t,s){return t+s.votes_count},0);return 0===e?0:+(s.votes_count/e*100).toFixed(1)},parseTimestamp:function(t){return n()(t).format("YYYY-MM-DD HH:mm")},propertyExists:function(t,s,e){return e?t[s]&&t[e]:t[s]}}},o=(e("Kw8l"),e("KHd+")),r=Object(o.a)(i,function(){var t=this,s=t.$createElement,e=t._self._c||s;return t.status.deleted?e("el-card",{staticClass:"status-card"},[e("div",{attrs:{slot:"header"},slot:"header"},[e("div",{staticClass:"status-header"},[e("div",{staticClass:"status-account-container"},[e("div",{staticClass:"status-account"},[e("h4",{staticClass:"status-deleted"},[t._v(t._s(t.$t("reports.statusDeleted")))])])])])]),t._v(" "),e("div",{staticClass:"status-body"},[t.status.content?e("span",{staticClass:"status-content",domProps:{innerHTML:t._s(t.status.content)}}):e("span",{staticClass:"status-without-content"},[t._v("no content")])]),t._v(" "),e("div",{staticClass:"status-footer"},[t.status.created_at?e("span",{staticClass:"status-created-at"},[t._v(t._s(t.parseTimestamp(t.status.created_at)))]):t._e(),t._v(" "),t.status.url?e("a",{staticClass:"account",attrs:{href:t.status.url,target:"_blank"},on:{click:function(t){t.stopPropagation()}}},[t._v("\n Open status in instance\n "),e("i",{staticClass:"el-icon-top-right"})]):t._e()])]):e("el-card",{staticClass:"status-card",nativeOn:{click:function(s){return t.handleRouteChange()}}},[e("div",{attrs:{slot:"header"},slot:"header"},[e("div",{staticClass:"status-header"},[e("div",{staticClass:"status-account-container"},[e("div",{staticClass:"status-account"},[t.showCheckbox?e("el-checkbox",{staticClass:"status-checkbox",on:{change:function(s){return t.handleStatusSelection(t.account)}}}):t._e(),t._v(" "),t.propertyExists(t.account,"id")?e("router-link",{staticClass:"router-link",attrs:{to:{name:"UsersShow",params:{id:t.account.id}}},nativeOn:{click:function(t){t.stopPropagation()}}},[e("div",{staticClass:"status-card-header"},[t.propertyExists(t.account,"avatar")?e("img",{staticClass:"status-avatar-img",attrs:{src:t.account.avatar}}):t._e(),t._v(" "),t.propertyExists(t.account,"nickname")?e("span",{staticClass:"status-account-name"},[t._v(t._s(t.account.nickname))]):e("span",[t.propertyExists(t.account,"nickname")?e("span",{staticClass:"status-account-name"},[t._v("\n "+t._s(t.account.nickname)+"\n ")]):e("span",{staticClass:"status-account-name deactivated"},[t._v("("+t._s(t.$t("users.invalidNickname"))+")")])])])]):t._e()],1)]),t._v(" "),e("div",{staticClass:"status-actions"},[e("div",{staticClass:"status-tags"},[t.status.sensitive?e("el-tag",{attrs:{type:"warning",size:"large"}},[t._v(t._s(t.$t("reports.sensitive")))]):t._e(),t._v(" "),e("el-tag",{attrs:{size:"large"}},[t._v(t._s(t.capitalizeFirstLetter(t.status.visibility)))])],1),t._v(" "),e("el-dropdown",{attrs:{trigger:"click"},nativeOn:{click:function(t){t.stopPropagation()}}},[e("el-button",{staticClass:"status-actions-button",attrs:{plain:"",size:"small",icon:"el-icon-edit"}},[t._v("\n "+t._s(t.$t("reports.changeScope"))),e("i",{staticClass:"el-icon-arrow-down el-icon--right"})]),t._v(" "),e("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[t.status.sensitive?t._e():e("el-dropdown-item",{nativeOn:{click:function(s){return t.changeStatus(t.status.id,!0,t.status.visibility)}}},[t._v("\n "+t._s(t.$t("reports.addSensitive"))+"\n ")]),t._v(" "),t.status.sensitive?e("el-dropdown-item",{nativeOn:{click:function(s){return t.changeStatus(t.status.id,!1,t.status.visibility)}}},[t._v("\n "+t._s(t.$t("reports.removeSensitive"))+"\n ")]):t._e(),t._v(" "),"public"!==t.status.visibility?e("el-dropdown-item",{nativeOn:{click:function(s){return t.changeStatus(t.status.id,t.status.sensitive,"public")}}},[t._v("\n "+t._s(t.$t("reports.public"))+"\n ")]):t._e(),t._v(" "),"private"!==t.status.visibility?e("el-dropdown-item",{nativeOn:{click:function(s){return t.changeStatus(t.status.id,t.status.sensitive,"private")}}},[t._v("\n "+t._s(t.$t("reports.private"))+"\n ")]):t._e(),t._v(" "),"unlisted"!==t.status.visibility?e("el-dropdown-item",{nativeOn:{click:function(s){return t.changeStatus(t.status.id,t.status.sensitive,"unlisted")}}},[t._v("\n "+t._s(t.$t("reports.unlisted"))+"\n ")]):t._e(),t._v(" "),e("el-dropdown-item",{nativeOn:{click:function(s){return t.deleteStatus(t.status.id)}}},[t._v("\n "+t._s(t.$t("reports.deleteStatus"))+"\n ")])],1)],1)],1)])]),t._v(" "),e("div",{staticClass:"status-body"},[t.status.spoiler_text?e("div",[e("strong",[t._v(t._s(t.status.spoiler_text))]),t._v(" "),t.showHiddenStatus?t._e():e("el-button",{staticClass:"show-more-button",attrs:{size:"mini"},on:{click:function(s){t.showHiddenStatus=!0}}},[t._v("Show more")]),t._v(" "),t.showHiddenStatus?e("el-button",{staticClass:"show-more-button",attrs:{size:"mini"},on:{click:function(s){t.showHiddenStatus=!1}}},[t._v("Show less")]):t._e(),t._v(" "),t.showHiddenStatus?e("div",[e("span",{staticClass:"status-content",domProps:{innerHTML:t._s(t.status.content)}}),t._v(" "),t.status.poll?e("div",{staticClass:"poll"},[e("ul",t._l(t.status.poll.options,function(s,a){return e("li",{key:a},[t._v("\n "+t._s(s.title)+"\n "),e("el-progress",{attrs:{percentage:t.optionPercent(t.status.poll,s)}})],1)}),0)]):t._e(),t._v(" "),t._l(t.status.media_attachments,function(t,s){return e("div",{key:s,staticClass:"image"},[e("img",{attrs:{src:t.preview_url}})])})],2):t._e()],1):t._e(),t._v(" "),t.status.spoiler_text?t._e():e("div",[e("span",{staticClass:"status-content",domProps:{innerHTML:t._s(t.status.content)}}),t._v(" "),t.status.poll?e("div",{staticClass:"poll"},[e("ul",t._l(t.status.poll.options,function(s,a){return e("li",{key:a},[t._v("\n "+t._s(s.title)+"\n "),e("el-progress",{attrs:{percentage:t.optionPercent(t.status.poll,s)}})],1)}),0)]):t._e(),t._v(" "),t._l(t.status.media_attachments,function(t,s){return e("div",{key:s,staticClass:"image"},[e("img",{attrs:{src:t.preview_url}})])})],2),t._v(" "),e("div",{staticClass:"status-footer"},[e("span",{staticClass:"status-created-at"},[t._v(t._s(t.parseTimestamp(t.status.created_at)))]),t._v(" "),t.status.url?e("a",{staticClass:"account",attrs:{href:t.status.url,target:"_blank"},on:{click:function(t){t.stopPropagation()}}},[t._v("\n "+t._s(t.$t("statuses.openStatusInInstance"))+"\n "),e("i",{staticClass:"el-icon-top-right"})]):t._e()])])])},[],!1,null,null,null);r.options.__file="index.vue";s.a=r.exports},rIUS:function(t,s,e){"use strict";var a=e("o0o1"),n=e.n(a),i=e("yXPU"),o=e.n(i),r=e("mSNy"),c={name:"RebootButton",computed:{needReboot:function(){return this.$store.state.app.needReboot}},methods:{restartApp:function(){var t=o()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("RestartApplication");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:r.a.t("settings.restartSuccess")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},u=e("KHd+"),l=Object(u.a)(c,function(){var t=this.$createElement,s=this._self._c||t;return this.needReboot?s("el-tooltip",{attrs:{content:this.$t("settings.restartApp"),placement:"bottom-end"}},[s("el-button",{staticClass:"reboot-button",attrs:{type:"warning"},on:{click:this.restartApp}},[s("span",[s("i",{staticClass:"el-icon-refresh"}),this._v("\n "+this._s(this.$t("settings.instanceReboot"))+"\n ")])])],1):this._e()},[],!1,null,null,null);l.options.__file="index.vue";s.a=l.exports}}]); +//# sourceMappingURL=chunk-commons.5a106955.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-commons.5a106955.js.map b/priv/static/adminfe/static/js/chunk-commons.5a106955.js.map new file mode 100644 index 000000000..d924490e5 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-commons.5a106955.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/components/Status/index.vue?aecc","webpack:///./src/components/Status/index.vue?b843","webpack:///./src/components/Status/index.vue?6071","webpack:///src/components/Status/index.vue","webpack:///./src/components/Status/index.vue","webpack:///./src/components/RebootButton/index.vue?8db4","webpack:///./src/components/RebootButton/index.vue?2f45","webpack:///src/components/RebootButton/index.vue","webpack:///./src/components/RebootButton/index.vue"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","components_Statusvue_type_script_lang_js_","name","props","account","type","Object","required","default","fetchStatusesByInstance","Boolean","showCheckbox","status","page","Number","userId","String","godmode","data","showHiddenStatus","methods","capitalizeFirstLetter","str","charAt","toUpperCase","slice","changeStatus","statusId","isSensitive","visibility","this","$store","dispatch","reportCurrentPage","deleteStatus","_this","$confirm","confirmButtonText","cancelButtonText","then","$message","message","catch","handleStatusSelection","$emit","handleRouteChange","$router","push","params","id","optionPercent","poll","pollOption","allVotes","options","reduce","acc","option","votes_count","toFixed","parseTimestamp","timestamp","moment_default","format","propertyExists","property","_secondProperty","component","componentNormalizer","_vm","_h","$createElement","_c","_self","deleted","staticClass","attrs","slot","_v","_s","$t","domProps","innerHTML","content","created_at","_e","href","url","target","on","click","$event","stopPropagation","nativeOn","change","to","src","avatar","nickname","size","trigger","plain","icon","sensitive","spoiler_text","_l","index","key","title","percentage","attachment","preview_url","__file","__webpack_exports__","components_RebootButtonvue_type_script_lang_js_","computed","needReboot","state","app","restartApp","_restartApp","asyncToGenerator_default","regenerator_default","a","mark","_callee","wrap","_context","prev","next","t0","abrupt","lang","t","stop","apply","arguments","placement"],"mappings":"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","file":"static/js/chunk-commons.5a106955.js","sourcesContent":["import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.status.deleted)?_c('el-card',{staticClass:\"status-card\",nativeOn:{\"click\":function($event){return _vm.handleRouteChange()}}},[_c('div',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('div',{staticClass:\"status-header\"},[_c('div',{staticClass:\"status-account-container\"},[_c('div',{staticClass:\"status-account\"},[(_vm.showCheckbox)?_c('el-checkbox',{staticClass:\"status-checkbox\",on:{\"change\":function($event){return _vm.handleStatusSelection(_vm.account)}}}):_vm._e(),_vm._v(\" \"),(_vm.propertyExists(_vm.account, 'id'))?_c('router-link',{staticClass:\"router-link\",attrs:{\"to\":{ name: 'UsersShow', params: { id: _vm.account.id }}},nativeOn:{\"click\":function($event){$event.stopPropagation();}}},[_c('div',{staticClass:\"status-card-header\"},[(_vm.propertyExists(_vm.account, 'avatar'))?_c('img',{staticClass:\"status-avatar-img\",attrs:{\"src\":_vm.account.avatar}}):_vm._e(),_vm._v(\" \"),(_vm.propertyExists(_vm.account, 'nickname'))?_c('span',{staticClass:\"status-account-name\"},[_vm._v(_vm._s(_vm.account.nickname))]):_c('span',[(_vm.propertyExists(_vm.account, 'nickname'))?_c('span',{staticClass:\"status-account-name\"},[_vm._v(\"\\n \"+_vm._s(_vm.account.nickname)+\"\\n \")]):_c('span',{staticClass:\"status-account-name deactivated\"},[_vm._v(\"(\"+_vm._s(_vm.$t('users.invalidNickname'))+\")\")])])])]):_vm._e()],1)]),_vm._v(\" \"),_c('div',{staticClass:\"status-actions\"},[_c('div',{staticClass:\"status-tags\"},[(_vm.status.sensitive)?_c('el-tag',{attrs:{\"type\":\"warning\",\"size\":\"large\"}},[_vm._v(_vm._s(_vm.$t('reports.sensitive')))]):_vm._e(),_vm._v(\" \"),_c('el-tag',{attrs:{\"size\":\"large\"}},[_vm._v(_vm._s(_vm.capitalizeFirstLetter(_vm.status.visibility)))])],1),_vm._v(\" \"),_c('el-dropdown',{attrs:{\"trigger\":\"click\"},nativeOn:{\"click\":function($event){$event.stopPropagation();}}},[_c('el-button',{staticClass:\"status-actions-button\",attrs:{\"plain\":\"\",\"size\":\"small\",\"icon\":\"el-icon-edit\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.changeScope'))),_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"})]),_vm._v(\" \"),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[(!_vm.status.sensitive)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeStatus(_vm.status.id, true, _vm.status.visibility)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.addSensitive'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.status.sensitive)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeStatus(_vm.status.id, false, _vm.status.visibility)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.removeSensitive'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.status.visibility !== 'public')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeStatus(_vm.status.id, _vm.status.sensitive, 'public')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.public'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.status.visibility !== 'private')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeStatus(_vm.status.id, _vm.status.sensitive, 'private')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.private'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.status.visibility !== 'unlisted')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeStatus(_vm.status.id, _vm.status.sensitive, 'unlisted')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.unlisted'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.deleteStatus(_vm.status.id)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.deleteStatus'))+\"\\n \")])],1)],1)],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"status-body\"},[(_vm.status.spoiler_text)?_c('div',[_c('strong',[_vm._v(_vm._s(_vm.status.spoiler_text))]),_vm._v(\" \"),(!_vm.showHiddenStatus)?_c('el-button',{staticClass:\"show-more-button\",attrs:{\"size\":\"mini\"},on:{\"click\":function($event){_vm.showHiddenStatus = true}}},[_vm._v(\"Show more\")]):_vm._e(),_vm._v(\" \"),(_vm.showHiddenStatus)?_c('el-button',{staticClass:\"show-more-button\",attrs:{\"size\":\"mini\"},on:{\"click\":function($event){_vm.showHiddenStatus = false}}},[_vm._v(\"Show less\")]):_vm._e(),_vm._v(\" \"),(_vm.showHiddenStatus)?_c('div',[_c('span',{staticClass:\"status-content\",domProps:{\"innerHTML\":_vm._s(_vm.status.content)}}),_vm._v(\" \"),(_vm.status.poll)?_c('div',{staticClass:\"poll\"},[_c('ul',_vm._l((_vm.status.poll.options),function(option,index){return _c('li',{key:index},[_vm._v(\"\\n \"+_vm._s(option.title)+\"\\n \"),_c('el-progress',{attrs:{\"percentage\":_vm.optionPercent(_vm.status.poll, option)}})],1)}),0)]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.status.media_attachments),function(attachment,index){return _c('div',{key:index,staticClass:\"image\"},[_c('img',{attrs:{\"src\":attachment.preview_url}})])})],2):_vm._e()],1):_vm._e(),_vm._v(\" \"),(!_vm.status.spoiler_text)?_c('div',[_c('span',{staticClass:\"status-content\",domProps:{\"innerHTML\":_vm._s(_vm.status.content)}}),_vm._v(\" \"),(_vm.status.poll)?_c('div',{staticClass:\"poll\"},[_c('ul',_vm._l((_vm.status.poll.options),function(option,index){return _c('li',{key:index},[_vm._v(\"\\n \"+_vm._s(option.title)+\"\\n \"),_c('el-progress',{attrs:{\"percentage\":_vm.optionPercent(_vm.status.poll, option)}})],1)}),0)]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.status.media_attachments),function(attachment,index){return _c('div',{key:index,staticClass:\"image\"},[_c('img',{attrs:{\"src\":attachment.preview_url}})])})],2):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"status-footer\"},[_c('span',{staticClass:\"status-created-at\"},[_vm._v(_vm._s(_vm.parseTimestamp(_vm.status.created_at)))]),_vm._v(\" \"),(_vm.status.url)?_c('a',{staticClass:\"account\",attrs:{\"href\":_vm.status.url,\"target\":\"_blank\"},on:{\"click\":function($event){$event.stopPropagation();}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.openStatusInInstance'))+\"\\n \"),_c('i',{staticClass:\"el-icon-top-right\"})]):_vm._e()])])]):_c('el-card',{staticClass:\"status-card\"},[_c('div',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('div',{staticClass:\"status-header\"},[_c('div',{staticClass:\"status-account-container\"},[_c('div',{staticClass:\"status-account\"},[_c('h4',{staticClass:\"status-deleted\"},[_vm._v(_vm._s(_vm.$t('reports.statusDeleted')))])])])])]),_vm._v(\" \"),_c('div',{staticClass:\"status-body\"},[(_vm.status.content)?_c('span',{staticClass:\"status-content\",domProps:{\"innerHTML\":_vm._s(_vm.status.content)}}):_c('span',{staticClass:\"status-without-content\"},[_vm._v(\"no content\")])]),_vm._v(\" \"),_c('div',{staticClass:\"status-footer\"},[(_vm.status.created_at)?_c('span',{staticClass:\"status-created-at\"},[_vm._v(_vm._s(_vm.parseTimestamp(_vm.status.created_at)))]):_vm._e(),_vm._v(\" \"),(_vm.status.url)?_c('a',{staticClass:\"account\",attrs:{\"href\":_vm.status.url,\"target\":\"_blank\"},on:{\"click\":function($event){$event.stopPropagation();}}},[_vm._v(\"\\n Open status in instance\\n \"),_c('i',{staticClass:\"el-icon-top-right\"})]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=69419e6d&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.needReboot)?_c('el-tooltip',{attrs:{\"content\":_vm.$t('settings.restartApp'),\"placement\":\"bottom-end\"}},[_c('el-button',{staticClass:\"reboot-button\",attrs:{\"type\":\"warning\"},on:{\"click\":_vm.restartApp}},[_c('span',[_c('i',{staticClass:\"el-icon-refresh\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.instanceReboot'))+\"\\n \")])])],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=53cfaf1d&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-d38a.a851004a.js b/priv/static/adminfe/static/js/chunk-d38a.a851004a.js deleted file mode 100644 index c302af310..000000000 --- a/priv/static/adminfe/static/js/chunk-d38a.a851004a.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-d38a"],{"53Av":function(e,t,s){"use strict";var r=s("lOBV");s.n(r).a},"6eCR":function(e,t,s){"use strict";var r=s("Jdpf");s.n(r).a},"9/5/":function(e,t,s){(function(t){var s="Expected a function",r=NaN,n="[object Symbol]",i=/^\s+|\s+$/g,o=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,c=/^0o[0-7]+$/i,u=parseInt,l="object"==typeof t&&t&&t.Object===Object&&t,d="object"==typeof self&&self&&self.Object===Object&&self,p=l||d||Function("return this")(),v=Object.prototype.toString,f=Math.max,m=Math.min,h=function(){return p.Date.now()};function g(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function _(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&v.call(e)==n}(e))return r;if(g(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=g(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(i,"");var s=a.test(e);return s||c.test(e)?u(e.slice(2),s?2:8):o.test(e)?r:+e}e.exports=function(e,t,r){var n,i,o,a,c,u,l=0,d=!1,p=!1,v=!0;if("function"!=typeof e)throw new TypeError(s);function w(t){var s=n,r=i;return n=i=void 0,l=t,a=e.apply(r,s)}function $(e){var s=e-u;return void 0===u||s>=t||s<0||p&&e-l>=o}function b(){var e=h();if($(e))return k(e);c=setTimeout(b,function(e){var s=t-(e-u);return p?m(s,o-(e-l)):s}(e))}function k(e){return c=void 0,v&&n?w(e):(n=i=void 0,a)}function y(){var e=h(),s=$(e);if(n=arguments,i=this,u=e,s){if(void 0===c)return function(e){return l=e,c=setTimeout(b,t),d?w(e):a}(u);if(p)return c=setTimeout(b,t),w(u)}return void 0===c&&(c=setTimeout(b,t)),a}return t=_(t)||0,g(r)&&(d=!!r.leading,o=(p="maxWait"in r)?f(_(r.maxWait)||0,t):o,v="trailing"in r?!!r.trailing:v),y.cancel=function(){void 0!==c&&clearTimeout(c),l=0,n=u=i=c=void 0},y.flush=function(){return void 0===c?a:k(h())},y}}).call(this,s("yLpj"))},DPTh:function(e,t,s){"use strict";var r=s("vg5t");s.n(r).a},H08Y:function(e,t,s){"use strict";var r=s("zhkl");s.n(r).a},Jdpf:function(e,t,s){},RGjw:function(e,t,s){"use strict";s.r(t);var r=s("o0o1"),n=s.n(r),i=s("yXPU"),o=s.n(i),a=s("9/5/"),c=s.n(a),u=s("ZhIB"),l=s.n(u),d=s("lSNA"),p=s.n(d),v=s("MVZn"),f=s.n(v),m={data:function(){return{value:[]}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device}},methods:{removeOppositeFilters:function(){var e=Object.keys(this.$store.state.users.filters).length,t=this.$data.value.slice(),s=t.indexOf("local"),r=t.indexOf("external"),n=t.indexOf("active"),i=t.indexOf("deactivated");if(t.length===e)return[];if(s>-1&&r>-1){var o=s>r?r:s;t.splice(o,1)}else if(n>-1&&i>-1){var a=n>i?i:n;t.splice(a,1)}return t},toggleFilters:function(){this.$data.value=this.removeOppositeFilters();var e=this.$data.value.reduce(function(e,t){return f()({},e,p()({},t,!0))},{});this.$store.dispatch("ToggleUsersFilter",e)}}},h=(s("H08Y"),s("KHd+")),g=Object(h.a)(m,function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("el-select",{staticClass:"select-field",attrs:{clearable:e.isDesktop,placeholder:e.$t("usersFilter.inputPlaceholder"),multiple:""},on:{change:e.toggleFilters},model:{value:e.value,callback:function(t){e.value=t},expression:"value"}},[s("el-option-group",{attrs:{label:e.$t("usersFilter.byUserType")}},[s("el-option",{attrs:{value:"local"}},[e._v(e._s(e.$t("usersFilter.local")))]),e._v(" "),s("el-option",{attrs:{value:"external"}},[e._v(e._s(e.$t("usersFilter.external")))])],1),e._v(" "),s("el-option-group",{attrs:{label:e.$t("usersFilter.byStatus")}},[s("el-option",{attrs:{value:"active"}},[e._v(e._s(e.$t("usersFilter.active")))]),e._v(" "),s("el-option",{attrs:{value:"deactivated"}},[e._v(e._s(e.$t("usersFilter.deactivated")))])],1)],1)},[],!1,null,"4bc96860",null);g.options.__file="UsersFilter.vue";var _=g.exports,w=s("i7Kn"),$={name:"NewAccountDialog",props:{dialogFormVisible:{type:Boolean,default:function(){return!1}}},data:function(){return{newUserForm:{nickname:"",email:"",password:""},rules:{nickname:[{validator:this.validateUsername,trigger:"blur"}],email:[{validator:this.validateEmail,trigger:"blur"}],password:[{validator:this.validatePassword,trigger:"blur"}]}}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device},isVisible:{get:function(){return this.$props.dialogFormVisible},set:function(){this.closeDialogWindow()}},getLabelWidth:function(){return this.isDesktop?"120px":"85px"}},methods:{closeDialogWindow:function(){this.$emit("closeWindow")},resetForm:function(){var e=this;this.$nextTick(function(){e.$refs.newUserForm.resetFields()})},submitForm:function(e){var t=this;this.$refs[e].validate(function(e){if(!e)return t.$message({type:"error",message:t.$t("users.submitFormError")}),!1;t.$emit("createNewAccount",t.$data.newUserForm)})},validateEmail:function(e,t,s){return""===t?s(new Error(this.$t("users.emptyEmailError"))):this.validEmail(t)?s():s(new Error(this.$t("users.invalidEmailError")))},validatePassword:function(e,t,s){return""===t?s(new Error(this.$t("users.emptyPasswordError"))):s()},validateUsername:function(e,t,s){return""===t?s(new Error(this.$t("users.emptyNicknameError"))):this.validNickname(t)?s():s(new Error(this.$t("users.invalidNicknameError")))},validEmail:function(e){return/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(e)},validNickname:function(e){return/^[a-zA-Z\d]+$/.test(e)}}},b=(s("DPTh"),Object(h.a)($,function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("el-dialog",{attrs:{visible:e.isVisible,"show-close":!1,title:e.$t("users.createAccount"),"custom-class":"create-user-dialog"},on:{"update:visible":function(t){e.isVisible=t},open:e.resetForm}},[s("el-form",{ref:"newUserForm",attrs:{model:e.newUserForm,rules:e.rules,"label-width":e.getLabelWidth,"status-icon":""}},[s("el-form-item",{staticClass:"create-account-form-item",attrs:{label:e.$t("users.username"),prop:"nickname"}},[s("el-input",{attrs:{name:"nickname",autofocus:""},model:{value:e.newUserForm.nickname,callback:function(t){e.$set(e.newUserForm,"nickname",t)},expression:"newUserForm.nickname"}})],1),e._v(" "),s("el-form-item",{staticClass:"create-account-form-item",attrs:{label:e.$t("users.email"),prop:"email"}},[s("el-input",{attrs:{name:"email",type:"email"},model:{value:e.newUserForm.email,callback:function(t){e.$set(e.newUserForm,"email",t)},expression:"newUserForm.email"}})],1),e._v(" "),s("el-form-item",{staticClass:"create-account-form-item-without-margin",attrs:{label:e.$t("users.password"),prop:"password"}},[s("el-input",{attrs:{type:"password",name:"password",autocomplete:"off"},model:{value:e.newUserForm.password,callback:function(t){e.$set(e.newUserForm,"password",t)},expression:"newUserForm.password"}})],1)],1),e._v(" "),s("span",{attrs:{slot:"footer"},slot:"footer"},[s("el-button",{on:{click:e.closeDialogWindow}},[e._v(e._s(e.$t("users.cancel")))]),e._v(" "),s("el-button",{attrs:{type:"primary"},on:{click:function(t){return e.submitForm("newUserForm")}}},[e._v(e._s(e.$t("users.create")))])],1)],1)},[],!1,null,null,null));b.options.__file="NewAccountDialog.vue";var k=b.exports,y=s("tPM3"),D=s("rIUS"),C={name:"Users",components:{NewAccountDialog:k,ModerationDropdown:y.a,MultipleUsersMenu:w.a,RebootButton:D.a,UsersFilter:_},data:function(){return{search:"",selectedUsers:[],createAccountDialogOpen:!1,resetPasswordDialogOpen:!1}},computed:{loading:function(){return this.$store.state.users.loading},normalizedUsersCount:function(){return l()(this.$store.state.users.totalUsersCount).format("0a")},users:function(){return this.$store.state.users.fetchedUsers},usersCount:function(){return this.$store.state.users.totalUsersCount},pageSize:function(){return this.$store.state.users.pageSize},passwordResetLink:function(){return this.$store.state.users.passwordResetToken.link},passwordResetToken:function(){return this.$store.state.users.passwordResetToken.token},currentPage:function(){return this.$store.state.users.currentPage},isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device},width:function(){return!!this.isMobile&&55}},created:function(){var e=this;this.handleDebounceSearchInput=c()(function(t){e.$store.dispatch("SearchUsers",{query:t,page:1})},500)},mounted:function(){this.$store.dispatch("NeedReboot"),this.$store.dispatch("FetchUsers",{page:1})},methods:{activationIcon:function(e){return e?"el-icon-error":"el-icon-success"},clearSelection:function(){this.$refs.usersTable.clearSelection()},closeResetPasswordDialog:function(){this.resetPasswordDialogOpen=!1,this.$store.dispatch("RemovePasswordToken")},createNewAccount:function(){var e=o()(n.a.mark(function e(t){return n.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.$store.dispatch("CreateNewAccount",t);case 2:this.createAccountDialogOpen=!1;case 3:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}(),getFirstLetter:function(e){return e.charAt(0).toUpperCase()},handlePageChange:function(e){var t=this.$store.state.users.searchQuery;""===t?this.$store.dispatch("FetchUsers",{page:e}):this.$store.dispatch("SearchUsers",{query:t,page:e})},handleSelectionChange:function(e){this.$data.selectedUsers=e},openResetPasswordDialog:function(){this.resetPasswordDialogOpen=!0},showDeactivatedButton:function(e){return this.$store.state.user.id!==e}}},A=(s("6eCR"),Object(h.a)(C,function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"users-container"},[s("div",{staticClass:"users-header-container"},[s("h1",[e._v("\n "+e._s(e.$t("users.users"))+"\n "),s("span",{staticClass:"user-count"},[e._v("("+e._s(e.normalizedUsersCount)+")")])]),e._v(" "),s("reboot-button")],1),e._v(" "),s("div",{staticClass:"filter-container"},[s("users-filter"),e._v(" "),s("el-input",{staticClass:"search",attrs:{placeholder:e.$t("users.search"),"prefix-icon":"el-icon-search"},on:{input:e.handleDebounceSearchInput},model:{value:e.search,callback:function(t){e.search=t},expression:"search"}})],1),e._v(" "),s("div",{staticClass:"actions-container"},[s("el-button",{staticClass:"actions-button",on:{click:function(t){e.createAccountDialogOpen=!0}}},[s("span",{staticClass:"create-account"},[s("i",{staticClass:"el-icon-plus"}),e._v("\n "+e._s(e.$t("users.createAccount"))+"\n ")])]),e._v(" "),s("multiple-users-menu",{attrs:{"selected-users":e.selectedUsers},on:{"apply-action":e.clearSelection}})],1),e._v(" "),s("new-account-dialog",{attrs:{"dialog-form-visible":e.createAccountDialogOpen},on:{createNewAccount:e.createNewAccount,closeWindow:function(t){e.createAccountDialogOpen=!1}}}),e._v(" "),s("el-table",{directives:[{name:"loading",rawName:"v-loading",value:e.loading,expression:"loading"}],ref:"usersTable",staticStyle:{width:"100%"},attrs:{data:e.users,"row-key":"id"},on:{"selection-change":e.handleSelectionChange}},[e.isDesktop?s("el-table-column",{attrs:{type:"selection","reserve-selection":"",width:"44",align:"center"}}):e._e(),e._v(" "),s("el-table-column",{attrs:{"min-width":e.width,label:e.$t("users.id"),prop:"id"}}),e._v(" "),s("el-table-column",{attrs:{label:e.$t("users.name"),prop:"nickname"},scopedSlots:e._u([{key:"default",fn:function(t){return[s("router-link",{attrs:{to:{name:"UsersShow",params:{id:t.row.id}}}},[e._v(e._s(t.row.nickname))]),e._v(" "),e.isDesktop?s("el-tag",{attrs:{type:"info",size:"mini"}},[s("span",[e._v(e._s(t.row.local?e.$t("users.local"):e.$t("users.external")))])]):e._e()]}}])}),e._v(" "),s("el-table-column",{attrs:{"min-width":e.width,label:e.$t("users.status")},scopedSlots:e._u([{key:"default",fn:function(t){return[s("el-tag",{attrs:{type:t.row.deactivated?"danger":"success"}},[e.isDesktop?s("span",[e._v(e._s(t.row.deactivated?e.$t("users.deactivated"):e.$t("users.active")))]):s("i",{class:e.activationIcon(t.row.deactivated)})]),e._v(" "),t.row.roles.admin?s("el-tag",[s("span",[e._v(e._s(e.isDesktop?e.$t("users.admin"):e.getFirstLetter(e.$t("users.admin"))))])]):e._e(),e._v(" "),t.row.roles.moderator?s("el-tag",[s("span",[e._v(e._s(e.isDesktop?e.$t("users.moderator"):e.getFirstLetter(e.$t("users.moderator"))))])]):e._e(),e._v(" "),s("el-tooltip",{attrs:{content:e.$t("users.unconfirmedEmail"),effect:"dark"}},[t.row.confirmation_pending?s("el-tag",{attrs:{type:"info"}},[e._v("\n "+e._s(e.isDesktop?e.$t("users.unconfirmed"):e.getFirstLetter(e.$t("users.unconfirmed")))+"\n ")]):e._e()],1)]}}])}),e._v(" "),s("el-table-column",{attrs:{label:e.$t("users.actions"),fixed:"right"},scopedSlots:e._u([{key:"default",fn:function(t){return[s("moderation-dropdown",{attrs:{user:t.row,page:"users"},on:{"open-reset-token-dialog":e.openResetPasswordDialog}})]}}])})],1),e._v(" "),s("el-dialog",{directives:[{name:"loading",rawName:"v-loading",value:e.loading,expression:"loading"}],attrs:{visible:e.resetPasswordDialogOpen,title:e.$t("users.passwordResetTokenCreated"),"custom-class":"password-reset-token-dialog"},on:{"update:visible":function(t){e.resetPasswordDialogOpen=t},close:e.closeResetPasswordDialog}},[s("div",[s("p",{staticClass:"password-reset-token"},[e._v("Password reset token was generated: "+e._s(e.passwordResetToken))]),e._v(" "),s("p",[e._v("You can also use this link to reset password:\n "),s("a",{staticClass:"reset-password-link",attrs:{href:e.passwordResetLink,target:"_blank"}},[e._v(e._s(e.passwordResetLink))])])])]),e._v(" "),e.loading?e._e():s("div",{staticClass:"pagination"},[s("el-pagination",{attrs:{total:e.usersCount,"current-page":e.currentPage,"page-size":e.pageSize,background:"",layout:"prev, pager, next"},on:{"current-change":e.handlePageChange}})],1)],1)},[],!1,null,null,null));A.options.__file="index.vue";t.default=A.exports},lOBV:function(e,t,s){},tPM3:function(e,t,s){"use strict";var r={name:"ModerationDropdown",props:{user:{type:Object,default:function(){return{}}},page:{type:String,default:"users"}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device}},methods:{getPasswordResetToken:function(e){this.$emit("open-reset-token-dialog"),this.$store.dispatch("GetPasswordResetToken",e)},handleConfirmationResend:function(e){this.$store.dispatch("ResendConfirmationEmail",[e])},handleDeletion:function(e){this.$store.dispatch("DeleteUsers",{users:[e],_userId:e.id})},handleEmailConfirmation:function(e){this.$store.dispatch("ConfirmUsersEmail",{users:[e],_userId:e.id})},requirePasswordReset:function(e){this.$store.state.user.nodeInfo.metadata.mailerEnabled?this.$store.dispatch("RequirePasswordReset",[e]):this.$alert(this.$t("users.mailerMustBeEnabled"),"Error",{type:"error"})},showAdminAction:function(e){var t=e.local,s=e.id;return t&&this.showDeactivatedButton(s)},showDeactivatedButton:function(e){return this.$store.state.user.id!==e},toggleActivation:function(e){e.deactivated?this.$store.dispatch("ActivateUsers",{users:[e],_userId:e.id}):this.$store.dispatch("DeactivateUsers",{users:[e],_userId:e.id})},toggleTag:function(e,t){e.tags.includes(t)?this.$store.dispatch("RemoveTag",{users:[e],tag:t,_userId:e.id}):this.$store.dispatch("AddTag",{users:[e],tag:t,_userId:e.id})},toggleUserRight:function(e,t){e.roles[t]?this.$store.dispatch("DeleteRight",{users:[e],right:t,_userId:e.id}):this.$store.dispatch("AddRight",{users:[e],right:t,_userId:e.id})}}},n=(s("53Av"),s("KHd+")),i=Object(n.a)(r,function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("el-dropdown",{attrs:{"hide-on-click":!1,size:"small",trigger:"click"}},[s("div",["users"===e.page?s("span",{staticClass:"el-dropdown-link"},[e._v("\n "+e._s(e.$t("users.moderation"))+"\n "),e.isDesktop?s("i",{staticClass:"el-icon-arrow-down el-icon--right"}):e._e()]):e._e(),e._v(" "),"userPage"===e.page?s("el-button",{staticClass:"moderate-user-button"},[s("span",{staticClass:"moderate-user-button-container"},[s("span",[s("i",{staticClass:"el-icon-edit"}),e._v("\n "+e._s(e.$t("users.moderateUser"))+"\n ")]),e._v(" "),s("i",{staticClass:"el-icon-arrow-down el-icon--right"})])]):e._e()],1),e._v(" "),s("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[e.showAdminAction(e.user)?s("el-dropdown-item",{nativeOn:{click:function(t){return e.toggleUserRight(e.user,"admin")}}},[e._v("\n "+e._s(e.user.roles.admin?e.$t("users.revokeAdmin"):e.$t("users.grantAdmin"))+"\n ")]):e._e(),e._v(" "),e.showAdminAction(e.user)?s("el-dropdown-item",{nativeOn:{click:function(t){return e.toggleUserRight(e.user,"moderator")}}},[e._v("\n "+e._s(e.user.roles.moderator?e.$t("users.revokeModerator"):e.$t("users.grantModerator"))+"\n ")]):e._e(),e._v(" "),e.showDeactivatedButton(e.user.id)?s("el-dropdown-item",{attrs:{divided:e.showAdminAction(e.user)},nativeOn:{click:function(t){return e.toggleActivation(e.user)}}},[e._v("\n "+e._s(e.user.deactivated?e.$t("users.activateAccount"):e.$t("users.deactivateAccount"))+"\n ")]):e._e(),e._v(" "),e.showDeactivatedButton(e.user.id)?s("el-dropdown-item",{nativeOn:{click:function(t){return e.handleDeletion(e.user)}}},[e._v("\n "+e._s(e.$t("users.deleteAccount"))+"\n ")]):e._e(),e._v(" "),e.user.local&&e.user.confirmation_pending?s("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(t){return e.handleEmailConfirmation(e.user)}}},[e._v("\n "+e._s(e.$t("users.confirmAccount"))+"\n ")]):e._e(),e._v(" "),e.user.local&&e.user.confirmation_pending?s("el-dropdown-item",{nativeOn:{click:function(t){return e.handleConfirmationResend(e.user)}}},[e._v("\n "+e._s(e.$t("users.resendConfirmation"))+"\n ")]):e._e(),e._v(" "),s("el-dropdown-item",{class:{"active-tag":e.user.tags.includes("force_nsfw")},attrs:{divided:e.showAdminAction(e.user)},nativeOn:{click:function(t){return e.toggleTag(e.user,"force_nsfw")}}},[e._v("\n "+e._s(e.$t("users.forceNsfw"))+"\n "),e.user.tags.includes("force_nsfw")?s("i",{staticClass:"el-icon-check"}):e._e()]),e._v(" "),s("el-dropdown-item",{class:{"active-tag":e.user.tags.includes("strip_media")},nativeOn:{click:function(t){return e.toggleTag(e.user,"strip_media")}}},[e._v("\n "+e._s(e.$t("users.stripMedia"))+"\n "),e.user.tags.includes("strip_media")?s("i",{staticClass:"el-icon-check"}):e._e()]),e._v(" "),s("el-dropdown-item",{class:{"active-tag":e.user.tags.includes("force_unlisted")},nativeOn:{click:function(t){return e.toggleTag(e.user,"force_unlisted")}}},[e._v("\n "+e._s(e.$t("users.forceUnlisted"))+"\n "),e.user.tags.includes("force_unlisted")?s("i",{staticClass:"el-icon-check"}):e._e()]),e._v(" "),s("el-dropdown-item",{class:{"active-tag":e.user.tags.includes("sandbox")},nativeOn:{click:function(t){return e.toggleTag(e.user,"sandbox")}}},[e._v("\n "+e._s(e.$t("users.sandbox"))+"\n "),e.user.tags.includes("sandbox")?s("i",{staticClass:"el-icon-check"}):e._e()]),e._v(" "),e.user.local?s("el-dropdown-item",{class:{"active-tag":e.user.tags.includes("disable_remote_subscription")},nativeOn:{click:function(t){return e.toggleTag(e.user,"disable_remote_subscription")}}},[e._v("\n "+e._s(e.$t("users.disableRemoteSubscription"))+"\n "),e.user.tags.includes("disable_remote_subscription")?s("i",{staticClass:"el-icon-check"}):e._e()]):e._e(),e._v(" "),e.user.local?s("el-dropdown-item",{class:{"active-tag":e.user.tags.includes("disable_any_subscription")},nativeOn:{click:function(t){return e.toggleTag(e.user,"disable_any_subscription")}}},[e._v("\n "+e._s(e.$t("users.disableAnySubscription"))+"\n "),e.user.tags.includes("disable_any_subscription")?s("i",{staticClass:"el-icon-check"}):e._e()]):e._e(),e._v(" "),e.user.local?s("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(t){return e.getPasswordResetToken(e.user.nickname)}}},[e._v("\n "+e._s(e.$t("users.getPasswordResetToken"))+"\n ")]):e._e(),e._v(" "),e.user.local?s("el-dropdown-item",{nativeOn:{click:function(t){return e.requirePasswordReset(e.user)}}},[e._v("\n "+e._s(e.$t("users.requirePasswordReset"))+"\n ")]):e._e()],1)],1)},[],!1,null,null,null);i.options.__file="ModerationDropdown.vue";t.a=i.exports},vg5t:function(e,t,s){},zhkl:function(e,t,s){}}]); -//# sourceMappingURL=chunk-d38a.a851004a.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-d38a.a851004a.js.map b/priv/static/adminfe/static/js/chunk-d38a.a851004a.js.map deleted file mode 100644 index 6779f6dc1..000000000 --- a/priv/static/adminfe/static/js/chunk-d38a.a851004a.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./src/views/users/components/ModerationDropdown.vue?e3f0","webpack:///./src/views/users/index.vue?1afe","webpack:///./node_modules/lodash.debounce/index.js","webpack:///./src/views/users/components/NewAccountDialog.vue?d353","webpack:///./src/views/users/components/UsersFilter.vue?b48f","webpack:///./src/views/users/index.vue?6efb","webpack:///./src/views/users/components/UsersFilter.vue?6a82","webpack:///src/views/users/components/UsersFilter.vue","webpack:///./src/views/users/components/UsersFilter.vue","webpack:///./src/views/users/components/UsersFilter.vue?6235","webpack:///./src/views/users/components/NewAccountDialog.vue?9018","webpack:///src/views/users/components/NewAccountDialog.vue","webpack:///./src/views/users/components/NewAccountDialog.vue","webpack:///./src/views/users/components/NewAccountDialog.vue?43a7","webpack:///./src/views/users/index.vue?0a29","webpack:///src/views/users/index.vue","webpack:///./src/views/users/index.vue","webpack:///./src/views/users/components/ModerationDropdown.vue?f4d5","webpack:///./src/views/users/components/ModerationDropdown.vue?676e","webpack:///src/views/users/components/ModerationDropdown.vue","webpack:///./src/views/users/components/ModerationDropdown.vue"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ModerationDropdown_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","global","FUNC_ERROR_TEXT","NAN","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","freeGlobal","Object","freeSelf","self","root","Function","objectToString","prototype","toString","nativeMax","Math","max","nativeMin","min","now","Date","isObject","value","type","toNumber","isObjectLike","call","isSymbol","other","valueOf","replace","isBinary","test","slice","module","exports","func","wait","options","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","args","thisArg","undefined","apply","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","setTimeout","remainingWait","debounced","isInvoking","arguments","this","leadingEdge","cancel","clearTimeout","flush","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_NewAccountDialog_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_UsersFilter_vue_vue_type_style_index_0_id_4bc96860_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","components_UsersFiltervue_type_script_lang_js_","data","computed","isDesktop","$store","state","app","device","methods","removeOppositeFilters","filtersQuantity","keys","users","filters","length","currentFilters","$data","indexOfLocal","indexOf","indexOfExternal","indexOfActive","indexOfDeactivated","filterToRemove","splice","_filterToRemove","toggleFilters","reduce","acc","filter","objectSpread_default","defineProperty_default","dispatch","component","componentNormalizer","_vm","_h","$createElement","_c","_self","staticClass","attrs","clearable","placeholder","$t","multiple","on","change","model","callback","$$v","expression","label","_v","_s","__file","UsersFilter","components_NewAccountDialogvue_type_script_lang_js_","name","props","dialogFormVisible","Boolean","default","newUserForm","nickname","email","password","rules","validator","validateUsername","trigger","validateEmail","validatePassword","isVisible","get","$props","set","closeDialogWindow","getLabelWidth","$emit","resetForm","_this","$nextTick","$refs","resetFields","submitForm","formName","_this2","validate","valid","$message","message","rule","Error","validEmail","validNickname","NewAccountDialog_component","visible","show-close","title","custom-class","update:visible","$event","open","ref","label-width","status-icon","prop","autofocus","$set","autocomplete","slot","click","NewAccountDialog","views_usersvue_type_script_lang_js_","components","ModerationDropdown","MultipleUsersMenu","RebootButton","search","selectedUsers","createAccountDialogOpen","resetPasswordDialogOpen","loading","normalizedUsersCount","numeral_default","totalUsersCount","format","fetchedUsers","usersCount","pageSize","passwordResetLink","passwordResetToken","link","token","currentPage","isMobile","width","created","handleDebounceSearchInput","lodash_debounce_default","query","page","mounted","activationIcon","status","clearSelection","usersTable","closeResetPasswordDialog","createNewAccount","_createNewAccount","asyncToGenerator_default","regenerator_default","a","mark","_callee","accountData","wrap","_context","prev","next","stop","_x","getFirstLetter","str","charAt","toUpperCase","handlePageChange","searchQuery","handleSelectionChange","openResetPasswordDialog","showDeactivatedButton","id","user","users_component","prefix-icon","input","selected-users","apply-action","dialog-form-visible","closeWindow","directives","rawName","staticStyle","row-key","selection-change","reserve-selection","align","_e","min-width","scopedSlots","_u","key","fn","scope","to","params","row","size","local","deactivated","class","roles","content","effect","fixed","open-reset-token-dialog","close","href","target","total","current-page","page-size","background","layout","current-change","__webpack_exports__","components_ModerationDropdownvue_type_script_lang_js_","String","getPasswordResetToken","handleConfirmationResend","handleDeletion","_userId","handleEmailConfirmation","requirePasswordReset","nodeInfo","metadata","mailerEnabled","$alert","showAdminAction","_ref","toggleActivation","toggleTag","tag","tags","includes","toggleUserRight","right","hide-on-click","nativeOn","admin","moderator","divided","confirmation_pending","active-tag"],"mappings":"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","file":"static/js/chunk-d38a.a851004a.js","sourcesContent":["import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewAccountDialog.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewAccountDialog.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UsersFilter.vue?vue&type=style&index=0&id=4bc96860&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UsersFilter.vue?vue&type=style&index=0&id=4bc96860&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"users-container\"},[_c('div',{staticClass:\"users-header-container\"},[_c('h1',[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.users'))+\"\\n \"),_c('span',{staticClass:\"user-count\"},[_vm._v(\"(\"+_vm._s(_vm.normalizedUsersCount)+\")\")])]),_vm._v(\" \"),_c('reboot-button')],1),_vm._v(\" \"),_c('div',{staticClass:\"filter-container\"},[_c('users-filter'),_vm._v(\" \"),_c('el-input',{staticClass:\"search\",attrs:{\"placeholder\":_vm.$t('users.search'),\"prefix-icon\":\"el-icon-search\"},on:{\"input\":_vm.handleDebounceSearchInput},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"actions-container\"},[_c('el-button',{staticClass:\"actions-button\",on:{\"click\":function($event){_vm.createAccountDialogOpen = true}}},[_c('span',{staticClass:\"create-account\"},[_c('i',{staticClass:\"el-icon-plus\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('users.createAccount'))+\"\\n \")])]),_vm._v(\" \"),_c('multiple-users-menu',{attrs:{\"selected-users\":_vm.selectedUsers},on:{\"apply-action\":_vm.clearSelection}})],1),_vm._v(\" \"),_c('new-account-dialog',{attrs:{\"dialog-form-visible\":_vm.createAccountDialogOpen},on:{\"createNewAccount\":_vm.createNewAccount,\"closeWindow\":function($event){_vm.createAccountDialogOpen = false}}}),_vm._v(\" \"),_c('el-table',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],ref:\"usersTable\",staticStyle:{\"width\":\"100%\"},attrs:{\"data\":_vm.users,\"row-key\":\"id\"},on:{\"selection-change\":_vm.handleSelectionChange}},[(_vm.isDesktop)?_c('el-table-column',{attrs:{\"type\":\"selection\",\"reserve-selection\":\"\",\"width\":\"44\",\"align\":\"center\"}}):_vm._e(),_vm._v(\" \"),_c('el-table-column',{attrs:{\"min-width\":_vm.width,\"label\":_vm.$t('users.id'),\"prop\":\"id\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.$t('users.name'),\"prop\":\"nickname\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('router-link',{attrs:{\"to\":{ name: 'UsersShow', params: { id: scope.row.id }}}},[_vm._v(_vm._s(scope.row.nickname))]),_vm._v(\" \"),(_vm.isDesktop)?_c('el-tag',{attrs:{\"type\":\"info\",\"size\":\"mini\"}},[_c('span',[_vm._v(_vm._s(scope.row.local ? _vm.$t('users.local') : _vm.$t('users.external')))])]):_vm._e()]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"min-width\":_vm.width,\"label\":_vm.$t('users.status')},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-tag',{attrs:{\"type\":scope.row.deactivated ? 'danger' : 'success'}},[(_vm.isDesktop)?_c('span',[_vm._v(_vm._s(scope.row.deactivated ? _vm.$t('users.deactivated') : _vm.$t('users.active')))]):_c('i',{class:_vm.activationIcon(scope.row.deactivated)})]),_vm._v(\" \"),(scope.row.roles.admin)?_c('el-tag',[_c('span',[_vm._v(_vm._s(_vm.isDesktop ? _vm.$t('users.admin') : _vm.getFirstLetter(_vm.$t('users.admin'))))])]):_vm._e(),_vm._v(\" \"),(scope.row.roles.moderator)?_c('el-tag',[_c('span',[_vm._v(_vm._s(_vm.isDesktop ? _vm.$t('users.moderator') : _vm.getFirstLetter(_vm.$t('users.moderator'))))])]):_vm._e(),_vm._v(\" \"),_c('el-tooltip',{attrs:{\"content\":_vm.$t('users.unconfirmedEmail'),\"effect\":\"dark\"}},[(scope.row.confirmation_pending)?_c('el-tag',{attrs:{\"type\":\"info\"}},[_vm._v(\"\\n \"+_vm._s(_vm.isDesktop ? _vm.$t('users.unconfirmed') : _vm.getFirstLetter(_vm.$t('users.unconfirmed')))+\"\\n \")]):_vm._e()],1)]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.$t('users.actions'),\"fixed\":\"right\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('moderation-dropdown',{attrs:{\"user\":scope.row,\"page\":'users'},on:{\"open-reset-token-dialog\":_vm.openResetPasswordDialog}})]}}])})],1),_vm._v(\" \"),_c('el-dialog',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],attrs:{\"visible\":_vm.resetPasswordDialogOpen,\"title\":_vm.$t('users.passwordResetTokenCreated'),\"custom-class\":\"password-reset-token-dialog\"},on:{\"update:visible\":function($event){_vm.resetPasswordDialogOpen=$event},\"close\":_vm.closeResetPasswordDialog}},[_c('div',[_c('p',{staticClass:\"password-reset-token\"},[_vm._v(\"Password reset token was generated: \"+_vm._s(_vm.passwordResetToken))]),_vm._v(\" \"),_c('p',[_vm._v(\"You can also use this link to reset password:\\n \"),_c('a',{staticClass:\"reset-password-link\",attrs:{\"href\":_vm.passwordResetLink,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.passwordResetLink))])])])]),_vm._v(\" \"),(!_vm.loading)?_c('div',{staticClass:\"pagination\"},[_c('el-pagination',{attrs:{\"total\":_vm.usersCount,\"current-page\":_vm.currentPage,\"page-size\":_vm.pageSize,\"background\":\"\",\"layout\":\"prev, pager, next\"},on:{\"current-change\":_vm.handlePageChange}})],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UsersFilter.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UsersFilter.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./UsersFilter.vue?vue&type=template&id=4bc96860&scoped=true&\"\nimport script from \"./UsersFilter.vue?vue&type=script&lang=js&\"\nexport * from \"./UsersFilter.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UsersFilter.vue?vue&type=style&index=0&id=4bc96860&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4bc96860\",\n null\n \n)\n\ncomponent.options.__file = \"UsersFilter.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-select',{staticClass:\"select-field\",attrs:{\"clearable\":_vm.isDesktop,\"placeholder\":_vm.$t('usersFilter.inputPlaceholder'),\"multiple\":\"\"},on:{\"change\":_vm.toggleFilters},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}},[_c('el-option-group',{attrs:{\"label\":_vm.$t('usersFilter.byUserType')}},[_c('el-option',{attrs:{\"value\":\"local\"}},[_vm._v(_vm._s(_vm.$t('usersFilter.local')))]),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"external\"}},[_vm._v(_vm._s(_vm.$t('usersFilter.external')))])],1),_vm._v(\" \"),_c('el-option-group',{attrs:{\"label\":_vm.$t('usersFilter.byStatus')}},[_c('el-option',{attrs:{\"value\":\"active\"}},[_vm._v(_vm._s(_vm.$t('usersFilter.active')))]),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"deactivated\"}},[_vm._v(_vm._s(_vm.$t('usersFilter.deactivated')))])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewAccountDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewAccountDialog.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./NewAccountDialog.vue?vue&type=template&id=c89e4c22&\"\nimport script from \"./NewAccountDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./NewAccountDialog.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NewAccountDialog.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"NewAccountDialog.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{attrs:{\"visible\":_vm.isVisible,\"show-close\":false,\"title\":_vm.$t('users.createAccount'),\"custom-class\":\"create-user-dialog\"},on:{\"update:visible\":function($event){_vm.isVisible=$event},\"open\":_vm.resetForm}},[_c('el-form',{ref:\"newUserForm\",attrs:{\"model\":_vm.newUserForm,\"rules\":_vm.rules,\"label-width\":_vm.getLabelWidth,\"status-icon\":\"\"}},[_c('el-form-item',{staticClass:\"create-account-form-item\",attrs:{\"label\":_vm.$t('users.username'),\"prop\":\"nickname\"}},[_c('el-input',{attrs:{\"name\":\"nickname\",\"autofocus\":\"\"},model:{value:(_vm.newUserForm.nickname),callback:function ($$v) {_vm.$set(_vm.newUserForm, \"nickname\", $$v)},expression:\"newUserForm.nickname\"}})],1),_vm._v(\" \"),_c('el-form-item',{staticClass:\"create-account-form-item\",attrs:{\"label\":_vm.$t('users.email'),\"prop\":\"email\"}},[_c('el-input',{attrs:{\"name\":\"email\",\"type\":\"email\"},model:{value:(_vm.newUserForm.email),callback:function ($$v) {_vm.$set(_vm.newUserForm, \"email\", $$v)},expression:\"newUserForm.email\"}})],1),_vm._v(\" \"),_c('el-form-item',{staticClass:\"create-account-form-item-without-margin\",attrs:{\"label\":_vm.$t('users.password'),\"prop\":\"password\"}},[_c('el-input',{attrs:{\"type\":\"password\",\"name\":\"password\",\"autocomplete\":\"off\"},model:{value:(_vm.newUserForm.password),callback:function ($$v) {_vm.$set(_vm.newUserForm, \"password\", $$v)},expression:\"newUserForm.password\"}})],1)],1),_vm._v(\" \"),_c('span',{attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":_vm.closeDialogWindow}},[_vm._v(_vm._s(_vm.$t('users.cancel')))]),_vm._v(\" \"),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":function($event){return _vm.submitForm('newUserForm')}}},[_vm._v(_vm._s(_vm.$t('users.create')))])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=5a7e4206&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dropdown',{attrs:{\"hide-on-click\":false,\"size\":\"small\",\"trigger\":\"click\"}},[_c('div',[(_vm.page === 'users')?_c('span',{staticClass:\"el-dropdown-link\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.moderation'))+\"\\n \"),(_vm.isDesktop)?_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.page === 'userPage')?_c('el-button',{staticClass:\"moderate-user-button\"},[_c('span',{staticClass:\"moderate-user-button-container\"},[_c('span',[_c('i',{staticClass:\"el-icon-edit\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('users.moderateUser'))+\"\\n \")]),_vm._v(\" \"),_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"})])]):_vm._e()],1),_vm._v(\" \"),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[(_vm.showAdminAction(_vm.user))?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.toggleUserRight(_vm.user, 'admin')}}},[_vm._v(\"\\n \"+_vm._s(_vm.user.roles.admin ? _vm.$t('users.revokeAdmin') : _vm.$t('users.grantAdmin'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showAdminAction(_vm.user))?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.toggleUserRight(_vm.user, 'moderator')}}},[_vm._v(\"\\n \"+_vm._s(_vm.user.roles.moderator ? _vm.$t('users.revokeModerator') : _vm.$t('users.grantModerator'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showDeactivatedButton(_vm.user.id))?_c('el-dropdown-item',{attrs:{\"divided\":_vm.showAdminAction(_vm.user)},nativeOn:{\"click\":function($event){return _vm.toggleActivation(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.user.deactivated ? _vm.$t('users.activateAccount') : _vm.$t('users.deactivateAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showDeactivatedButton(_vm.user.id))?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleDeletion(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.deleteAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.user.confirmation_pending)?_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.handleEmailConfirmation(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.confirmAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.user.confirmation_pending)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleConfirmationResend(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.resendConfirmation'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('force_nsfw') },attrs:{\"divided\":_vm.showAdminAction(_vm.user)},nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'force_nsfw')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.forceNsfw'))+\"\\n \"),(_vm.user.tags.includes('force_nsfw'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('strip_media') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'strip_media')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.stripMedia'))+\"\\n \"),(_vm.user.tags.includes('strip_media'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('force_unlisted') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'force_unlisted')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.forceUnlisted'))+\"\\n \"),(_vm.user.tags.includes('force_unlisted'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('sandbox') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'sandbox')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.sandbox'))+\"\\n \"),(_vm.user.tags.includes('sandbox'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('disable_remote_subscription') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'disable_remote_subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableRemoteSubscription'))+\"\\n \"),(_vm.user.tags.includes('disable_remote_subscription'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('disable_any_subscription') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'disable_any_subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableAnySubscription'))+\"\\n \"),(_vm.user.tags.includes('disable_any_subscription'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.getPasswordResetToken(_vm.user.nickname)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.getPasswordResetToken'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.requirePasswordReset(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.requirePasswordReset'))+\"\\n \")]):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./ModerationDropdown.vue?vue&type=template&id=4841469c&\"\nimport script from \"./ModerationDropdown.vue?vue&type=script&lang=js&\"\nexport * from \"./ModerationDropdown.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ModerationDropdown.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"ModerationDropdown.vue\"\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-e404.554bc2e3.js b/priv/static/adminfe/static/js/chunk-e404.554bc2e3.js new file mode 100644 index 000000000..769e9f4f9 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-e404.554bc2e3.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-e404"],{"07OA":function(t,e,s){"use strict";var a=s("51EY");s.n(a).a},"51EY":function(t,e,s){},"8rU9":function(t,e,s){},Eg1M:function(t,e,s){"use strict";var a=s("8rU9");s.n(a).a},"G/Mk":function(t,e,s){"use strict";var a=s("xdcp");s.n(a).a},Lbbz:function(t,e,s){"use strict";var a=s("Sxb/");s.n(a).a},RnhZ:function(t,e,s){var a={"./af":"K/tc","./af.js":"K/tc","./ar":"jnO4","./ar-dz":"o1bE","./ar-dz.js":"o1bE","./ar-kw":"Qj4J","./ar-kw.js":"Qj4J","./ar-ly":"HP3h","./ar-ly.js":"HP3h","./ar-ma":"CoRJ","./ar-ma.js":"CoRJ","./ar-sa":"gjCT","./ar-sa.js":"gjCT","./ar-tn":"bYM6","./ar-tn.js":"bYM6","./ar.js":"jnO4","./az":"SFxW","./az.js":"SFxW","./be":"H8ED","./be.js":"H8ED","./bg":"hKrs","./bg.js":"hKrs","./bm":"p/rL","./bm.js":"p/rL","./bn":"kEOa","./bn.js":"kEOa","./bo":"0mo+","./bo.js":"0mo+","./br":"aIdf","./br.js":"aIdf","./bs":"JVSJ","./bs.js":"JVSJ","./ca":"1xZ4","./ca.js":"1xZ4","./cs":"PA2r","./cs.js":"PA2r","./cv":"A+xa","./cv.js":"A+xa","./cy":"l5ep","./cy.js":"l5ep","./da":"DxQv","./da.js":"DxQv","./de":"tGlX","./de-at":"s+uk","./de-at.js":"s+uk","./de-ch":"u3GI","./de-ch.js":"u3GI","./de.js":"tGlX","./dv":"WYrj","./dv.js":"WYrj","./el":"jUeY","./el.js":"jUeY","./en-SG":"zavE","./en-SG.js":"zavE","./en-au":"Dmvi","./en-au.js":"Dmvi","./en-ca":"OIYi","./en-ca.js":"OIYi","./en-gb":"Oaa7","./en-gb.js":"Oaa7","./en-ie":"4dOw","./en-ie.js":"4dOw","./en-il":"czMo","./en-il.js":"czMo","./en-nz":"b1Dy","./en-nz.js":"b1Dy","./eo":"Zduo","./eo.js":"Zduo","./es":"iYuL","./es-do":"CjzT","./es-do.js":"CjzT","./es-us":"Vclq","./es-us.js":"Vclq","./es.js":"iYuL","./et":"7BjC","./et.js":"7BjC","./eu":"D/JM","./eu.js":"D/JM","./fa":"jfSC","./fa.js":"jfSC","./fi":"gekB","./fi.js":"gekB","./fo":"ByF4","./fo.js":"ByF4","./fr":"nyYc","./fr-ca":"2fjn","./fr-ca.js":"2fjn","./fr-ch":"Dkky","./fr-ch.js":"Dkky","./fr.js":"nyYc","./fy":"cRix","./fy.js":"cRix","./ga":"USCx","./ga.js":"USCx","./gd":"9rRi","./gd.js":"9rRi","./gl":"iEDd","./gl.js":"iEDd","./gom-latn":"DKr+","./gom-latn.js":"DKr+","./gu":"4MV3","./gu.js":"4MV3","./he":"x6pH","./he.js":"x6pH","./hi":"3E1r","./hi.js":"3E1r","./hr":"S6ln","./hr.js":"S6ln","./hu":"WxRl","./hu.js":"WxRl","./hy-am":"1rYy","./hy-am.js":"1rYy","./id":"UDhR","./id.js":"UDhR","./is":"BVg3","./is.js":"BVg3","./it":"bpih","./it-ch":"bxKX","./it-ch.js":"bxKX","./it.js":"bpih","./ja":"B55N","./ja.js":"B55N","./jv":"tUCv","./jv.js":"tUCv","./ka":"IBtZ","./ka.js":"IBtZ","./kk":"bXm7","./kk.js":"bXm7","./km":"6B0Y","./km.js":"6B0Y","./kn":"PpIw","./kn.js":"PpIw","./ko":"Ivi+","./ko.js":"Ivi+","./ku":"JCF/","./ku.js":"JCF/","./ky":"lgnt","./ky.js":"lgnt","./lb":"RAwQ","./lb.js":"RAwQ","./lo":"sp3z","./lo.js":"sp3z","./lt":"JvlW","./lt.js":"JvlW","./lv":"uXwI","./lv.js":"uXwI","./me":"KTz0","./me.js":"KTz0","./mi":"aIsn","./mi.js":"aIsn","./mk":"aQkU","./mk.js":"aQkU","./ml":"AvvY","./ml.js":"AvvY","./mn":"lYtQ","./mn.js":"lYtQ","./mr":"Ob0Z","./mr.js":"Ob0Z","./ms":"6+QB","./ms-my":"ZAMP","./ms-my.js":"ZAMP","./ms.js":"6+QB","./mt":"G0Uy","./mt.js":"G0Uy","./my":"honF","./my.js":"honF","./nb":"bOMt","./nb.js":"bOMt","./ne":"OjkT","./ne.js":"OjkT","./nl":"+s0g","./nl-be":"2ykv","./nl-be.js":"2ykv","./nl.js":"+s0g","./nn":"uEye","./nn.js":"uEye","./pa-in":"8/+R","./pa-in.js":"8/+R","./pl":"jVdC","./pl.js":"jVdC","./pt":"8mBD","./pt-br":"0tRk","./pt-br.js":"0tRk","./pt.js":"8mBD","./ro":"lyxo","./ro.js":"lyxo","./ru":"lXzo","./ru.js":"lXzo","./sd":"Z4QM","./sd.js":"Z4QM","./se":"//9w","./se.js":"//9w","./si":"7aV9","./si.js":"7aV9","./sk":"e+ae","./sk.js":"e+ae","./sl":"gVVK","./sl.js":"gVVK","./sq":"yPMs","./sq.js":"yPMs","./sr":"zx6S","./sr-cyrl":"E+lV","./sr-cyrl.js":"E+lV","./sr.js":"zx6S","./ss":"Ur1D","./ss.js":"Ur1D","./sv":"X709","./sv.js":"X709","./sw":"dNwA","./sw.js":"dNwA","./ta":"PeUW","./ta.js":"PeUW","./te":"XLvN","./te.js":"XLvN","./tet":"V2x9","./tet.js":"V2x9","./tg":"Oxv6","./tg.js":"Oxv6","./th":"EOgW","./th.js":"EOgW","./tl-ph":"Dzi0","./tl-ph.js":"Dzi0","./tlh":"z3Vd","./tlh.js":"z3Vd","./tr":"DoHr","./tr.js":"DoHr","./tzl":"z1FC","./tzl.js":"z1FC","./tzm":"wQk9","./tzm-latn":"tT3J","./tzm-latn.js":"tT3J","./tzm.js":"wQk9","./ug-cn":"YRex","./ug-cn.js":"YRex","./uk":"raLr","./uk.js":"raLr","./ur":"UpQW","./ur.js":"UpQW","./uz":"Loxo","./uz-latn":"AQ68","./uz-latn.js":"AQ68","./uz.js":"Loxo","./vi":"KSF8","./vi.js":"KSF8","./x-pseudo":"/X5v","./x-pseudo.js":"/X5v","./yo":"fzPg","./yo.js":"fzPg","./zh-cn":"XDpg","./zh-cn.js":"XDpg","./zh-hk":"SatO","./zh-hk.js":"SatO","./zh-tw":"kOpN","./zh-tw.js":"kOpN"};function n(t){var e=r(t);return s(e)}function r(t){if(!s.o(a,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return a[t]}n.keys=function(){return Object.keys(a)},n.resolve=r,t.exports=n,n.id="RnhZ"},"Sxb/":function(t,e,s){},cEOe:function(t,e,s){"use strict";s.r(e);var a=s("ZhIB"),n=s.n(a),r=s("wd/R"),o=s.n(r),i={name:"NoteCard",props:{report:{type:Object,required:!0},note:{type:Object,required:!0}},methods:{handleNoteDeletion:function(t,e){var s=this;this.$confirm("Are you sure you want to delete this note?","Warning",{confirmButtonText:"OK",cancelButtonText:"Cancel",type:"warning"}).then(function(){s.$store.dispatch("DeleteReportNote",{noteID:t,reportID:e}),s.$message({type:"success",message:"Delete completed"})}).catch(function(){s.$message({type:"info",message:"Delete canceled"})})},parseTimestamp:function(t){return o()(t).format("YYYY-MM-DD HH:mm")},propertyExists:function(t,e){return t[e]}}},c=(s("G/Mk"),s("KHd+")),l=Object(c.a)(i,function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("el-card",{staticClass:"note-card"},[s("div",{attrs:{slot:"header"},slot:"header"},[s("div",{staticClass:"note-header"},[t.propertyExists(t.note.user,"id")?s("router-link",{staticClass:"router-link",attrs:{to:{name:"UsersShow",params:{id:t.note.user.id}}}},[s("div",{staticClass:"note-actor"},[t.propertyExists(t.note.user,"avatar")?s("img",{staticClass:"note-avatar-img",attrs:{src:t.note.user.avatar,alt:"avatar"}}):t._e(),t._v(" "),t.propertyExists(t.note.user,"nickname")?s("span",{staticClass:"note-actor-name"},[t._v(t._s(t.note.user.nickname))]):s("span",{staticClass:"note-actor-name deactivated"},[t._v("("+t._s(t.$t("users.invalidNickname"))+")")])])]):t._e(),t._v(" "),s("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.handleNoteDeletion(t.note.id,t.report.id)}}},[t._v("\n "+t._s(t.$t("reports.deleteNote"))+"\n ")])],1)]),t._v(" "),s("div",{staticClass:"note-body"},[s("span",{staticClass:"note-content",domProps:{innerHTML:t._s(t.note.content)}}),t._v("\n "+t._s(t.parseTimestamp(t.note.created_at))+"\n ")])])},[],!1,null,null,null);l.options.__file="NoteCard.vue";var u=l.exports,d=s("ot3S"),p={name:"ModerateUserDropdown",props:{account:{type:Object,required:!0}},computed:{tags:function(){return this.account.tags||[]}},methods:{handleDeactivation:function(t){var e=t.nickname;this.$store.dispatch("ToggleUserActivation",e)},handleDeletion:function(t){this.$store.dispatch("DeleteUser",t)},showDeactivatedButton:function(t){return this.$store.state.user.id!==t},toggleTag:function(t,e){t.tags.includes(e)?this.$store.dispatch("RemoveTag",{users:[t],tag:e}):this.$store.dispatch("AddTag",{users:[t],tag:e})}}},v=Object(c.a)(p,function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("el-dropdown",{attrs:{trigger:"click"}},[s("el-button",{attrs:{disabled:!t.account.id,plain:"",size:"small",icon:"el-icon-files"}},[t._v(t._s(t.$t("reports.moderateUser"))+"\n "),s("i",{staticClass:"el-icon-arrow-down el-icon--right"})]),t._v(" "),s("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[t.showDeactivatedButton(t.account)?s("el-dropdown-item",{nativeOn:{click:function(e){return t.handleDeactivation(t.account)}}},[t._v("\n "+t._s(t.account.deactivated?t.$t("users.activateAccount"):t.$t("users.deactivateAccount"))+"\n ")]):t._e(),t._v(" "),t.showDeactivatedButton(t.account.id)?s("el-dropdown-item",{nativeOn:{click:function(e){return t.handleDeletion(t.account.id)}}},[t._v("\n "+t._s(t.$t("users.deleteAccount"))+"\n ")]):t._e(),t._v(" "),s("el-dropdown-item",{class:{"active-tag":t.tags.includes("force_nsfw")},attrs:{divided:!0},nativeOn:{click:function(e){return t.toggleTag(t.account,"force_nsfw")}}},[t._v("\n "+t._s(t.$t("users.forceNsfw"))+"\n "),t.tags.includes("force_nsfw")?s("i",{staticClass:"el-icon-check"}):t._e()]),t._v(" "),s("el-dropdown-item",{class:{"active-tag":t.tags.includes("strip_media")},nativeOn:{click:function(e){return t.toggleTag(t.account,"strip_media")}}},[t._v("\n "+t._s(t.$t("users.stripMedia"))+"\n "),t.tags.includes("strip_media")?s("i",{staticClass:"el-icon-check"}):t._e()]),t._v(" "),s("el-dropdown-item",{class:{"active-tag":t.tags.includes("force_unlisted")},nativeOn:{click:function(e){return t.toggleTag(t.account,"force_unlisted")}}},[t._v("\n "+t._s(t.$t("users.forceUnlisted"))+"\n "),t.tags.includes("force_unlisted")?s("i",{staticClass:"el-icon-check"}):t._e()]),t._v(" "),s("el-dropdown-item",{class:{"active-tag":t.tags.includes("sandbox")},nativeOn:{click:function(e){return t.toggleTag(t.account,"sandbox")}}},[t._v("\n "+t._s(t.$t("users.sandbox"))+"\n "),t.tags.includes("sandbox")?s("i",{staticClass:"el-icon-check"}):t._e()]),t._v(" "),t.account.local?s("el-dropdown-item",{class:{"active-tag":t.tags.includes("disable_remote_subscription")},nativeOn:{click:function(e){return t.toggleTag(t.account,"disable_remote_subscription")}}},[t._v("\n "+t._s(t.$t("users.disableRemoteSubscription"))+"\n "),t.tags.includes("disable_remote_subscription")?s("i",{staticClass:"el-icon-check"}):t._e()]):t._e(),t._v(" "),t.account.local?s("el-dropdown-item",{class:{"active-tag":t.tags.includes("disable_any_subscription")},nativeOn:{click:function(e){return t.toggleTag(t.account,"disable_any_subscription")}}},[t._v("\n "+t._s(t.$t("users.disableAnySubscription"))+"\n "),t.tags.includes("disable_any_subscription")?s("i",{staticClass:"el-icon-check"}):t._e()]):t._e()],1)],1)},[],!1,null,null,null);v.options.__file="ModerateUserDropdown.vue";var _=v.exports,h={name:"Report",components:{Status:d.a,ModerateUserDropdown:_,NoteCard:u},props:{reports:{type:Array,required:!0}},data:function(){return{notes:{}}},computed:{loading:function(){return this.$store.state.reports.loading},pageSize:function(){return this.$store.state.reports.pageSize},totalReportsCount:function(){return this.$store.state.reports.totalReportsCount},currentPage:function(){return this.$store.state.reports.currentPage}},methods:{changeReportState:function(t,e){this.$store.dispatch("ChangeReportState",[{state:t,id:e}])},capitalizeFirstLetter:function(t){return t.charAt(0).toUpperCase()+t.slice(1)},getStateType:function(t){switch(t){case"closed":return"info";case"resolved":return"success";default:return"primary"}},getStatusesTitle:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return"Reported statuses: ".concat(t.length," item(s)")},getNotesTitle:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return"Notes: ".concat(t.length," item(s)")},handleNewNote:function(t){this.$store.dispatch("CreateReportNote",{content:this.notes[t],reportID:t}),this.notes[t]=""},handlePageChange:function(t){this.$store.dispatch("FetchReports",t)},parseTimestamp:function(t){return o()(t).format("L HH:mm")},propertyExists:function(t,e,s){return s?t[e]&&t[s]:t[e]},showStatuses:function(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).length>0}}},m=(s("07OA"),Object(c.a)(h,function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",[s("el-timeline",{staticClass:"reports-timeline"},t._l(t.reports,function(e){return s("el-timeline-item",{key:e.id,staticClass:"timeline-item-container",attrs:{timestamp:t.parseTimestamp(e.created_at),placement:"top"}},[s("el-card",{staticClass:"report"},[s("div",{staticClass:"report-header-container"},[s("div",{staticClass:"title-container"},[t.propertyExists(e.account,"nickname")?s("h3",{staticClass:"report-title"},[t._v(t._s(t.$t("reports.reportOn"))+" "+t._s(e.account.nickname))]):s("h3",{staticClass:"report-title"},[t._v(t._s(t.$t("reports.report")))]),t._v(" "),t.propertyExists(e.account,"id")?s("h5",{staticClass:"id"},[t._v(t._s(t.$t("reports.id"))+": "+t._s(e.id))]):t._e()]),t._v(" "),s("div",[s("el-tag",{staticClass:"report-tag",attrs:{type:t.getStateType(e.state),size:"large"}},[t._v(t._s(t.capitalizeFirstLetter(e.state)))]),t._v(" "),s("el-dropdown",{attrs:{trigger:"click"}},[s("el-button",{staticClass:"report-actions-button",attrs:{plain:"",size:"small",icon:"el-icon-edit"}},[t._v(t._s(t.$t("reports.changeState"))),s("i",{staticClass:"el-icon-arrow-down el-icon--right"})]),t._v(" "),s("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},["resolved"!==e.state?s("el-dropdown-item",{nativeOn:{click:function(s){return t.changeReportState("resolved",e.id)}}},[t._v(t._s(t.$t("reports.resolve")))]):t._e(),t._v(" "),"open"!==e.state?s("el-dropdown-item",{nativeOn:{click:function(s){return t.changeReportState("open",e.id)}}},[t._v(t._s(t.$t("reports.reopen")))]):t._e(),t._v(" "),"closed"!==e.state?s("el-dropdown-item",{nativeOn:{click:function(s){return t.changeReportState("closed",e.id)}}},[t._v(t._s(t.$t("reports.close")))]):t._e()],1)],1),t._v(" "),t.propertyExists(e.account,"nickname")?s("moderate-user-dropdown",{attrs:{account:e.account}}):t._e()],1)]),t._v(" "),s("el-divider",{staticClass:"divider"}),t._v(" "),s("div",{staticClass:"report-account-container"},[s("span",{staticClass:"report-row-key"},[t._v(t._s(t.$t("reports.account"))+":")]),t._v(" "),s("div",{staticClass:"report-account"},[t.propertyExists(e.account,"id")?s("router-link",{staticClass:"router-link",attrs:{to:{name:"UsersShow",params:{id:e.account.id}}}},[t.propertyExists(e.account,"avatar")?s("img",{staticClass:"avatar-img",attrs:{src:e.account.avatar,alt:"avatar"}}):t._e(),t._v(" "),t.propertyExists(e.account,"nickname")?s("span",{staticClass:"report-account-name"},[t._v(t._s(e.account.nickname))]):s("span",{staticClass:"report-account-name deactivated"},[t._v("("+t._s(t.$t("users.invalidNickname"))+")")])]):s("span",{staticClass:"report-account-name deactivated"},[t._v("("+t._s(t.$t("users.invalidNickname"))+")")]),t._v(" "),t.propertyExists(e.account,"url")?s("a",{staticClass:"account",attrs:{href:e.account.url,target:"_blank"}},[t._v("\n "+t._s(t.$t("userProfile.openAccountInInstance"))+"\n "),s("i",{staticClass:"el-icon-top-right"})]):t._e()],1)]),t._v(" "),e.content&&e.content.length>0?s("div",[s("el-divider",{staticClass:"divider"}),t._v(" "),s("span",{staticClass:"report-row-key"},[t._v(t._s(t.$t("reports.content"))+":\n "),s("span",[t._v(t._s(e.content))])])],1):t._e(),t._v(" "),s("el-divider",{staticClass:"divider"}),t._v(" "),s("div",{staticClass:"report-account-container",style:t.showStatuses(e.statuses)?"":"margin-bottom:15px"},[s("span",{staticClass:"report-row-key"},[t._v(t._s(t.$t("reports.actor"))+":")]),t._v(" "),s("div",{staticClass:"report-account"},[t.propertyExists(e.actor,"id")?s("router-link",{staticClass:"router-link",attrs:{to:{name:"UsersShow",params:{id:e.actor.id}}}},[t.propertyExists(e.actor,"avatar")?s("img",{staticClass:"avatar-img",attrs:{src:e.actor.avatar,alt:"avatar"}}):t._e(),t._v(" "),t.propertyExists(e.actor,"nickname")?s("span",{staticClass:"report-account-name"},[t._v(t._s(e.actor.nickname))]):s("span",{staticClass:"report-account-name deactivated"},[t._v("("+t._s(t.$t("users.invalidNickname"))+")")])]):s("span",{staticClass:"report-account-name deactivated"},[t._v("("+t._s(t.$t("users.invalidNickname"))+")")]),t._v(" "),t.propertyExists(e.actor,"url")?s("a",{staticClass:"account",attrs:{href:e.actor.url,target:"_blank"}},[t._v("\n "+t._s(t.$t("userProfile.openAccountInInstance"))+"\n "),s("i",{staticClass:"el-icon-top-right"})]):t._e()],1)]),t._v(" "),t.showStatuses(e.statuses)?s("div",{staticClass:"reported-statuses"},[s("el-collapse",[s("el-collapse-item",{attrs:{title:t.getStatusesTitle(e.statuses)}},t._l(e.statuses,function(a){return s("div",{key:a.id},[s("status",{attrs:{status:a,account:a.account.nickname?a.account:e.account,"show-checkbox":!1,page:t.currentPage}})],1)}),0)],1)],1):t._e(),t._v(" "),s("div",{staticClass:"report-notes"},[s("el-collapse",[s("el-collapse-item",{attrs:{title:t.getNotesTitle(e.notes)}},t._l(e.notes,function(t,a){return s("note-card",{key:a,attrs:{note:t,report:e}})}),1)],1),t._v(" "),s("div",{staticClass:"report-note-form"},[s("el-input",{attrs:{placeholder:t.$t("reports.leaveNote"),type:"textarea",rows:"2"},model:{value:t.notes[e.id],callback:function(s){t.$set(t.notes,e.id,s)},expression:"notes[report.id]"}}),t._v(" "),s("div",{staticClass:"report-post-note"},[s("el-button",{on:{click:function(s){return t.handleNewNote(e.id)}}},[t._v(t._s(t.$t("reports.postNote")))])],1)],1)],1)],1)],1)}),1),t._v(" "),t.loading?t._e():s("div",{staticClass:"reports-pagination"},[s("el-pagination",{attrs:{total:t.totalReportsCount,"current-page":t.currentPage,"page-size":t.pageSize,background:"",layout:"prev, pager, next"},on:{"current-change":t.handlePageChange}})],1)],1)},[],!1,null,null,null));m.options.__file="Report.vue";var g=m.exports,j=s("mSNy"),f={data:function(){return{filter:"open",options:[{value:"open",label:j.a.t("reportsFilter.open")},{value:"closed",label:j.a.t("reportsFilter.closed")},{value:"resolved",label:j.a.t("reportsFilter.resolved")}]}},created:function(){this.$store.dispatch("SetFilter",this.$data.filter)},methods:{toggleFilters:function(){this.$store.dispatch("SetFilter",this.$data.filter),this.$store.dispatch("ClearFetchedReports"),this.$store.dispatch("FetchReports",1)}}},k=(s("Eg1M"),Object(c.a)(f,function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("el-select",{staticClass:"select-field",attrs:{placeholder:t.$t("reportsFilter.inputPlaceholder"),clearable:"","value-key":"value"},on:{change:t.toggleFilters},model:{value:t.filter,callback:function(e){t.filter=e},expression:"filter"}},t._l(t.options,function(e){return s("el-option",{key:e.value,attrs:{label:e.label,value:e.value}},[t._v(t._s(e.label))])}),1)},[],!1,null,"ecc36f5a",null));k.options.__file="ReportsFilter.vue";var b=k.exports,C={components:{RebootButton:s("rIUS").a,Report:g,ReportsFilter:b},computed:{loading:function(){return this.$store.state.reports.loading},normalizedReportsCount:function(){return n()(this.$store.state.reports.totalReportsCount).format("0a")},reports:function(){return this.$store.state.reports.fetchedReports}},mounted:function(){this.$store.dispatch("GetNodeInfo"),this.$store.dispatch("NeedReboot"),this.$store.dispatch("FetchReports",1)}},y=(s("Lbbz"),Object(c.a)(C,function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"reports-container"},[s("div",{staticClass:"reports-header-container"},[s("h1",[t._v("\n "+t._s(t.$t("reports.reports"))+"\n "),s("span",{staticClass:"report-count"},[t._v("("+t._s(t.normalizedReportsCount)+")")])]),t._v(" "),s("reboot-button")],1),t._v(" "),s("div",{staticClass:"reports-filter-container"},[s("reports-filter")],1),t._v(" "),s("div",{staticClass:"block"},[s("report",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],attrs:{reports:t.reports}}),t._v(" "),0===t.reports.length?s("div",{staticClass:"no-reports-message"},[s("p",[t._v("There are no reports to display")])]):t._e()],1)])},[],!1,null,"fa601560",null));y.options.__file="index.vue";e.default=y.exports},xdcp:function(t,e,s){}}]); +//# sourceMappingURL=chunk-e404.554bc2e3.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-e404.554bc2e3.js.map b/priv/static/adminfe/static/js/chunk-e404.554bc2e3.js.map new file mode 100644 index 000000000..e8214adbb --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-e404.554bc2e3.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/reports/components/Report.vue?ad5f","webpack:///./src/views/reports/components/ReportsFilter.vue?a490","webpack:///./src/views/reports/components/NoteCard.vue?b93a","webpack:///./src/views/reports/index.vue?cda2","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/views/reports/index.vue?43f7","webpack:///./src/views/reports/components/NoteCard.vue?6205","webpack:///src/views/reports/components/NoteCard.vue","webpack:///./src/views/reports/components/NoteCard.vue","webpack:///./src/views/reports/components/NoteCard.vue?6977","webpack:///./src/views/reports/components/ModerateUserDropdown.vue?6745","webpack:///src/views/reports/components/ModerateUserDropdown.vue","webpack:///./src/views/reports/components/ModerateUserDropdown.vue","webpack:///./src/views/reports/components/ModerateUserDropdown.vue?65ad","webpack:///./src/views/reports/components/Report.vue?a764","webpack:///src/views/reports/components/Report.vue","webpack:///./src/views/reports/components/Report.vue","webpack:///./src/views/reports/components/Report.vue?9727","webpack:///./src/views/reports/components/ReportsFilter.vue?e3b7","webpack:///src/views/reports/components/ReportsFilter.vue","webpack:///./src/views/reports/components/ReportsFilter.vue","webpack:///./src/views/reports/components/ReportsFilter.vue?f6ad","webpack:///./src/views/reports/index.vue?3bcc","webpack:///src/views/reports/index.vue","webpack:///./src/views/reports/index.vue"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Report_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ReportsFilter_vue_vue_type_style_index_0_id_ecc36f5a_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_NoteCard_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_fa601560_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","map","./af","./af.js","./ar","./ar-dz","./ar-dz.js","./ar-kw","./ar-kw.js","./ar-ly","./ar-ly.js","./ar-ma","./ar-ma.js","./ar-sa","./ar-sa.js","./ar-tn","./ar-tn.js","./ar.js","./az","./az.js","./be","./be.js","./bg","./bg.js","./bm","./bm.js","./bn","./bn.js","./bo","./bo.js","./br","./br.js","./bs","./bs.js","./ca","./ca.js","./cs","./cs.js","./cv","./cv.js","./cy","./cy.js","./da","./da.js","./de","./de-at","./de-at.js","./de-ch","./de-ch.js","./de.js","./dv","./dv.js","./el","./el.js","./en-SG","./en-SG.js","./en-au","./en-au.js","./en-ca","./en-ca.js","./en-gb","./en-gb.js","./en-ie","./en-ie.js","./en-il","./en-il.js","./en-nz","./en-nz.js","./eo","./eo.js","./es","./es-do","./es-do.js","./es-us","./es-us.js","./es.js","./et","./et.js","./eu","./eu.js","./fa","./fa.js","./fi","./fi.js","./fo","./fo.js","./fr","./fr-ca","./fr-ca.js","./fr-ch","./fr-ch.js","./fr.js","./fy","./fy.js","./ga","./ga.js","./gd","./gd.js","./gl","./gl.js","./gom-latn","./gom-latn.js","./gu","./gu.js","./he","./he.js","./hi","./hi.js","./hr","./hr.js","./hu","./hu.js","./hy-am","./hy-am.js","./id","./id.js","./is","./is.js","./it","./it-ch","./it-ch.js","./it.js","./ja","./ja.js","./jv","./jv.js","./ka","./ka.js","./kk","./kk.js","./km","./km.js","./kn","./kn.js","./ko","./ko.js","./ku","./ku.js","./ky","./ky.js","./lb","./lb.js","./lo","./lo.js","./lt","./lt.js","./lv","./lv.js","./me","./me.js","./mi","./mi.js","./mk","./mk.js","./ml","./ml.js","./mn","./mn.js","./mr","./mr.js","./ms","./ms-my","./ms-my.js","./ms.js","./mt","./mt.js","./my","./my.js","./nb","./nb.js","./ne","./ne.js","./nl","./nl-be","./nl-be.js","./nl.js","./nn","./nn.js","./pa-in","./pa-in.js","./pl","./pl.js","./pt","./pt-br","./pt-br.js","./pt.js","./ro","./ro.js","./ru","./ru.js","./sd","./sd.js","./se","./se.js","./si","./si.js","./sk","./sk.js","./sl","./sl.js","./sq","./sq.js","./sr","./sr-cyrl","./sr-cyrl.js","./sr.js","./ss","./ss.js","./sv","./sv.js","./sw","./sw.js","./ta","./ta.js","./te","./te.js","./tet","./tet.js","./tg","./tg.js","./th","./th.js","./tl-ph","./tl-ph.js","./tlh","./tlh.js","./tr","./tr.js","./tzl","./tzl.js","./tzm","./tzm-latn","./tzm-latn.js","./tzm.js","./ug-cn","./ug-cn.js","./uk","./uk.js","./ur","./ur.js","./uz","./uz-latn","./uz-latn.js","./uz.js","./vi","./vi.js","./x-pseudo","./x-pseudo.js","./yo","./yo.js","./zh-cn","./zh-cn.js","./zh-hk","./zh-hk.js","./zh-tw","./zh-tw.js","webpackContext","req","id","webpackContextResolve","o","e","Error","code","keys","Object","resolve","module","exports","components_NoteCardvue_type_script_lang_js_","name","props","report","type","required","note","methods","handleNoteDeletion","noteID","reportID","_this","this","$confirm","confirmButtonText","cancelButtonText","then","$store","dispatch","$message","message","catch","parseTimestamp","timestamp","moment_default","format","propertyExists","account","property","component","componentNormalizer","_vm","_h","$createElement","_c","_self","staticClass","attrs","slot","user","to","params","src","avatar","alt","_e","_v","_s","nickname","$t","size","nativeOn","click","$event","domProps","innerHTML","content","created_at","options","__file","NoteCard","components_ModerateUserDropdownvue_type_script_lang_js_","computed","tags","handleDeactivation","_ref","handleDeletion","showDeactivatedButton","state","toggleTag","tag","includes","users","ModerateUserDropdown_component","trigger","disabled","plain","icon","deactivated","class","active-tag","divided","ModerateUserDropdown","components_Reportvue_type_script_lang_js_","components","Status","reports","Array","data","notes","loading","pageSize","totalReportsCount","currentPage","changeReportState","capitalizeFirstLetter","str","charAt","toUpperCase","slice","getStateType","getStatusesTitle","statuses","arguments","length","undefined","concat","getNotesTitle","handleNewNote","handlePageChange","page","_secondProperty","showStatuses","Report_component","_l","key","placement","href","url","target","style","actor","title","status","show-checkbox","index","placeholder","rows","model","value","callback","$$v","$set","expression","on","total","current-page","page-size","background","layout","current-change","Report","components_ReportsFiltervue_type_script_lang_js_","filter","label","lang","t","created","$data","toggleFilters","ReportsFilter_component","clearable","value-key","change","item","ReportsFilter","views_reportsvue_type_script_lang_js_","RebootButton","normalizedReportsCount","numeral_default","fetchedReports","mounted","reports_component","directives","rawName","__webpack_exports__"],"mappings":"wGAAA,IAAAA,EAAAC,EAAA,QAAAA,EAAAC,EAAAF,GAA0e,uFCA1e,IAAAG,EAAAF,EAAA,QAAAA,EAAAC,EAAAC,GAAygB,uCCAzgB,IAAAC,EAAAH,EAAA,QAAAA,EAAAC,EAAAE,GAA4e,qCCA5e,IAAAC,EAAAJ,EAAA,QAAAA,EAAAC,EAAAG,GAA+e,wBCA/e,IAAAC,GACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACA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","file":"static/js/chunk-e404.554bc2e3.js","sourcesContent":["import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Report.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Report.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReportsFilter.vue?vue&type=style&index=0&id=ecc36f5a&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReportsFilter.vue?vue&type=style&index=0&id=ecc36f5a&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NoteCard.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NoteCard.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=fa601560&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=fa601560&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","var map = {\n\t\"./af\": \"K/tc\",\n\t\"./af.js\": \"K/tc\",\n\t\"./ar\": \"jnO4\",\n\t\"./ar-dz\": \"o1bE\",\n\t\"./ar-dz.js\": \"o1bE\",\n\t\"./ar-kw\": \"Qj4J\",\n\t\"./ar-kw.js\": \"Qj4J\",\n\t\"./ar-ly\": \"HP3h\",\n\t\"./ar-ly.js\": \"HP3h\",\n\t\"./ar-ma\": \"CoRJ\",\n\t\"./ar-ma.js\": \"CoRJ\",\n\t\"./ar-sa\": \"gjCT\",\n\t\"./ar-sa.js\": \"gjCT\",\n\t\"./ar-tn\": \"bYM6\",\n\t\"./ar-tn.js\": \"bYM6\",\n\t\"./ar.js\": \"jnO4\",\n\t\"./az\": \"SFxW\",\n\t\"./az.js\": \"SFxW\",\n\t\"./be\": \"H8ED\",\n\t\"./be.js\": \"H8ED\",\n\t\"./bg\": \"hKrs\",\n\t\"./bg.js\": \"hKrs\",\n\t\"./bm\": \"p/rL\",\n\t\"./bm.js\": \"p/rL\",\n\t\"./bn\": \"kEOa\",\n\t\"./bn.js\": \"kEOa\",\n\t\"./bo\": \"0mo+\",\n\t\"./bo.js\": \"0mo+\",\n\t\"./br\": \"aIdf\",\n\t\"./br.js\": \"aIdf\",\n\t\"./bs\": \"JVSJ\",\n\t\"./bs.js\": \"JVSJ\",\n\t\"./ca\": \"1xZ4\",\n\t\"./ca.js\": \"1xZ4\",\n\t\"./cs\": \"PA2r\",\n\t\"./cs.js\": \"PA2r\",\n\t\"./cv\": \"A+xa\",\n\t\"./cv.js\": \"A+xa\",\n\t\"./cy\": \"l5ep\",\n\t\"./cy.js\": \"l5ep\",\n\t\"./da\": \"DxQv\",\n\t\"./da.js\": \"DxQv\",\n\t\"./de\": \"tGlX\",\n\t\"./de-at\": \"s+uk\",\n\t\"./de-at.js\": \"s+uk\",\n\t\"./de-ch\": \"u3GI\",\n\t\"./de-ch.js\": \"u3GI\",\n\t\"./de.js\": \"tGlX\",\n\t\"./dv\": \"WYrj\",\n\t\"./dv.js\": \"WYrj\",\n\t\"./el\": \"jUeY\",\n\t\"./el.js\": \"jUeY\",\n\t\"./en-SG\": \"zavE\",\n\t\"./en-SG.js\": \"zavE\",\n\t\"./en-au\": \"Dmvi\",\n\t\"./en-au.js\": \"Dmvi\",\n\t\"./en-ca\": \"OIYi\",\n\t\"./en-ca.js\": \"OIYi\",\n\t\"./en-gb\": \"Oaa7\",\n\t\"./en-gb.js\": \"Oaa7\",\n\t\"./en-ie\": \"4dOw\",\n\t\"./en-ie.js\": \"4dOw\",\n\t\"./en-il\": \"czMo\",\n\t\"./en-il.js\": \"czMo\",\n\t\"./en-nz\": \"b1Dy\",\n\t\"./en-nz.js\": \"b1Dy\",\n\t\"./eo\": \"Zduo\",\n\t\"./eo.js\": \"Zduo\",\n\t\"./es\": \"iYuL\",\n\t\"./es-do\": \"CjzT\",\n\t\"./es-do.js\": \"CjzT\",\n\t\"./es-us\": \"Vclq\",\n\t\"./es-us.js\": \"Vclq\",\n\t\"./es.js\": \"iYuL\",\n\t\"./et\": \"7BjC\",\n\t\"./et.js\": \"7BjC\",\n\t\"./eu\": \"D/JM\",\n\t\"./eu.js\": \"D/JM\",\n\t\"./fa\": \"jfSC\",\n\t\"./fa.js\": \"jfSC\",\n\t\"./fi\": \"gekB\",\n\t\"./fi.js\": \"gekB\",\n\t\"./fo\": \"ByF4\",\n\t\"./fo.js\": \"ByF4\",\n\t\"./fr\": \"nyYc\",\n\t\"./fr-ca\": \"2fjn\",\n\t\"./fr-ca.js\": \"2fjn\",\n\t\"./fr-ch\": \"Dkky\",\n\t\"./fr-ch.js\": \"Dkky\",\n\t\"./fr.js\": \"nyYc\",\n\t\"./fy\": \"cRix\",\n\t\"./fy.js\": \"cRix\",\n\t\"./ga\": \"USCx\",\n\t\"./ga.js\": \"USCx\",\n\t\"./gd\": \"9rRi\",\n\t\"./gd.js\": \"9rRi\",\n\t\"./gl\": \"iEDd\",\n\t\"./gl.js\": \"iEDd\",\n\t\"./gom-latn\": \"DKr+\",\n\t\"./gom-latn.js\": \"DKr+\",\n\t\"./gu\": \"4MV3\",\n\t\"./gu.js\": \"4MV3\",\n\t\"./he\": \"x6pH\",\n\t\"./he.js\": \"x6pH\",\n\t\"./hi\": \"3E1r\",\n\t\"./hi.js\": \"3E1r\",\n\t\"./hr\": \"S6ln\",\n\t\"./hr.js\": \"S6ln\",\n\t\"./hu\": \"WxRl\",\n\t\"./hu.js\": \"WxRl\",\n\t\"./hy-am\": \"1rYy\",\n\t\"./hy-am.js\": \"1rYy\",\n\t\"./id\": \"UDhR\",\n\t\"./id.js\": \"UDhR\",\n\t\"./is\": \"BVg3\",\n\t\"./is.js\": \"BVg3\",\n\t\"./it\": \"bpih\",\n\t\"./it-ch\": \"bxKX\",\n\t\"./it-ch.js\": \"bxKX\",\n\t\"./it.js\": \"bpih\",\n\t\"./ja\": \"B55N\",\n\t\"./ja.js\": \"B55N\",\n\t\"./jv\": \"tUCv\",\n\t\"./jv.js\": \"tUCv\",\n\t\"./ka\": \"IBtZ\",\n\t\"./ka.js\": \"IBtZ\",\n\t\"./kk\": \"bXm7\",\n\t\"./kk.js\": \"bXm7\",\n\t\"./km\": \"6B0Y\",\n\t\"./km.js\": \"6B0Y\",\n\t\"./kn\": \"PpIw\",\n\t\"./kn.js\": \"PpIw\",\n\t\"./ko\": \"Ivi+\",\n\t\"./ko.js\": \"Ivi+\",\n\t\"./ku\": \"JCF/\",\n\t\"./ku.js\": \"JCF/\",\n\t\"./ky\": \"lgnt\",\n\t\"./ky.js\": \"lgnt\",\n\t\"./lb\": \"RAwQ\",\n\t\"./lb.js\": \"RAwQ\",\n\t\"./lo\": \"sp3z\",\n\t\"./lo.js\": \"sp3z\",\n\t\"./lt\": \"JvlW\",\n\t\"./lt.js\": \"JvlW\",\n\t\"./lv\": \"uXwI\",\n\t\"./lv.js\": \"uXwI\",\n\t\"./me\": \"KTz0\",\n\t\"./me.js\": \"KTz0\",\n\t\"./mi\": \"aIsn\",\n\t\"./mi.js\": \"aIsn\",\n\t\"./mk\": \"aQkU\",\n\t\"./mk.js\": \"aQkU\",\n\t\"./ml\": \"AvvY\",\n\t\"./ml.js\": \"AvvY\",\n\t\"./mn\": \"lYtQ\",\n\t\"./mn.js\": \"lYtQ\",\n\t\"./mr\": \"Ob0Z\",\n\t\"./mr.js\": \"Ob0Z\",\n\t\"./ms\": \"6+QB\",\n\t\"./ms-my\": \"ZAMP\",\n\t\"./ms-my.js\": \"ZAMP\",\n\t\"./ms.js\": \"6+QB\",\n\t\"./mt\": \"G0Uy\",\n\t\"./mt.js\": \"G0Uy\",\n\t\"./my\": \"honF\",\n\t\"./my.js\": \"honF\",\n\t\"./nb\": \"bOMt\",\n\t\"./nb.js\": \"bOMt\",\n\t\"./ne\": \"OjkT\",\n\t\"./ne.js\": \"OjkT\",\n\t\"./nl\": \"+s0g\",\n\t\"./nl-be\": \"2ykv\",\n\t\"./nl-be.js\": \"2ykv\",\n\t\"./nl.js\": \"+s0g\",\n\t\"./nn\": \"uEye\",\n\t\"./nn.js\": \"uEye\",\n\t\"./pa-in\": \"8/+R\",\n\t\"./pa-in.js\": \"8/+R\",\n\t\"./pl\": \"jVdC\",\n\t\"./pl.js\": \"jVdC\",\n\t\"./pt\": \"8mBD\",\n\t\"./pt-br\": \"0tRk\",\n\t\"./pt-br.js\": \"0tRk\",\n\t\"./pt.js\": \"8mBD\",\n\t\"./ro\": \"lyxo\",\n\t\"./ro.js\": \"lyxo\",\n\t\"./ru\": \"lXzo\",\n\t\"./ru.js\": \"lXzo\",\n\t\"./sd\": \"Z4QM\",\n\t\"./sd.js\": \"Z4QM\",\n\t\"./se\": \"//9w\",\n\t\"./se.js\": \"//9w\",\n\t\"./si\": \"7aV9\",\n\t\"./si.js\": \"7aV9\",\n\t\"./sk\": \"e+ae\",\n\t\"./sk.js\": \"e+ae\",\n\t\"./sl\": \"gVVK\",\n\t\"./sl.js\": \"gVVK\",\n\t\"./sq\": \"yPMs\",\n\t\"./sq.js\": \"yPMs\",\n\t\"./sr\": \"zx6S\",\n\t\"./sr-cyrl\": \"E+lV\",\n\t\"./sr-cyrl.js\": \"E+lV\",\n\t\"./sr.js\": \"zx6S\",\n\t\"./ss\": \"Ur1D\",\n\t\"./ss.js\": \"Ur1D\",\n\t\"./sv\": \"X709\",\n\t\"./sv.js\": \"X709\",\n\t\"./sw\": \"dNwA\",\n\t\"./sw.js\": \"dNwA\",\n\t\"./ta\": \"PeUW\",\n\t\"./ta.js\": \"PeUW\",\n\t\"./te\": \"XLvN\",\n\t\"./te.js\": \"XLvN\",\n\t\"./tet\": \"V2x9\",\n\t\"./tet.js\": \"V2x9\",\n\t\"./tg\": \"Oxv6\",\n\t\"./tg.js\": \"Oxv6\",\n\t\"./th\": \"EOgW\",\n\t\"./th.js\": \"EOgW\",\n\t\"./tl-ph\": \"Dzi0\",\n\t\"./tl-ph.js\": \"Dzi0\",\n\t\"./tlh\": \"z3Vd\",\n\t\"./tlh.js\": \"z3Vd\",\n\t\"./tr\": \"DoHr\",\n\t\"./tr.js\": \"DoHr\",\n\t\"./tzl\": \"z1FC\",\n\t\"./tzl.js\": \"z1FC\",\n\t\"./tzm\": \"wQk9\",\n\t\"./tzm-latn\": \"tT3J\",\n\t\"./tzm-latn.js\": \"tT3J\",\n\t\"./tzm.js\": \"wQk9\",\n\t\"./ug-cn\": \"YRex\",\n\t\"./ug-cn.js\": \"YRex\",\n\t\"./uk\": \"raLr\",\n\t\"./uk.js\": \"raLr\",\n\t\"./ur\": \"UpQW\",\n\t\"./ur.js\": \"UpQW\",\n\t\"./uz\": \"Loxo\",\n\t\"./uz-latn\": \"AQ68\",\n\t\"./uz-latn.js\": \"AQ68\",\n\t\"./uz.js\": \"Loxo\",\n\t\"./vi\": \"KSF8\",\n\t\"./vi.js\": \"KSF8\",\n\t\"./x-pseudo\": \"/X5v\",\n\t\"./x-pseudo.js\": \"/X5v\",\n\t\"./yo\": \"fzPg\",\n\t\"./yo.js\": \"fzPg\",\n\t\"./zh-cn\": \"XDpg\",\n\t\"./zh-cn.js\": \"XDpg\",\n\t\"./zh-hk\": \"SatO\",\n\t\"./zh-hk.js\": \"SatO\",\n\t\"./zh-tw\": \"kOpN\",\n\t\"./zh-tw.js\": \"kOpN\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"RnhZ\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"reports-container\"},[_c('div',{staticClass:\"reports-header-container\"},[_c('h1',[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.reports'))+\"\\n \"),_c('span',{staticClass:\"report-count\"},[_vm._v(\"(\"+_vm._s(_vm.normalizedReportsCount)+\")\")])]),_vm._v(\" \"),_c('reboot-button')],1),_vm._v(\" \"),_c('div',{staticClass:\"reports-filter-container\"},[_c('reports-filter')],1),_vm._v(\" \"),_c('div',{staticClass:\"block\"},[_c('report',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],attrs:{\"reports\":_vm.reports}}),_vm._v(\" \"),(_vm.reports.length === 0)?_c('div',{staticClass:\"no-reports-message\"},[_c('p',[_vm._v(\"There are no reports to display\")])]):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NoteCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NoteCard.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./NoteCard.vue?vue&type=template&id=030edbfd&\"\nimport script from \"./NoteCard.vue?vue&type=script&lang=js&\"\nexport * from \"./NoteCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NoteCard.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"NoteCard.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-card',{staticClass:\"note-card\"},[_c('div',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('div',{staticClass:\"note-header\"},[(_vm.propertyExists(_vm.note.user, 'id'))?_c('router-link',{staticClass:\"router-link\",attrs:{\"to\":{ name: 'UsersShow', params: { id: _vm.note.user.id }}}},[_c('div',{staticClass:\"note-actor\"},[(_vm.propertyExists(_vm.note.user, 'avatar'))?_c('img',{staticClass:\"note-avatar-img\",attrs:{\"src\":_vm.note.user.avatar,\"alt\":\"avatar\"}}):_vm._e(),_vm._v(\" \"),(_vm.propertyExists(_vm.note.user, 'nickname'))?_c('span',{staticClass:\"note-actor-name\"},[_vm._v(_vm._s(_vm.note.user.nickname))]):_c('span',{staticClass:\"note-actor-name deactivated\"},[_vm._v(\"(\"+_vm._s(_vm.$t('users.invalidNickname'))+\")\")])])]):_vm._e(),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.handleNoteDeletion(_vm.note.id, _vm.report.id)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.deleteNote'))+\"\\n \")])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"note-body\"},[_c('span',{staticClass:\"note-content\",domProps:{\"innerHTML\":_vm._s(_vm.note.content)}}),_vm._v(\"\\n \"+_vm._s(_vm.parseTimestamp(_vm.note.created_at))+\"\\n \")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerateUserDropdown.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerateUserDropdown.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./ModerateUserDropdown.vue?vue&type=template&id=bcf0134c&\"\nimport script from \"./ModerateUserDropdown.vue?vue&type=script&lang=js&\"\nexport * from \"./ModerateUserDropdown.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"ModerateUserDropdown.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dropdown',{attrs:{\"trigger\":\"click\"}},[_c('el-button',{attrs:{\"disabled\":!_vm.account.id,\"plain\":\"\",\"size\":\"small\",\"icon\":\"el-icon-files\"}},[_vm._v(_vm._s(_vm.$t('reports.moderateUser'))+\"\\n \"),_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"})]),_vm._v(\" \"),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[(_vm.showDeactivatedButton(_vm.account))?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleDeactivation(_vm.account)}}},[_vm._v(\"\\n \"+_vm._s(_vm.account.deactivated ? _vm.$t('users.activateAccount') : _vm.$t('users.deactivateAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showDeactivatedButton(_vm.account.id))?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleDeletion(_vm.account.id)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.deleteAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.tags.includes('force_nsfw') },attrs:{\"divided\":true},nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.account, 'force_nsfw')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.forceNsfw'))+\"\\n \"),(_vm.tags.includes('force_nsfw'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.tags.includes('strip_media') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.account, 'strip_media')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.stripMedia'))+\"\\n \"),(_vm.tags.includes('strip_media'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.tags.includes('force_unlisted') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.account, 'force_unlisted')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.forceUnlisted'))+\"\\n \"),(_vm.tags.includes('force_unlisted'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.tags.includes('sandbox') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.account, 'sandbox')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.sandbox'))+\"\\n \"),(_vm.tags.includes('sandbox'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),(_vm.account.local)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.tags.includes('disable_remote_subscription') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.account, 'disable_remote_subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableRemoteSubscription'))+\"\\n \"),(_vm.tags.includes('disable_remote_subscription'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.account.local)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.tags.includes('disable_any_subscription') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.account, 'disable_any_subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableAnySubscription'))+\"\\n \"),(_vm.tags.includes('disable_any_subscription'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Report.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Report.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Report.vue?vue&type=template&id=14ff42ce&\"\nimport script from \"./Report.vue?vue&type=script&lang=js&\"\nexport * from \"./Report.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Report.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Report.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('el-timeline',{staticClass:\"reports-timeline\"},_vm._l((_vm.reports),function(report){return _c('el-timeline-item',{key:report.id,staticClass:\"timeline-item-container\",attrs:{\"timestamp\":_vm.parseTimestamp(report.created_at),\"placement\":\"top\"}},[_c('el-card',{staticClass:\"report\"},[_c('div',{staticClass:\"report-header-container\"},[_c('div',{staticClass:\"title-container\"},[(_vm.propertyExists(report.account, 'nickname'))?_c('h3',{staticClass:\"report-title\"},[_vm._v(_vm._s(_vm.$t('reports.reportOn'))+\" \"+_vm._s(report.account.nickname))]):_c('h3',{staticClass:\"report-title\"},[_vm._v(_vm._s(_vm.$t('reports.report')))]),_vm._v(\" \"),(_vm.propertyExists(report.account, 'id'))?_c('h5',{staticClass:\"id\"},[_vm._v(_vm._s(_vm.$t('reports.id'))+\": \"+_vm._s(report.id))]):_vm._e()]),_vm._v(\" \"),_c('div',[_c('el-tag',{staticClass:\"report-tag\",attrs:{\"type\":_vm.getStateType(report.state),\"size\":\"large\"}},[_vm._v(_vm._s(_vm.capitalizeFirstLetter(report.state)))]),_vm._v(\" \"),_c('el-dropdown',{attrs:{\"trigger\":\"click\"}},[_c('el-button',{staticClass:\"report-actions-button\",attrs:{\"plain\":\"\",\"size\":\"small\",\"icon\":\"el-icon-edit\"}},[_vm._v(_vm._s(_vm.$t('reports.changeState'))),_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"})]),_vm._v(\" \"),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[(report.state !== 'resolved')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeReportState('resolved', report.id)}}},[_vm._v(_vm._s(_vm.$t('reports.resolve')))]):_vm._e(),_vm._v(\" \"),(report.state !== 'open')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeReportState('open', report.id)}}},[_vm._v(_vm._s(_vm.$t('reports.reopen')))]):_vm._e(),_vm._v(\" \"),(report.state !== 'closed')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeReportState('closed', report.id)}}},[_vm._v(_vm._s(_vm.$t('reports.close')))]):_vm._e()],1)],1),_vm._v(\" \"),(_vm.propertyExists(report.account, 'nickname'))?_c('moderate-user-dropdown',{attrs:{\"account\":report.account}}):_vm._e()],1)]),_vm._v(\" \"),_c('el-divider',{staticClass:\"divider\"}),_vm._v(\" \"),_c('div',{staticClass:\"report-account-container\"},[_c('span',{staticClass:\"report-row-key\"},[_vm._v(_vm._s(_vm.$t('reports.account'))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"report-account\"},[(_vm.propertyExists(report.account, 'id'))?_c('router-link',{staticClass:\"router-link\",attrs:{\"to\":{ name: 'UsersShow', params: { id: report.account.id }}}},[(_vm.propertyExists(report.account, 'avatar'))?_c('img',{staticClass:\"avatar-img\",attrs:{\"src\":report.account.avatar,\"alt\":\"avatar\"}}):_vm._e(),_vm._v(\" \"),(_vm.propertyExists(report.account, 'nickname'))?_c('span',{staticClass:\"report-account-name\"},[_vm._v(_vm._s(report.account.nickname))]):_c('span',{staticClass:\"report-account-name deactivated\"},[_vm._v(\"(\"+_vm._s(_vm.$t('users.invalidNickname'))+\")\")])]):_c('span',{staticClass:\"report-account-name deactivated\"},[_vm._v(\"(\"+_vm._s(_vm.$t('users.invalidNickname'))+\")\")]),_vm._v(\" \"),(_vm.propertyExists(report.account, 'url'))?_c('a',{staticClass:\"account\",attrs:{\"href\":report.account.url,\"target\":\"_blank\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('userProfile.openAccountInInstance'))+\"\\n \"),_c('i',{staticClass:\"el-icon-top-right\"})]):_vm._e()],1)]),_vm._v(\" \"),(report.content && report.content.length > 0)?_c('div',[_c('el-divider',{staticClass:\"divider\"}),_vm._v(\" \"),_c('span',{staticClass:\"report-row-key\"},[_vm._v(_vm._s(_vm.$t('reports.content'))+\":\\n \"),_c('span',[_vm._v(_vm._s(report.content))])])],1):_vm._e(),_vm._v(\" \"),_c('el-divider',{staticClass:\"divider\"}),_vm._v(\" \"),_c('div',{staticClass:\"report-account-container\",style:(_vm.showStatuses(report.statuses) ? '' : 'margin-bottom:15px')},[_c('span',{staticClass:\"report-row-key\"},[_vm._v(_vm._s(_vm.$t('reports.actor'))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"report-account\"},[(_vm.propertyExists(report.actor, 'id'))?_c('router-link',{staticClass:\"router-link\",attrs:{\"to\":{ name: 'UsersShow', params: { id: report.actor.id }}}},[(_vm.propertyExists(report.actor, 'avatar'))?_c('img',{staticClass:\"avatar-img\",attrs:{\"src\":report.actor.avatar,\"alt\":\"avatar\"}}):_vm._e(),_vm._v(\" \"),(_vm.propertyExists(report.actor, 'nickname'))?_c('span',{staticClass:\"report-account-name\"},[_vm._v(_vm._s(report.actor.nickname))]):_c('span',{staticClass:\"report-account-name deactivated\"},[_vm._v(\"(\"+_vm._s(_vm.$t('users.invalidNickname'))+\")\")])]):_c('span',{staticClass:\"report-account-name deactivated\"},[_vm._v(\"(\"+_vm._s(_vm.$t('users.invalidNickname'))+\")\")]),_vm._v(\" \"),(_vm.propertyExists(report.actor, 'url'))?_c('a',{staticClass:\"account\",attrs:{\"href\":report.actor.url,\"target\":\"_blank\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('userProfile.openAccountInInstance'))+\"\\n \"),_c('i',{staticClass:\"el-icon-top-right\"})]):_vm._e()],1)]),_vm._v(\" \"),(_vm.showStatuses(report.statuses))?_c('div',{staticClass:\"reported-statuses\"},[_c('el-collapse',[_c('el-collapse-item',{attrs:{\"title\":_vm.getStatusesTitle(report.statuses)}},_vm._l((report.statuses),function(status){return _c('div',{key:status.id},[_c('status',{attrs:{\"status\":status,\"account\":status.account.nickname ? status.account : report.account,\"show-checkbox\":false,\"page\":_vm.currentPage}})],1)}),0)],1)],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"report-notes\"},[_c('el-collapse',[_c('el-collapse-item',{attrs:{\"title\":_vm.getNotesTitle(report.notes)}},_vm._l((report.notes),function(note,index){return _c('note-card',{key:index,attrs:{\"note\":note,\"report\":report}})}),1)],1),_vm._v(\" \"),_c('div',{staticClass:\"report-note-form\"},[_c('el-input',{attrs:{\"placeholder\":_vm.$t('reports.leaveNote'),\"type\":\"textarea\",\"rows\":\"2\"},model:{value:(_vm.notes[report.id]),callback:function ($$v) {_vm.$set(_vm.notes, report.id, $$v)},expression:\"notes[report.id]\"}}),_vm._v(\" \"),_c('div',{staticClass:\"report-post-note\"},[_c('el-button',{on:{\"click\":function($event){return _vm.handleNewNote(report.id)}}},[_vm._v(_vm._s(_vm.$t('reports.postNote')))])],1)],1)],1)],1)],1)}),1),_vm._v(\" \"),(!_vm.loading)?_c('div',{staticClass:\"reports-pagination\"},[_c('el-pagination',{attrs:{\"total\":_vm.totalReportsCount,\"current-page\":_vm.currentPage,\"page-size\":_vm.pageSize,\"background\":\"\",\"layout\":\"prev, pager, next\"},on:{\"current-change\":_vm.handlePageChange}})],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReportsFilter.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReportsFilter.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./ReportsFilter.vue?vue&type=template&id=ecc36f5a&scoped=true&\"\nimport script from \"./ReportsFilter.vue?vue&type=script&lang=js&\"\nexport * from \"./ReportsFilter.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ReportsFilter.vue?vue&type=style&index=0&id=ecc36f5a&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ecc36f5a\",\n null\n \n)\n\ncomponent.options.__file = \"ReportsFilter.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-select',{staticClass:\"select-field\",attrs:{\"placeholder\":_vm.$t('reportsFilter.inputPlaceholder'),\"clearable\":\"\",\"value-key\":\"value\"},on:{\"change\":_vm.toggleFilters},model:{value:(_vm.filter),callback:function ($$v) {_vm.filter=$$v},expression:\"filter\"}},_vm._l((_vm.options),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}},[_vm._v(_vm._s(item.label))])}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=fa601560&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=fa601560&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"fa601560\",\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-e458.bb460d81.js b/priv/static/adminfe/static/js/chunk-e458.bb460d81.js deleted file mode 100644 index a08717166..000000000 --- a/priv/static/adminfe/static/js/chunk-e458.bb460d81.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-e458"],{FtQ1:function(t,s,e){"use strict";e.r(s);var a=e("RIqP"),n=e.n(a),i=e("i7Kn"),o=e("ot3S"),r=e("rIUS"),c=e("ZhIB"),u=e.n(c),l={name:"Statuses",components:{MultipleUsersMenu:i.a,RebootButton:r.a,Status:o.a},data:function(){return{selectedUsers:[]}},computed:{allLoaded:function(){return this.$store.state.status.statusesByInstance.allLoaded},buttonLoading:function(){return this.$store.state.status.statusesByInstance.buttonLoading},currentInstance:function(){return this.selectedInstance===this.$store.state.user.authHost},instances:function(){return[this.$store.state.user.authHost].concat(n()(this.$store.state.peers.fetchedPeers))},isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device},isTablet:function(){return"tablet"===this.$store.state.app.device},loadingPeers:function(){return this.$store.state.peers.loading},page:function(){return this.$store.state.status.statusesByInstance.page},pageSize:function(){return this.$store.state.status.statusesByInstance.pageSize},selectedInstance:{get:function(){return this.$store.state.status.statusesByInstance.selectedInstance},set:function(t){this.$store.dispatch("HandleFilterChange",t)}},showLocal:{get:function(){return this.$store.state.status.statusesByInstance.showLocal},set:function(t){this.$store.dispatch("HandleLocalCheckboxChange",t)}},showPrivate:{get:function(){return this.$store.state.status.statusesByInstance.showPrivate},set:function(t){this.$store.dispatch("HandleGodmodeCheckboxChange",t)}},statuses:function(){return this.$store.state.status.fetchedStatuses},statusVisibility:function(){return this.$store.state.status.statusVisibility}},mounted:function(){this.$store.dispatch("GetNodeInfo"),this.$store.dispatch("NeedReboot"),this.$store.dispatch("FetchPeers"),this.$store.dispatch("FetchStatusesCount")},destroyed:function(){this.clearSelection(),this.$store.dispatch("ClearState")},methods:{clearSelection:function(){this.selectedUsers=[]},handleFilterChange:function(){this.$store.dispatch("HandlePageChange",1),this.$store.dispatch("FetchStatusesByInstance")},handleLoadMore:function(){this.$store.dispatch("HandlePageChange",this.page+1),this.$store.dispatch("FetchStatusesPageByInstance")},handleStatusSelection:function(t){void 0===this.selectedUsers.find(function(s){return t.id===s.id})&&(this.selectedUsers=[].concat(n()(this.selectedUsers),[t]))},normalizedCount:function(t){return u()(t).format("0a")}}},d=(e("QOJ7"),e("KHd+")),h=Object(d.a)(l,function(){var t=this,s=t.$createElement,e=t._self._c||s;return t.loadingPeers?t._e():e("div",{staticClass:"statuses-container"},[e("div",{staticClass:"statuses-header"},[e("h1",[t._v("\n "+t._s(t.$t("statuses.statuses"))+"\n ")]),t._v(" "),e("reboot-button")],1),t._v(" "),e("div",{staticClass:"statuses-header-container"},[e("el-button-group",[e("el-button",{staticClass:"direct-button",attrs:{plain:""}},[t._v("\n "+t._s(t.$t("statuses.direct"))+": "+t._s(t.normalizedCount(t.statusVisibility.direct))+"\n ")]),t._v(" "),e("el-button",{staticClass:"private-button",attrs:{plain:""}},[t._v("\n "+t._s(t.$t("statuses.private"))+": "+t._s(t.normalizedCount(t.statusVisibility.private))+"\n ")]),t._v(" "),e("el-button",{staticClass:"public-button",attrs:{plain:""}},[t._v("\n "+t._s(t.$t("statuses.public"))+": "+t._s(t.normalizedCount(t.statusVisibility.public))+"\n ")]),t._v(" "),e("el-button",{staticClass:"unlisted-button",attrs:{plain:""}},[t._v("\n "+t._s(t.$t("statuses.unlisted"))+": "+t._s(t.normalizedCount(t.statusVisibility.unlisted))+"\n ")])],1)],1),t._v(" "),e("div",{staticClass:"filter-container"},[e("el-select",{staticClass:"select-instance",attrs:{placeholder:t.$t("statuses.instanceFilter"),"no-data-text":t.$t("statuses.noInstances"),filterable:"",clearable:""},on:{change:t.handleFilterChange},model:{value:t.selectedInstance,callback:function(s){t.selectedInstance=s},expression:"selectedInstance"}},t._l(t.instances,function(t,s){return e("el-option",{key:s,attrs:{label:t,value:t}})}),1),t._v(" "),e("multiple-users-menu",{attrs:{"selected-users":t.selectedUsers},on:{"apply-action":t.clearSelection}})],1),t._v(" "),t.currentInstance?e("div",{staticClass:"checkbox-container"},[e("el-checkbox",{staticClass:"show-private-statuses",model:{value:t.showLocal,callback:function(s){t.showLocal=s},expression:"showLocal"}},[t._v("\n "+t._s(t.$t("statuses.onlyLocalStatuses"))+"\n ")]),t._v(" "),e("el-checkbox",{staticClass:"show-private-statuses",model:{value:t.showPrivate,callback:function(s){t.showPrivate=s},expression:"showPrivate"}},[t._v("\n "+t._s(t.$t("statuses.showPrivateStatuses"))+"\n ")])],1):t._e(),t._v(" "),0===t.statuses.length?e("p",{staticClass:"no-statuses"},[t._v(t._s(t.$t("userProfile.noStatuses")))]):t._e(),t._v(" "),t._l(t.statuses,function(s){return e("div",{key:s.id,staticClass:"status-container"},[e("status",{attrs:{status:s,account:s.account,"show-checkbox":t.isDesktop,"fetch-statuses-by-instance":!0},on:{"status-selection":t.handleStatusSelection}})],1)}),t._v(" "),t.statuses.length>0?e("div",{staticClass:"statuses-pagination"},[t.allLoaded?e("el-button",{attrs:{icon:"el-icon-check",circle:""}}):e("el-button",{attrs:{loading:t.buttonLoading},on:{click:t.handleLoadMore}},[t._v(t._s(t.$t("statuses.loadMore")))])],1):t._e()],2)},[],!1,null,null,null);h.options.__file="index.vue";s.default=h.exports},KmHg:function(t,s,e){},Kw8l:function(t,s,e){"use strict";var a=e("cRgN");e.n(a).a},QOJ7:function(t,s,e){"use strict";var a=e("KmHg");e.n(a).a},RnhZ:function(t,s,e){var a={"./af":"K/tc","./af.js":"K/tc","./ar":"jnO4","./ar-dz":"o1bE","./ar-dz.js":"o1bE","./ar-kw":"Qj4J","./ar-kw.js":"Qj4J","./ar-ly":"HP3h","./ar-ly.js":"HP3h","./ar-ma":"CoRJ","./ar-ma.js":"CoRJ","./ar-sa":"gjCT","./ar-sa.js":"gjCT","./ar-tn":"bYM6","./ar-tn.js":"bYM6","./ar.js":"jnO4","./az":"SFxW","./az.js":"SFxW","./be":"H8ED","./be.js":"H8ED","./bg":"hKrs","./bg.js":"hKrs","./bm":"p/rL","./bm.js":"p/rL","./bn":"kEOa","./bn.js":"kEOa","./bo":"0mo+","./bo.js":"0mo+","./br":"aIdf","./br.js":"aIdf","./bs":"JVSJ","./bs.js":"JVSJ","./ca":"1xZ4","./ca.js":"1xZ4","./cs":"PA2r","./cs.js":"PA2r","./cv":"A+xa","./cv.js":"A+xa","./cy":"l5ep","./cy.js":"l5ep","./da":"DxQv","./da.js":"DxQv","./de":"tGlX","./de-at":"s+uk","./de-at.js":"s+uk","./de-ch":"u3GI","./de-ch.js":"u3GI","./de.js":"tGlX","./dv":"WYrj","./dv.js":"WYrj","./el":"jUeY","./el.js":"jUeY","./en-SG":"zavE","./en-SG.js":"zavE","./en-au":"Dmvi","./en-au.js":"Dmvi","./en-ca":"OIYi","./en-ca.js":"OIYi","./en-gb":"Oaa7","./en-gb.js":"Oaa7","./en-ie":"4dOw","./en-ie.js":"4dOw","./en-il":"czMo","./en-il.js":"czMo","./en-nz":"b1Dy","./en-nz.js":"b1Dy","./eo":"Zduo","./eo.js":"Zduo","./es":"iYuL","./es-do":"CjzT","./es-do.js":"CjzT","./es-us":"Vclq","./es-us.js":"Vclq","./es.js":"iYuL","./et":"7BjC","./et.js":"7BjC","./eu":"D/JM","./eu.js":"D/JM","./fa":"jfSC","./fa.js":"jfSC","./fi":"gekB","./fi.js":"gekB","./fo":"ByF4","./fo.js":"ByF4","./fr":"nyYc","./fr-ca":"2fjn","./fr-ca.js":"2fjn","./fr-ch":"Dkky","./fr-ch.js":"Dkky","./fr.js":"nyYc","./fy":"cRix","./fy.js":"cRix","./ga":"USCx","./ga.js":"USCx","./gd":"9rRi","./gd.js":"9rRi","./gl":"iEDd","./gl.js":"iEDd","./gom-latn":"DKr+","./gom-latn.js":"DKr+","./gu":"4MV3","./gu.js":"4MV3","./he":"x6pH","./he.js":"x6pH","./hi":"3E1r","./hi.js":"3E1r","./hr":"S6ln","./hr.js":"S6ln","./hu":"WxRl","./hu.js":"WxRl","./hy-am":"1rYy","./hy-am.js":"1rYy","./id":"UDhR","./id.js":"UDhR","./is":"BVg3","./is.js":"BVg3","./it":"bpih","./it-ch":"bxKX","./it-ch.js":"bxKX","./it.js":"bpih","./ja":"B55N","./ja.js":"B55N","./jv":"tUCv","./jv.js":"tUCv","./ka":"IBtZ","./ka.js":"IBtZ","./kk":"bXm7","./kk.js":"bXm7","./km":"6B0Y","./km.js":"6B0Y","./kn":"PpIw","./kn.js":"PpIw","./ko":"Ivi+","./ko.js":"Ivi+","./ku":"JCF/","./ku.js":"JCF/","./ky":"lgnt","./ky.js":"lgnt","./lb":"RAwQ","./lb.js":"RAwQ","./lo":"sp3z","./lo.js":"sp3z","./lt":"JvlW","./lt.js":"JvlW","./lv":"uXwI","./lv.js":"uXwI","./me":"KTz0","./me.js":"KTz0","./mi":"aIsn","./mi.js":"aIsn","./mk":"aQkU","./mk.js":"aQkU","./ml":"AvvY","./ml.js":"AvvY","./mn":"lYtQ","./mn.js":"lYtQ","./mr":"Ob0Z","./mr.js":"Ob0Z","./ms":"6+QB","./ms-my":"ZAMP","./ms-my.js":"ZAMP","./ms.js":"6+QB","./mt":"G0Uy","./mt.js":"G0Uy","./my":"honF","./my.js":"honF","./nb":"bOMt","./nb.js":"bOMt","./ne":"OjkT","./ne.js":"OjkT","./nl":"+s0g","./nl-be":"2ykv","./nl-be.js":"2ykv","./nl.js":"+s0g","./nn":"uEye","./nn.js":"uEye","./pa-in":"8/+R","./pa-in.js":"8/+R","./pl":"jVdC","./pl.js":"jVdC","./pt":"8mBD","./pt-br":"0tRk","./pt-br.js":"0tRk","./pt.js":"8mBD","./ro":"lyxo","./ro.js":"lyxo","./ru":"lXzo","./ru.js":"lXzo","./sd":"Z4QM","./sd.js":"Z4QM","./se":"//9w","./se.js":"//9w","./si":"7aV9","./si.js":"7aV9","./sk":"e+ae","./sk.js":"e+ae","./sl":"gVVK","./sl.js":"gVVK","./sq":"yPMs","./sq.js":"yPMs","./sr":"zx6S","./sr-cyrl":"E+lV","./sr-cyrl.js":"E+lV","./sr.js":"zx6S","./ss":"Ur1D","./ss.js":"Ur1D","./sv":"X709","./sv.js":"X709","./sw":"dNwA","./sw.js":"dNwA","./ta":"PeUW","./ta.js":"PeUW","./te":"XLvN","./te.js":"XLvN","./tet":"V2x9","./tet.js":"V2x9","./tg":"Oxv6","./tg.js":"Oxv6","./th":"EOgW","./th.js":"EOgW","./tl-ph":"Dzi0","./tl-ph.js":"Dzi0","./tlh":"z3Vd","./tlh.js":"z3Vd","./tr":"DoHr","./tr.js":"DoHr","./tzl":"z1FC","./tzl.js":"z1FC","./tzm":"wQk9","./tzm-latn":"tT3J","./tzm-latn.js":"tT3J","./tzm.js":"wQk9","./ug-cn":"YRex","./ug-cn.js":"YRex","./uk":"raLr","./uk.js":"raLr","./ur":"UpQW","./ur.js":"UpQW","./uz":"Loxo","./uz-latn":"AQ68","./uz-latn.js":"AQ68","./uz.js":"Loxo","./vi":"KSF8","./vi.js":"KSF8","./x-pseudo":"/X5v","./x-pseudo.js":"/X5v","./yo":"fzPg","./yo.js":"fzPg","./zh-cn":"XDpg","./zh-cn.js":"XDpg","./zh-hk":"SatO","./zh-hk.js":"SatO","./zh-tw":"kOpN","./zh-tw.js":"kOpN"};function n(t){var s=i(t);return e(s)}function i(t){if(!e.o(a,t)){var s=new Error("Cannot find module '"+t+"'");throw s.code="MODULE_NOT_FOUND",s}return a[t]}n.keys=function(){return Object.keys(a)},n.resolve=i,t.exports=n,n.id="RnhZ"},cRgN:function(t,s,e){},ot3S:function(t,s,e){"use strict";var a=e("wd/R"),n=e.n(a),i={name:"Status",props:{account:{type:Object,required:!1,default:function(){return{}}},fetchStatusesByInstance:{type:Boolean,required:!1,default:!1},showCheckbox:{type:Boolean,required:!0,default:!1},status:{type:Object,required:!0},page:{type:Number,required:!1,default:0},userId:{type:String,required:!1,default:""},godmode:{type:Boolean,required:!1,default:!1}},data:function(){return{showHiddenStatus:!1}},methods:{capitalizeFirstLetter:function(t){return t.charAt(0).toUpperCase()+t.slice(1)},changeStatus:function(t,s,e){this.$store.dispatch("ChangeStatusScope",{statusId:t,isSensitive:s,visibility:e,reportCurrentPage:this.page,userId:this.userId,godmode:this.godmode,fetchStatusesByInstance:this.fetchStatusesByInstance})},deleteStatus:function(t){var s=this;this.$confirm("Are you sure you want to delete this status?","Warning",{confirmButtonText:"OK",cancelButtonText:"Cancel",type:"warning"}).then(function(){s.$store.dispatch("DeleteStatus",{statusId:t,reportCurrentPage:s.page,userId:s.userId,godmode:s.godmode,fetchStatusesByInstance:s.fetchStatusesByInstance}),s.$message({type:"success",message:"Delete completed"})}).catch(function(){s.$message({type:"info",message:"Delete canceled"})})},optionPercent:function(t,s){var e=t.options.reduce(function(t,s){return t+s.votes_count},0);return 0===e?0:+(s.votes_count/e*100).toFixed(1)},parseTimestamp:function(t){return n()(t).format("YYYY-MM-DD HH:mm")},handleStatusSelection:function(t){this.$emit("status-selection",t)}}},o=(e("Kw8l"),e("KHd+")),r=Object(o.a)(i,function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("div",[t.status.deleted?e("el-card",{staticClass:"status-card"},[e("div",{attrs:{slot:"header"},slot:"header"},[e("div",{staticClass:"status-header"},[e("div",{staticClass:"status-account-container"},[e("div",{staticClass:"status-account"},[e("h4",{staticClass:"status-deleted"},[t._v(t._s(t.$t("reports.statusDeleted")))])])])])]),t._v(" "),e("div",{staticClass:"status-body"},[t.status.content?e("span",{staticClass:"status-content",domProps:{innerHTML:t._s(t.status.content)}}):e("span",{staticClass:"status-without-content"},[t._v("no content")])]),t._v(" "),t.status.created_at?e("a",{staticClass:"account",attrs:{href:t.status.url,target:"_blank"}},[t._v("\n "+t._s(t.parseTimestamp(t.status.created_at))+"\n ")]):t._e()]):e("el-card",{staticClass:"status-card"},[e("div",{attrs:{slot:"header"},slot:"header"},[e("div",{staticClass:"status-header"},[e("div",{staticClass:"status-account-container"},[e("div",{staticClass:"status-account"},[t.showCheckbox?e("el-checkbox",{staticClass:"status-checkbox",on:{change:function(s){return t.handleStatusSelection(t.account)}}}):t._e(),t._v(" "),e("img",{staticClass:"status-avatar-img",attrs:{src:t.account.avatar}}),t._v(" "),t.account.deactivated?e("span",[e("h3",{staticClass:"status-account-name"},[t._v(t._s(t.account.display_name))]),t._v(" "),e("h3",{staticClass:"status-account-name deactivated"},[t._v(" (deactivated)")])]):e("a",{staticClass:"account",attrs:{href:t.account.url,target:"_blank"}},[e("h3",{staticClass:"status-account-name"},[t._v(t._s(t.account.display_name))])])],1)]),t._v(" "),e("div",{staticClass:"status-actions"},[t.status.sensitive?e("el-tag",{attrs:{type:"warning",size:"large"}},[t._v(t._s(t.$t("reports.sensitive")))]):t._e(),t._v(" "),e("el-tag",{attrs:{size:"large"}},[t._v(t._s(t.capitalizeFirstLetter(t.status.visibility)))]),t._v(" "),e("el-dropdown",{attrs:{trigger:"click"}},[e("el-button",{staticClass:"status-actions-button",attrs:{plain:"",size:"small",icon:"el-icon-edit"}},[t._v("\n "+t._s(t.$t("reports.changeScope"))),e("i",{staticClass:"el-icon-arrow-down el-icon--right"})]),t._v(" "),e("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[t.status.sensitive?t._e():e("el-dropdown-item",{nativeOn:{click:function(s){return t.changeStatus(t.status.id,!0,t.status.visibility)}}},[t._v("\n "+t._s(t.$t("reports.addSensitive"))+"\n ")]),t._v(" "),t.status.sensitive?e("el-dropdown-item",{nativeOn:{click:function(s){return t.changeStatus(t.status.id,!1,t.status.visibility)}}},[t._v("\n "+t._s(t.$t("reports.removeSensitive"))+"\n ")]):t._e(),t._v(" "),"public"!==t.status.visibility?e("el-dropdown-item",{nativeOn:{click:function(s){return t.changeStatus(t.status.id,t.status.sensitive,"public")}}},[t._v("\n "+t._s(t.$t("reports.public"))+"\n ")]):t._e(),t._v(" "),"private"!==t.status.visibility?e("el-dropdown-item",{nativeOn:{click:function(s){return t.changeStatus(t.status.id,t.status.sensitive,"private")}}},[t._v("\n "+t._s(t.$t("reports.private"))+"\n ")]):t._e(),t._v(" "),"unlisted"!==t.status.visibility?e("el-dropdown-item",{nativeOn:{click:function(s){return t.changeStatus(t.status.id,t.status.sensitive,"unlisted")}}},[t._v("\n "+t._s(t.$t("reports.unlisted"))+"\n ")]):t._e(),t._v(" "),e("el-dropdown-item",{nativeOn:{click:function(s){return t.deleteStatus(t.status.id)}}},[t._v("\n "+t._s(t.$t("reports.deleteStatus"))+"\n ")])],1)],1)],1)])]),t._v(" "),e("div",{staticClass:"status-body"},[t.status.spoiler_text?e("div",[e("strong",[t._v(t._s(t.status.spoiler_text))]),t._v(" "),t.showHiddenStatus?t._e():e("el-button",{staticClass:"show-more-button",attrs:{size:"mini"},on:{click:function(s){t.showHiddenStatus=!0}}},[t._v("Show more")]),t._v(" "),t.showHiddenStatus?e("el-button",{staticClass:"show-more-button",attrs:{size:"mini"},on:{click:function(s){t.showHiddenStatus=!1}}},[t._v("Show less")]):t._e(),t._v(" "),t.showHiddenStatus?e("div",[e("span",{staticClass:"status-content",domProps:{innerHTML:t._s(t.status.content)}}),t._v(" "),t.status.poll?e("div",{staticClass:"poll"},[e("ul",t._l(t.status.poll.options,function(s,a){return e("li",{key:a},[t._v("\n "+t._s(s.title)+"\n "),e("el-progress",{attrs:{percentage:t.optionPercent(t.status.poll,s)}})],1)}),0)]):t._e(),t._v(" "),t._l(t.status.media_attachments,function(t,s){return e("div",{key:s,staticClass:"image"},[e("img",{attrs:{src:t.preview_url}})])})],2):t._e()],1):t._e(),t._v(" "),t.status.spoiler_text?t._e():e("div",[e("span",{staticClass:"status-content",domProps:{innerHTML:t._s(t.status.content)}}),t._v(" "),t.status.poll?e("div",{staticClass:"poll"},[e("ul",t._l(t.status.poll.options,function(s,a){return e("li",{key:a},[t._v("\n "+t._s(s.title)+"\n "),e("el-progress",{attrs:{percentage:t.optionPercent(t.status.poll,s)}})],1)}),0)]):t._e(),t._v(" "),t._l(t.status.media_attachments,function(t,s){return e("div",{key:s,staticClass:"image"},[e("img",{attrs:{src:t.preview_url}})])})],2),t._v(" "),e("a",{staticClass:"account",attrs:{href:t.status.url,target:"_blank"}},[t._v("\n "+t._s(t.parseTimestamp(t.status.created_at))+"\n ")])])])],1)},[],!1,null,null,null);r.options.__file="index.vue";s.a=r.exports}}]); -//# sourceMappingURL=chunk-e458.bb460d81.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-e458.bb460d81.js.map b/priv/static/adminfe/static/js/chunk-e458.bb460d81.js.map deleted file mode 100644 index 89f05fb99..000000000 --- a/priv/static/adminfe/static/js/chunk-e458.bb460d81.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./src/views/statuses/index.vue?ffa7","webpack:///./src/views/statuses/index.vue?1423","webpack:///src/views/statuses/index.vue","webpack:///./src/views/statuses/index.vue","webpack:///./src/components/Status/index.vue?aecc","webpack:///./src/views/statuses/index.vue?f25c","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/components/Status/index.vue?f9b2","webpack:///./src/components/Status/index.vue?6071","webpack:///src/components/Status/index.vue","webpack:///./src/components/Status/index.vue"],"names":["views_statusesvue_type_script_lang_js_","name","components","MultipleUsersMenu","RebootButton","Status","data","selectedUsers","computed","allLoaded","this","$store","state","status","statusesByInstance","buttonLoading","currentInstance","selectedInstance","user","authHost","instances","concat","toConsumableArray_default","peers","fetchedPeers","isDesktop","app","device","isMobile","isTablet","loadingPeers","loading","page","pageSize","get","set","instance","dispatch","showLocal","value","showPrivate","statuses","fetchedStatuses","statusVisibility","mounted","destroyed","clearSelection","methods","handleFilterChange","handleLoadMore","handleStatusSelection","undefined","find","selectedUser","id","normalizedCount","count","numeral_default","format","component","Object","componentNormalizer","_vm","_h","$createElement","_c","_self","_e","staticClass","_v","_s","$t","attrs","plain","direct","private","public","unlisted","placeholder","no-data-text","filterable","clearable","on","change","model","callback","$$v","expression","_l","index","key","label","selected-users","apply-action","length","account","show-checkbox","fetch-statuses-by-instance","status-selection","icon","circle","click","options","__file","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","map","./af","./af.js","./ar","./ar-dz","./ar-dz.js","./ar-kw","./ar-kw.js","./ar-ly","./ar-ly.js","./ar-ma","./ar-ma.js","./ar-sa","./ar-sa.js","./ar-tn","./ar-tn.js","./ar.js","./az","./az.js","./be","./be.js","./bg","./bg.js","./bm","./bm.js","./bn","./bn.js","./bo","./bo.js","./br","./br.js","./bs","./bs.js","./ca","./ca.js","./cs","./cs.js","./cv","./cv.js","./cy","./cy.js","./da","./da.js","./de","./de-at","./de-at.js","./de-ch","./de-ch.js","./de.js","./dv","./dv.js","./el","./el.js","./en-SG","./en-SG.js","./en-au","./en-au.js","./en-ca","./en-ca.js","./en-gb","./en-gb.js","./en-ie","./en-ie.js","./en-il","./en-il.js","./en-nz","./en-nz.js","./eo","./eo.js","./es","./es-do","./es-do.js","./es-us","./es-us.js","./es.js","./et","./et.js","./eu","./eu.js","./fa","./fa.js","./fi","./fi.js","./fo","./fo.js","./fr","./fr-ca","./fr-ca.js","./fr-ch","./fr-ch.js","./fr.js","./fy","./fy.js","./ga","./ga.js","./gd","./gd.js","./gl","./gl.js","./gom-latn","./gom-latn.js","./gu","./gu.js","./he","./he.js","./hi","./hi.js","./hr","./hr.js","./hu","./hu.js","./hy-am","./hy-am.js","./id","./id.js","./is","./is.js","./it","./it-ch","./it-ch.js","./it.js","./ja","./ja.js","./jv","./jv.js","./ka","./ka.js","./kk","./kk.js","./km","./km.js","./kn","./kn.js","./ko","./ko.js","./ku","./ku.js","./ky","./ky.js","./lb","./lb.js","./lo","./lo.js","./lt","./lt.js","./lv","./lv.js","./me","./me.js","./mi","./mi.js","./mk","./mk.js","./ml","./ml.js","./mn","./mn.js","./mr","./mr.js","./ms","./ms-my","./ms-my.js","./ms.js","./mt","./mt.js","./my","./my.js","./nb","./nb.js","./ne","./ne.js","./nl","./nl-be","./nl-be.js","./nl.js","./nn","./nn.js","./pa-in","./pa-in.js","./pl","./pl.js","./pt","./pt-br","./pt-br.js","./pt.js","./ro","./ro.js","./ru","./ru.js","./sd","./sd.js","./se","./se.js","./si","./si.js","./sk","./sk.js","./sl","./sl.js","./sq","./sq.js","./sr","./sr-cyrl","./sr-cyrl.js","./sr.js","./ss","./ss.js","./sv","./sv.js","./sw","./sw.js","./ta","./ta.js","./te","./te.js","./tet","./tet.js","./tg","./tg.js","./th","./th.js","./tl-ph","./tl-ph.js","./tlh","./tlh.js","./tr","./tr.js","./tzl","./tzl.js","./tzm","./tzm-latn","./tzm-latn.js","./tzm.js","./ug-cn","./ug-cn.js","./uk","./uk.js","./ur","./ur.js","./uz","./uz-latn","./uz-latn.js","./uz.js","./vi","./vi.js","./x-pseudo","./x-pseudo.js","./yo","./yo.js","./zh-cn","./zh-cn.js","./zh-hk","./zh-hk.js","./zh-tw","./zh-tw.js","webpackContext","req","webpackContextResolve","o","e","Error","code","keys","resolve","module","exports","components_Statusvue_type_script_lang_js_","props","type","required","default","fetchStatusesByInstance","Boolean","showCheckbox","Number","userId","String","godmode","showHiddenStatus","capitalizeFirstLetter","str","charAt","toUpperCase","slice","changeStatus","statusId","isSensitive","visibility","reportCurrentPage","deleteStatus","_this","$confirm","confirmButtonText","cancelButtonText","then","$message","message","catch","optionPercent","poll","pollOption","allVotes","reduce","acc","option","votes_count","toFixed","parseTimestamp","timestamp","moment_default","$emit","deleted","slot","domProps","innerHTML","content","href","url","target","created_at","$event","src","avatar","deactivated","display_name","size","trigger","sensitive","nativeOn","spoiler_text","title","percentage","attachment","preview_url"],"mappings":"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A,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAA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","file":"static/js/chunk-e458.bb460d81.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loadingPeers)?_c('div',{staticClass:\"statuses-container\"},[_c('div',{staticClass:\"statuses-header\"},[_c('h1',[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.statuses'))+\"\\n \")]),_vm._v(\" \"),_c('reboot-button')],1),_vm._v(\" \"),_c('div',{staticClass:\"statuses-header-container\"},[_c('el-button-group',[_c('el-button',{staticClass:\"direct-button\",attrs:{\"plain\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.direct'))+\": \"+_vm._s(_vm.normalizedCount(_vm.statusVisibility.direct))+\"\\n \")]),_vm._v(\" \"),_c('el-button',{staticClass:\"private-button\",attrs:{\"plain\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.private'))+\": \"+_vm._s(_vm.normalizedCount(_vm.statusVisibility.private))+\"\\n \")]),_vm._v(\" \"),_c('el-button',{staticClass:\"public-button\",attrs:{\"plain\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.public'))+\": \"+_vm._s(_vm.normalizedCount(_vm.statusVisibility.public))+\"\\n \")]),_vm._v(\" \"),_c('el-button',{staticClass:\"unlisted-button\",attrs:{\"plain\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.unlisted'))+\": \"+_vm._s(_vm.normalizedCount(_vm.statusVisibility.unlisted))+\"\\n \")])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"filter-container\"},[_c('el-select',{staticClass:\"select-instance\",attrs:{\"placeholder\":_vm.$t('statuses.instanceFilter'),\"no-data-text\":_vm.$t('statuses.noInstances'),\"filterable\":\"\",\"clearable\":\"\"},on:{\"change\":_vm.handleFilterChange},model:{value:(_vm.selectedInstance),callback:function ($$v) {_vm.selectedInstance=$$v},expression:\"selectedInstance\"}},_vm._l((_vm.instances),function(instance,index){return _c('el-option',{key:index,attrs:{\"label\":instance,\"value\":instance}})}),1),_vm._v(\" \"),_c('multiple-users-menu',{attrs:{\"selected-users\":_vm.selectedUsers},on:{\"apply-action\":_vm.clearSelection}})],1),_vm._v(\" \"),(_vm.currentInstance)?_c('div',{staticClass:\"checkbox-container\"},[_c('el-checkbox',{staticClass:\"show-private-statuses\",model:{value:(_vm.showLocal),callback:function ($$v) {_vm.showLocal=$$v},expression:\"showLocal\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.onlyLocalStatuses'))+\"\\n \")]),_vm._v(\" \"),_c('el-checkbox',{staticClass:\"show-private-statuses\",model:{value:(_vm.showPrivate),callback:function ($$v) {_vm.showPrivate=$$v},expression:\"showPrivate\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.showPrivateStatuses'))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),(_vm.statuses.length === 0)?_c('p',{staticClass:\"no-statuses\"},[_vm._v(_vm._s(_vm.$t('userProfile.noStatuses')))]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.statuses),function(status){return _c('div',{key:status.id,staticClass:\"status-container\"},[_c('status',{attrs:{\"status\":status,\"account\":status.account,\"show-checkbox\":_vm.isDesktop,\"fetch-statuses-by-instance\":true},on:{\"status-selection\":_vm.handleStatusSelection}})],1)}),_vm._v(\" \"),(_vm.statuses.length > 0)?_c('div',{staticClass:\"statuses-pagination\"},[(!_vm.allLoaded)?_c('el-button',{attrs:{\"loading\":_vm.buttonLoading},on:{\"click\":_vm.handleLoadMore}},[_vm._v(_vm._s(_vm.$t('statuses.loadMore')))]):_c('el-button',{attrs:{\"icon\":\"el-icon-check\",\"circle\":\"\"}})],1):_vm._e()],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=4ee51084&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var map = {\n\t\"./af\": \"K/tc\",\n\t\"./af.js\": \"K/tc\",\n\t\"./ar\": \"jnO4\",\n\t\"./ar-dz\": \"o1bE\",\n\t\"./ar-dz.js\": \"o1bE\",\n\t\"./ar-kw\": \"Qj4J\",\n\t\"./ar-kw.js\": \"Qj4J\",\n\t\"./ar-ly\": \"HP3h\",\n\t\"./ar-ly.js\": \"HP3h\",\n\t\"./ar-ma\": \"CoRJ\",\n\t\"./ar-ma.js\": \"CoRJ\",\n\t\"./ar-sa\": \"gjCT\",\n\t\"./ar-sa.js\": \"gjCT\",\n\t\"./ar-tn\": \"bYM6\",\n\t\"./ar-tn.js\": \"bYM6\",\n\t\"./ar.js\": \"jnO4\",\n\t\"./az\": \"SFxW\",\n\t\"./az.js\": \"SFxW\",\n\t\"./be\": \"H8ED\",\n\t\"./be.js\": \"H8ED\",\n\t\"./bg\": \"hKrs\",\n\t\"./bg.js\": \"hKrs\",\n\t\"./bm\": \"p/rL\",\n\t\"./bm.js\": \"p/rL\",\n\t\"./bn\": \"kEOa\",\n\t\"./bn.js\": \"kEOa\",\n\t\"./bo\": \"0mo+\",\n\t\"./bo.js\": \"0mo+\",\n\t\"./br\": \"aIdf\",\n\t\"./br.js\": \"aIdf\",\n\t\"./bs\": \"JVSJ\",\n\t\"./bs.js\": \"JVSJ\",\n\t\"./ca\": \"1xZ4\",\n\t\"./ca.js\": \"1xZ4\",\n\t\"./cs\": \"PA2r\",\n\t\"./cs.js\": \"PA2r\",\n\t\"./cv\": \"A+xa\",\n\t\"./cv.js\": \"A+xa\",\n\t\"./cy\": \"l5ep\",\n\t\"./cy.js\": \"l5ep\",\n\t\"./da\": \"DxQv\",\n\t\"./da.js\": \"DxQv\",\n\t\"./de\": \"tGlX\",\n\t\"./de-at\": \"s+uk\",\n\t\"./de-at.js\": \"s+uk\",\n\t\"./de-ch\": \"u3GI\",\n\t\"./de-ch.js\": \"u3GI\",\n\t\"./de.js\": \"tGlX\",\n\t\"./dv\": \"WYrj\",\n\t\"./dv.js\": \"WYrj\",\n\t\"./el\": \"jUeY\",\n\t\"./el.js\": \"jUeY\",\n\t\"./en-SG\": \"zavE\",\n\t\"./en-SG.js\": \"zavE\",\n\t\"./en-au\": \"Dmvi\",\n\t\"./en-au.js\": \"Dmvi\",\n\t\"./en-ca\": \"OIYi\",\n\t\"./en-ca.js\": \"OIYi\",\n\t\"./en-gb\": \"Oaa7\",\n\t\"./en-gb.js\": \"Oaa7\",\n\t\"./en-ie\": \"4dOw\",\n\t\"./en-ie.js\": \"4dOw\",\n\t\"./en-il\": \"czMo\",\n\t\"./en-il.js\": \"czMo\",\n\t\"./en-nz\": \"b1Dy\",\n\t\"./en-nz.js\": \"b1Dy\",\n\t\"./eo\": \"Zduo\",\n\t\"./eo.js\": \"Zduo\",\n\t\"./es\": \"iYuL\",\n\t\"./es-do\": \"CjzT\",\n\t\"./es-do.js\": \"CjzT\",\n\t\"./es-us\": \"Vclq\",\n\t\"./es-us.js\": \"Vclq\",\n\t\"./es.js\": \"iYuL\",\n\t\"./et\": \"7BjC\",\n\t\"./et.js\": \"7BjC\",\n\t\"./eu\": \"D/JM\",\n\t\"./eu.js\": \"D/JM\",\n\t\"./fa\": \"jfSC\",\n\t\"./fa.js\": \"jfSC\",\n\t\"./fi\": \"gekB\",\n\t\"./fi.js\": \"gekB\",\n\t\"./fo\": \"ByF4\",\n\t\"./fo.js\": \"ByF4\",\n\t\"./fr\": \"nyYc\",\n\t\"./fr-ca\": \"2fjn\",\n\t\"./fr-ca.js\": \"2fjn\",\n\t\"./fr-ch\": \"Dkky\",\n\t\"./fr-ch.js\": \"Dkky\",\n\t\"./fr.js\": \"nyYc\",\n\t\"./fy\": \"cRix\",\n\t\"./fy.js\": \"cRix\",\n\t\"./ga\": \"USCx\",\n\t\"./ga.js\": \"USCx\",\n\t\"./gd\": \"9rRi\",\n\t\"./gd.js\": \"9rRi\",\n\t\"./gl\": \"iEDd\",\n\t\"./gl.js\": \"iEDd\",\n\t\"./gom-latn\": \"DKr+\",\n\t\"./gom-latn.js\": \"DKr+\",\n\t\"./gu\": \"4MV3\",\n\t\"./gu.js\": \"4MV3\",\n\t\"./he\": \"x6pH\",\n\t\"./he.js\": \"x6pH\",\n\t\"./hi\": \"3E1r\",\n\t\"./hi.js\": \"3E1r\",\n\t\"./hr\": \"S6ln\",\n\t\"./hr.js\": \"S6ln\",\n\t\"./hu\": \"WxRl\",\n\t\"./hu.js\": \"WxRl\",\n\t\"./hy-am\": \"1rYy\",\n\t\"./hy-am.js\": \"1rYy\",\n\t\"./id\": \"UDhR\",\n\t\"./id.js\": \"UDhR\",\n\t\"./is\": \"BVg3\",\n\t\"./is.js\": \"BVg3\",\n\t\"./it\": \"bpih\",\n\t\"./it-ch\": \"bxKX\",\n\t\"./it-ch.js\": \"bxKX\",\n\t\"./it.js\": \"bpih\",\n\t\"./ja\": \"B55N\",\n\t\"./ja.js\": \"B55N\",\n\t\"./jv\": \"tUCv\",\n\t\"./jv.js\": \"tUCv\",\n\t\"./ka\": \"IBtZ\",\n\t\"./ka.js\": \"IBtZ\",\n\t\"./kk\": \"bXm7\",\n\t\"./kk.js\": \"bXm7\",\n\t\"./km\": \"6B0Y\",\n\t\"./km.js\": \"6B0Y\",\n\t\"./kn\": \"PpIw\",\n\t\"./kn.js\": \"PpIw\",\n\t\"./ko\": \"Ivi+\",\n\t\"./ko.js\": \"Ivi+\",\n\t\"./ku\": \"JCF/\",\n\t\"./ku.js\": \"JCF/\",\n\t\"./ky\": \"lgnt\",\n\t\"./ky.js\": \"lgnt\",\n\t\"./lb\": \"RAwQ\",\n\t\"./lb.js\": \"RAwQ\",\n\t\"./lo\": \"sp3z\",\n\t\"./lo.js\": \"sp3z\",\n\t\"./lt\": \"JvlW\",\n\t\"./lt.js\": \"JvlW\",\n\t\"./lv\": \"uXwI\",\n\t\"./lv.js\": \"uXwI\",\n\t\"./me\": \"KTz0\",\n\t\"./me.js\": \"KTz0\",\n\t\"./mi\": \"aIsn\",\n\t\"./mi.js\": \"aIsn\",\n\t\"./mk\": \"aQkU\",\n\t\"./mk.js\": \"aQkU\",\n\t\"./ml\": \"AvvY\",\n\t\"./ml.js\": \"AvvY\",\n\t\"./mn\": \"lYtQ\",\n\t\"./mn.js\": \"lYtQ\",\n\t\"./mr\": \"Ob0Z\",\n\t\"./mr.js\": \"Ob0Z\",\n\t\"./ms\": \"6+QB\",\n\t\"./ms-my\": \"ZAMP\",\n\t\"./ms-my.js\": \"ZAMP\",\n\t\"./ms.js\": \"6+QB\",\n\t\"./mt\": \"G0Uy\",\n\t\"./mt.js\": \"G0Uy\",\n\t\"./my\": \"honF\",\n\t\"./my.js\": \"honF\",\n\t\"./nb\": \"bOMt\",\n\t\"./nb.js\": \"bOMt\",\n\t\"./ne\": \"OjkT\",\n\t\"./ne.js\": \"OjkT\",\n\t\"./nl\": \"+s0g\",\n\t\"./nl-be\": \"2ykv\",\n\t\"./nl-be.js\": \"2ykv\",\n\t\"./nl.js\": \"+s0g\",\n\t\"./nn\": \"uEye\",\n\t\"./nn.js\": \"uEye\",\n\t\"./pa-in\": \"8/+R\",\n\t\"./pa-in.js\": \"8/+R\",\n\t\"./pl\": \"jVdC\",\n\t\"./pl.js\": \"jVdC\",\n\t\"./pt\": \"8mBD\",\n\t\"./pt-br\": \"0tRk\",\n\t\"./pt-br.js\": \"0tRk\",\n\t\"./pt.js\": \"8mBD\",\n\t\"./ro\": \"lyxo\",\n\t\"./ro.js\": \"lyxo\",\n\t\"./ru\": \"lXzo\",\n\t\"./ru.js\": \"lXzo\",\n\t\"./sd\": \"Z4QM\",\n\t\"./sd.js\": \"Z4QM\",\n\t\"./se\": \"//9w\",\n\t\"./se.js\": \"//9w\",\n\t\"./si\": \"7aV9\",\n\t\"./si.js\": \"7aV9\",\n\t\"./sk\": \"e+ae\",\n\t\"./sk.js\": \"e+ae\",\n\t\"./sl\": \"gVVK\",\n\t\"./sl.js\": \"gVVK\",\n\t\"./sq\": \"yPMs\",\n\t\"./sq.js\": \"yPMs\",\n\t\"./sr\": \"zx6S\",\n\t\"./sr-cyrl\": \"E+lV\",\n\t\"./sr-cyrl.js\": \"E+lV\",\n\t\"./sr.js\": \"zx6S\",\n\t\"./ss\": \"Ur1D\",\n\t\"./ss.js\": \"Ur1D\",\n\t\"./sv\": \"X709\",\n\t\"./sv.js\": \"X709\",\n\t\"./sw\": \"dNwA\",\n\t\"./sw.js\": \"dNwA\",\n\t\"./ta\": \"PeUW\",\n\t\"./ta.js\": \"PeUW\",\n\t\"./te\": \"XLvN\",\n\t\"./te.js\": \"XLvN\",\n\t\"./tet\": \"V2x9\",\n\t\"./tet.js\": \"V2x9\",\n\t\"./tg\": \"Oxv6\",\n\t\"./tg.js\": \"Oxv6\",\n\t\"./th\": \"EOgW\",\n\t\"./th.js\": \"EOgW\",\n\t\"./tl-ph\": \"Dzi0\",\n\t\"./tl-ph.js\": \"Dzi0\",\n\t\"./tlh\": \"z3Vd\",\n\t\"./tlh.js\": \"z3Vd\",\n\t\"./tr\": \"DoHr\",\n\t\"./tr.js\": \"DoHr\",\n\t\"./tzl\": \"z1FC\",\n\t\"./tzl.js\": \"z1FC\",\n\t\"./tzm\": \"wQk9\",\n\t\"./tzm-latn\": \"tT3J\",\n\t\"./tzm-latn.js\": \"tT3J\",\n\t\"./tzm.js\": \"wQk9\",\n\t\"./ug-cn\": \"YRex\",\n\t\"./ug-cn.js\": \"YRex\",\n\t\"./uk\": \"raLr\",\n\t\"./uk.js\": \"raLr\",\n\t\"./ur\": \"UpQW\",\n\t\"./ur.js\": \"UpQW\",\n\t\"./uz\": \"Loxo\",\n\t\"./uz-latn\": \"AQ68\",\n\t\"./uz-latn.js\": \"AQ68\",\n\t\"./uz.js\": \"Loxo\",\n\t\"./vi\": \"KSF8\",\n\t\"./vi.js\": \"KSF8\",\n\t\"./x-pseudo\": \"/X5v\",\n\t\"./x-pseudo.js\": \"/X5v\",\n\t\"./yo\": \"fzPg\",\n\t\"./yo.js\": \"fzPg\",\n\t\"./zh-cn\": \"XDpg\",\n\t\"./zh-cn.js\": \"XDpg\",\n\t\"./zh-hk\": \"SatO\",\n\t\"./zh-hk.js\": \"SatO\",\n\t\"./zh-tw\": \"kOpN\",\n\t\"./zh-tw.js\": \"kOpN\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"RnhZ\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(!_vm.status.deleted)?_c('el-card',{staticClass:\"status-card\"},[_c('div',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('div',{staticClass:\"status-header\"},[_c('div',{staticClass:\"status-account-container\"},[_c('div',{staticClass:\"status-account\"},[(_vm.showCheckbox)?_c('el-checkbox',{staticClass:\"status-checkbox\",on:{\"change\":function($event){return _vm.handleStatusSelection(_vm.account)}}}):_vm._e(),_vm._v(\" \"),_c('img',{staticClass:\"status-avatar-img\",attrs:{\"src\":_vm.account.avatar}}),_vm._v(\" \"),(!_vm.account.deactivated)?_c('a',{staticClass:\"account\",attrs:{\"href\":_vm.account.url,\"target\":\"_blank\"}},[_c('h3',{staticClass:\"status-account-name\"},[_vm._v(_vm._s(_vm.account.display_name))])]):_c('span',[_c('h3',{staticClass:\"status-account-name\"},[_vm._v(_vm._s(_vm.account.display_name))]),_vm._v(\" \"),_c('h3',{staticClass:\"status-account-name deactivated\"},[_vm._v(\" (deactivated)\")])])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"status-actions\"},[(_vm.status.sensitive)?_c('el-tag',{attrs:{\"type\":\"warning\",\"size\":\"large\"}},[_vm._v(_vm._s(_vm.$t('reports.sensitive')))]):_vm._e(),_vm._v(\" \"),_c('el-tag',{attrs:{\"size\":\"large\"}},[_vm._v(_vm._s(_vm.capitalizeFirstLetter(_vm.status.visibility)))]),_vm._v(\" \"),_c('el-dropdown',{attrs:{\"trigger\":\"click\"}},[_c('el-button',{staticClass:\"status-actions-button\",attrs:{\"plain\":\"\",\"size\":\"small\",\"icon\":\"el-icon-edit\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.changeScope'))),_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"})]),_vm._v(\" \"),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[(!_vm.status.sensitive)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeStatus(_vm.status.id, true, _vm.status.visibility)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.addSensitive'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.status.sensitive)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeStatus(_vm.status.id, false, _vm.status.visibility)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.removeSensitive'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.status.visibility !== 'public')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeStatus(_vm.status.id, _vm.status.sensitive, 'public')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.public'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.status.visibility !== 'private')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeStatus(_vm.status.id, _vm.status.sensitive, 'private')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.private'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.status.visibility !== 'unlisted')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeStatus(_vm.status.id, _vm.status.sensitive, 'unlisted')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.unlisted'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.deleteStatus(_vm.status.id)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.deleteStatus'))+\"\\n \")])],1)],1)],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"status-body\"},[(_vm.status.spoiler_text)?_c('div',[_c('strong',[_vm._v(_vm._s(_vm.status.spoiler_text))]),_vm._v(\" \"),(!_vm.showHiddenStatus)?_c('el-button',{staticClass:\"show-more-button\",attrs:{\"size\":\"mini\"},on:{\"click\":function($event){_vm.showHiddenStatus = true}}},[_vm._v(\"Show more\")]):_vm._e(),_vm._v(\" \"),(_vm.showHiddenStatus)?_c('el-button',{staticClass:\"show-more-button\",attrs:{\"size\":\"mini\"},on:{\"click\":function($event){_vm.showHiddenStatus = false}}},[_vm._v(\"Show less\")]):_vm._e(),_vm._v(\" \"),(_vm.showHiddenStatus)?_c('div',[_c('span',{staticClass:\"status-content\",domProps:{\"innerHTML\":_vm._s(_vm.status.content)}}),_vm._v(\" \"),(_vm.status.poll)?_c('div',{staticClass:\"poll\"},[_c('ul',_vm._l((_vm.status.poll.options),function(option,index){return _c('li',{key:index},[_vm._v(\"\\n \"+_vm._s(option.title)+\"\\n \"),_c('el-progress',{attrs:{\"percentage\":_vm.optionPercent(_vm.status.poll, option)}})],1)}),0)]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.status.media_attachments),function(attachment,index){return _c('div',{key:index,staticClass:\"image\"},[_c('img',{attrs:{\"src\":attachment.preview_url}})])})],2):_vm._e()],1):_vm._e(),_vm._v(\" \"),(!_vm.status.spoiler_text)?_c('div',[_c('span',{staticClass:\"status-content\",domProps:{\"innerHTML\":_vm._s(_vm.status.content)}}),_vm._v(\" \"),(_vm.status.poll)?_c('div',{staticClass:\"poll\"},[_c('ul',_vm._l((_vm.status.poll.options),function(option,index){return _c('li',{key:index},[_vm._v(\"\\n \"+_vm._s(option.title)+\"\\n \"),_c('el-progress',{attrs:{\"percentage\":_vm.optionPercent(_vm.status.poll, option)}})],1)}),0)]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.status.media_attachments),function(attachment,index){return _c('div',{key:index,staticClass:\"image\"},[_c('img',{attrs:{\"src\":attachment.preview_url}})])})],2):_vm._e(),_vm._v(\" \"),_c('a',{staticClass:\"account\",attrs:{\"href\":_vm.status.url,\"target\":\"_blank\"}},[_vm._v(\"\\n \"+_vm._s(_vm.parseTimestamp(_vm.status.created_at))+\"\\n \")])])]):_c('el-card',{staticClass:\"status-card\"},[_c('div',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('div',{staticClass:\"status-header\"},[_c('div',{staticClass:\"status-account-container\"},[_c('div',{staticClass:\"status-account\"},[_c('h4',{staticClass:\"status-deleted\"},[_vm._v(_vm._s(_vm.$t('reports.statusDeleted')))])])])])]),_vm._v(\" \"),_c('div',{staticClass:\"status-body\"},[(_vm.status.content)?_c('span',{staticClass:\"status-content\",domProps:{\"innerHTML\":_vm._s(_vm.status.content)}}):_c('span',{staticClass:\"status-without-content\"},[_vm._v(\"no content\")])]),_vm._v(\" \"),(_vm.status.created_at)?_c('a',{staticClass:\"account\",attrs:{\"href\":_vm.status.url,\"target\":\"_blank\"}},[_vm._v(\"\\n \"+_vm._s(_vm.parseTimestamp(_vm.status.created_at))+\"\\n \")]):_vm._e()])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=0fdc1bba&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/runtime.5bae86dc.js b/priv/static/adminfe/static/js/runtime.5bae86dc.js new file mode 100644 index 000000000..e5fb1554b --- /dev/null +++ b/priv/static/adminfe/static/js/runtime.5bae86dc.js @@ -0,0 +1,2 @@ +!function(e){function n(n){for(var t,r,a=n[0],f=n[1],h=n[2],i=0,l=[];i +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.ApplicationRequirementsTest do + use Pleroma.DataCase + import ExUnit.CaptureLog + import Mock + + alias Pleroma.Repo + + describe "check_rum!" do + setup_with_mocks([ + {Pleroma.ApplicationRequirements, [:passthrough], + [check_migrations_applied!: fn _ -> :ok end]} + ]) do + :ok + end + + setup do: clear_config([:database, :rum_enabled]) + + test "raises if rum is enabled and detects unapplied rum migrations" do + Pleroma.Config.put([:database, :rum_enabled], true) + + with_mocks([{Repo, [:passthrough], [exists?: fn _, _ -> false end]}]) do + assert_raise Pleroma.ApplicationRequirements.VerifyError, + "Unapplied RUM Migrations detected", + fn -> + capture_log(&Pleroma.ApplicationRequirements.verify!/0) + end + end + end + + test "raises if rum is disabled and detects rum migrations" do + Pleroma.Config.put([:database, :rum_enabled], false) + + with_mocks([{Repo, [:passthrough], [exists?: fn _, _ -> true end]}]) do + assert_raise Pleroma.ApplicationRequirements.VerifyError, + "RUM Migrations detected", + fn -> + capture_log(&Pleroma.ApplicationRequirements.verify!/0) + end + end + end + + test "doesn't do anything if rum enabled and applied migrations" do + Pleroma.Config.put([:database, :rum_enabled], true) + + with_mocks([{Repo, [:passthrough], [exists?: fn _, _ -> true end]}]) do + assert Pleroma.ApplicationRequirements.verify!() == :ok + end + end + + test "doesn't do anything if rum disabled" do + Pleroma.Config.put([:database, :rum_enabled], false) + + with_mocks([{Repo, [:passthrough], [exists?: fn _, _ -> false end]}]) do + assert Pleroma.ApplicationRequirements.verify!() == :ok + end + end + end + + describe "check_migrations_applied!" do + setup_with_mocks([ + {Ecto.Migrator, [], + [ + with_repo: fn repo, fun -> passthrough([repo, fun]) end, + migrations: fn Repo -> + [ + {:up, 20_191_128_153_944, "fix_missing_following_count"}, + {:up, 20_191_203_043_610, "create_report_notes"}, + {:down, 20_191_220_174_645, "add_scopes_to_pleroma_feo_auth_records"} + ] + end + ]} + ]) do + :ok + end + + setup do: clear_config([:i_am_aware_this_may_cause_data_loss, :disable_migration_check]) + + test "raises if it detects unapplied migrations" do + assert_raise Pleroma.ApplicationRequirements.VerifyError, + "Unapplied Migrations detected", + fn -> + capture_log(&Pleroma.ApplicationRequirements.verify!/0) + end + end + + test "doesn't do anything if disabled" do + Pleroma.Config.put([:i_am_aware_this_may_cause_data_loss, :disable_migration_check], true) + + assert :ok == Pleroma.ApplicationRequirements.verify!() + end + end +end diff --git a/test/chat/message_reference_test.exs b/test/chat/message_reference_test.exs new file mode 100644 index 000000000..aaa7c1ad4 --- /dev/null +++ b/test/chat/message_reference_test.exs @@ -0,0 +1,29 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Chat.MessageReferenceTest do + use Pleroma.DataCase, async: true + + alias Pleroma.Chat + alias Pleroma.Chat.MessageReference + alias Pleroma.Web.CommonAPI + + import Pleroma.Factory + + describe "messages" do + test "it returns the last message in a chat" do + user = insert(:user) + recipient = insert(:user) + + {:ok, _message_1} = CommonAPI.post_chat_message(user, recipient, "hey") + {:ok, _message_2} = CommonAPI.post_chat_message(recipient, user, "ho") + + {:ok, chat} = Chat.get_or_create(user.id, recipient.ap_id) + + message = MessageReference.last_message_for_chat(chat) + + assert message.object.data["content"] == "ho" + end + end +end diff --git a/test/chat_test.exs b/test/chat_test.exs new file mode 100644 index 000000000..332f2180a --- /dev/null +++ b/test/chat_test.exs @@ -0,0 +1,61 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.ChatTest do + use Pleroma.DataCase, async: true + + alias Pleroma.Chat + + import Pleroma.Factory + + describe "creation and getting" do + test "it only works if the recipient is a valid user (for now)" do + user = insert(:user) + + assert {:error, _chat} = Chat.bump_or_create(user.id, "http://some/nonexisting/account") + assert {:error, _chat} = Chat.get_or_create(user.id, "http://some/nonexisting/account") + end + + test "it creates a chat for a user and recipient" do + user = insert(:user) + other_user = insert(:user) + + {:ok, chat} = Chat.bump_or_create(user.id, other_user.ap_id) + + assert chat.id + end + + test "it returns and bumps a chat for a user and recipient if it already exists" do + user = insert(:user) + other_user = insert(:user) + + {:ok, chat} = Chat.bump_or_create(user.id, other_user.ap_id) + {:ok, chat_two} = Chat.bump_or_create(user.id, other_user.ap_id) + + assert chat.id == chat_two.id + end + + test "it returns a chat for a user and recipient if it already exists" do + user = insert(:user) + other_user = insert(:user) + + {:ok, chat} = Chat.get_or_create(user.id, other_user.ap_id) + {:ok, chat_two} = Chat.get_or_create(user.id, other_user.ap_id) + + assert chat.id == chat_two.id + end + + test "a returning chat will have an updated `update_at` field" do + user = insert(:user) + other_user = insert(:user) + + {:ok, chat} = Chat.bump_or_create(user.id, other_user.ap_id) + :timer.sleep(1500) + {:ok, chat_two} = Chat.bump_or_create(user.id, other_user.ap_id) + + assert chat.id == chat_two.id + assert chat.updated_at != chat_two.updated_at + end + end +end diff --git a/test/config/config_db_test.exs b/test/config/config_db_test.exs index 336de7359..3895e2cda 100644 --- a/test/config/config_db_test.exs +++ b/test/config/config_db_test.exs @@ -7,40 +7,28 @@ defmodule Pleroma.ConfigDBTest do import Pleroma.Factory alias Pleroma.ConfigDB - test "get_by_key/1" do + test "get_by_params/1" do config = insert(:config) insert(:config) assert config == ConfigDB.get_by_params(%{group: config.group, key: config.key}) end - test "create/1" do - {:ok, config} = ConfigDB.create(%{group: ":pleroma", key: ":some_key", value: "some_value"}) - assert config == ConfigDB.get_by_params(%{group: ":pleroma", key: ":some_key"}) - end - - test "update/1" do - config = insert(:config) - {:ok, updated} = ConfigDB.update(config, %{value: "some_value"}) - loaded = ConfigDB.get_by_params(%{group: config.group, key: config.key}) - assert loaded == updated - end - test "get_all_as_keyword/0" do saved = insert(:config) - insert(:config, group: ":quack", key: ":level", value: ConfigDB.to_binary(:info)) - insert(:config, group: ":quack", key: ":meta", value: ConfigDB.to_binary([:none])) + insert(:config, group: ":quack", key: ":level", value: :info) + insert(:config, group: ":quack", key: ":meta", value: [:none]) insert(:config, group: ":quack", key: ":webhook_url", - value: ConfigDB.to_binary("https://hooks.slack.com/services/KEY/some_val") + value: "https://hooks.slack.com/services/KEY/some_val" ) config = ConfigDB.get_all_as_keyword() assert config[:pleroma] == [ - {ConfigDB.from_string(saved.key), ConfigDB.from_binary(saved.value)} + {saved.key, saved.value} ] assert config[:quack][:level] == :info @@ -51,11 +39,11 @@ test "get_all_as_keyword/0" do describe "update_or_create/1" do test "common" do config = insert(:config) - key2 = "another_key" + key2 = :another_key params = [ - %{group: "pleroma", key: key2, value: "another_value"}, - %{group: config.group, key: config.key, value: "new_value"} + %{group: :pleroma, key: key2, value: "another_value"}, + %{group: :pleroma, key: config.key, value: [a: 1, b: 2, c: "new_value"]} ] assert Repo.all(ConfigDB) |> length() == 1 @@ -65,16 +53,16 @@ test "common" do assert Repo.all(ConfigDB) |> length() == 2 config1 = ConfigDB.get_by_params(%{group: config.group, key: config.key}) - config2 = ConfigDB.get_by_params(%{group: "pleroma", key: key2}) + config2 = ConfigDB.get_by_params(%{group: :pleroma, key: key2}) - assert config1.value == ConfigDB.transform("new_value") - assert config2.value == ConfigDB.transform("another_value") + assert config1.value == [a: 1, b: 2, c: "new_value"] + assert config2.value == "another_value" end test "partial update" do - config = insert(:config, value: ConfigDB.to_binary(key1: "val1", key2: :val2)) + config = insert(:config, value: [key1: "val1", key2: :val2]) - {:ok, _config} = + {:ok, config} = ConfigDB.update_or_create(%{ group: config.group, key: config.key, @@ -83,15 +71,14 @@ test "partial update" do updated = ConfigDB.get_by_params(%{group: config.group, key: config.key}) - value = ConfigDB.from_binary(updated.value) - assert length(value) == 3 - assert value[:key1] == :val1 - assert value[:key2] == :val2 - assert value[:key3] == :val3 + assert config.value == updated.value + assert updated.value[:key1] == :val1 + assert updated.value[:key2] == :val2 + assert updated.value[:key3] == :val3 end test "deep merge" do - config = insert(:config, value: ConfigDB.to_binary(key1: "val1", key2: [k1: :v1, k2: "v2"])) + config = insert(:config, value: [key1: "val1", key2: [k1: :v1, k2: "v2"]]) {:ok, config} = ConfigDB.update_or_create(%{ @@ -103,18 +90,15 @@ test "deep merge" do updated = ConfigDB.get_by_params(%{group: config.group, key: config.key}) assert config.value == updated.value - - value = ConfigDB.from_binary(updated.value) - assert value[:key1] == :val1 - assert value[:key2] == [k1: :v1, k2: :v2, k3: :v3] - assert value[:key3] == :val3 + assert updated.value[:key1] == :val1 + assert updated.value[:key2] == [k1: :v1, k2: :v2, k3: :v3] + assert updated.value[:key3] == :val3 end test "only full update for some keys" do - config1 = insert(:config, key: ":ecto_repos", value: ConfigDB.to_binary(repo: Pleroma.Repo)) + config1 = insert(:config, key: :ecto_repos, value: [repo: Pleroma.Repo]) - config2 = - insert(:config, group: ":cors_plug", key: ":max_age", value: ConfigDB.to_binary(18)) + config2 = insert(:config, group: :cors_plug, key: :max_age, value: 18) {:ok, _config} = ConfigDB.update_or_create(%{ @@ -133,8 +117,8 @@ test "only full update for some keys" do updated1 = ConfigDB.get_by_params(%{group: config1.group, key: config1.key}) updated2 = ConfigDB.get_by_params(%{group: config2.group, key: config2.key}) - assert ConfigDB.from_binary(updated1.value) == [another_repo: [Pleroma.Repo]] - assert ConfigDB.from_binary(updated2.value) == 777 + assert updated1.value == [another_repo: [Pleroma.Repo]] + assert updated2.value == 777 end test "full update if value is not keyword" do @@ -142,7 +126,7 @@ test "full update if value is not keyword" do insert(:config, group: ":tesla", key: ":adapter", - value: ConfigDB.to_binary(Tesla.Adapter.Hackney) + value: Tesla.Adapter.Hackney ) {:ok, _config} = @@ -154,20 +138,20 @@ test "full update if value is not keyword" do updated = ConfigDB.get_by_params(%{group: config.group, key: config.key}) - assert ConfigDB.from_binary(updated.value) == Tesla.Adapter.Httpc + assert updated.value == Tesla.Adapter.Httpc end test "only full update for some subkeys" do config1 = insert(:config, key: ":emoji", - value: ConfigDB.to_binary(groups: [a: 1, b: 2], key: [a: 1]) + value: [groups: [a: 1, b: 2], key: [a: 1]] ) config2 = insert(:config, key: ":assets", - value: ConfigDB.to_binary(mascots: [a: 1, b: 2], key: [a: 1]) + value: [mascots: [a: 1, b: 2], key: [a: 1]] ) {:ok, _config} = @@ -187,8 +171,8 @@ test "only full update for some subkeys" do updated1 = ConfigDB.get_by_params(%{group: config1.group, key: config1.key}) updated2 = ConfigDB.get_by_params(%{group: config2.group, key: config2.key}) - assert ConfigDB.from_binary(updated1.value) == [groups: [c: 3, d: 4], key: [a: 1, b: 2]] - assert ConfigDB.from_binary(updated2.value) == [mascots: [c: 3, d: 4], key: [a: 1, b: 2]] + assert updated1.value == [groups: [c: 3, d: 4], key: [a: 1, b: 2]] + assert updated2.value == [mascots: [c: 3, d: 4], key: [a: 1, b: 2]] end end @@ -206,14 +190,14 @@ test "full delete" do end test "partial subkeys delete" do - config = insert(:config, value: ConfigDB.to_binary(groups: [a: 1, b: 2], key: [a: 1])) + config = insert(:config, value: [groups: [a: 1, b: 2], key: [a: 1]]) {:ok, deleted} = ConfigDB.delete(%{group: config.group, key: config.key, subkeys: [":groups"]}) assert Ecto.get_meta(deleted, :state) == :loaded - assert deleted.value == ConfigDB.to_binary(key: [a: 1]) + assert deleted.value == [key: [a: 1]] updated = ConfigDB.get_by_params(%{group: config.group, key: config.key}) @@ -221,7 +205,7 @@ test "partial subkeys delete" do end test "full delete if remaining value after subkeys deletion is empty list" do - config = insert(:config, value: ConfigDB.to_binary(groups: [a: 1, b: 2])) + config = insert(:config, value: [groups: [a: 1, b: 2]]) {:ok, deleted} = ConfigDB.delete(%{group: config.group, key: config.key, subkeys: [":groups"]}) @@ -232,234 +216,159 @@ test "full delete if remaining value after subkeys deletion is empty list" do end end - describe "transform/1" do + describe "to_elixir_types/1" do test "string" do - binary = ConfigDB.transform("value as string") - assert binary == :erlang.term_to_binary("value as string") - assert ConfigDB.from_binary(binary) == "value as string" + assert ConfigDB.to_elixir_types("value as string") == "value as string" end test "boolean" do - binary = ConfigDB.transform(false) - assert binary == :erlang.term_to_binary(false) - assert ConfigDB.from_binary(binary) == false + assert ConfigDB.to_elixir_types(false) == false end test "nil" do - binary = ConfigDB.transform(nil) - assert binary == :erlang.term_to_binary(nil) - assert ConfigDB.from_binary(binary) == nil + assert ConfigDB.to_elixir_types(nil) == nil end test "integer" do - binary = ConfigDB.transform(150) - assert binary == :erlang.term_to_binary(150) - assert ConfigDB.from_binary(binary) == 150 + assert ConfigDB.to_elixir_types(150) == 150 end test "atom" do - binary = ConfigDB.transform(":atom") - assert binary == :erlang.term_to_binary(:atom) - assert ConfigDB.from_binary(binary) == :atom + assert ConfigDB.to_elixir_types(":atom") == :atom end test "ssl options" do - binary = ConfigDB.transform([":tlsv1", ":tlsv1.1", ":tlsv1.2"]) - assert binary == :erlang.term_to_binary([:tlsv1, :"tlsv1.1", :"tlsv1.2"]) - assert ConfigDB.from_binary(binary) == [:tlsv1, :"tlsv1.1", :"tlsv1.2"] + assert ConfigDB.to_elixir_types([":tlsv1", ":tlsv1.1", ":tlsv1.2"]) == [ + :tlsv1, + :"tlsv1.1", + :"tlsv1.2" + ] end test "pleroma module" do - binary = ConfigDB.transform("Pleroma.Bookmark") - assert binary == :erlang.term_to_binary(Pleroma.Bookmark) - assert ConfigDB.from_binary(binary) == Pleroma.Bookmark + assert ConfigDB.to_elixir_types("Pleroma.Bookmark") == Pleroma.Bookmark end test "pleroma string" do - binary = ConfigDB.transform("Pleroma") - assert binary == :erlang.term_to_binary("Pleroma") - assert ConfigDB.from_binary(binary) == "Pleroma" + assert ConfigDB.to_elixir_types("Pleroma") == "Pleroma" end test "phoenix module" do - binary = ConfigDB.transform("Phoenix.Socket.V1.JSONSerializer") - assert binary == :erlang.term_to_binary(Phoenix.Socket.V1.JSONSerializer) - assert ConfigDB.from_binary(binary) == Phoenix.Socket.V1.JSONSerializer + assert ConfigDB.to_elixir_types("Phoenix.Socket.V1.JSONSerializer") == + Phoenix.Socket.V1.JSONSerializer end test "tesla module" do - binary = ConfigDB.transform("Tesla.Adapter.Hackney") - assert binary == :erlang.term_to_binary(Tesla.Adapter.Hackney) - assert ConfigDB.from_binary(binary) == Tesla.Adapter.Hackney + assert ConfigDB.to_elixir_types("Tesla.Adapter.Hackney") == Tesla.Adapter.Hackney end test "ExSyslogger module" do - binary = ConfigDB.transform("ExSyslogger") - assert binary == :erlang.term_to_binary(ExSyslogger) - assert ConfigDB.from_binary(binary) == ExSyslogger + assert ConfigDB.to_elixir_types("ExSyslogger") == ExSyslogger end test "Quack.Logger module" do - binary = ConfigDB.transform("Quack.Logger") - assert binary == :erlang.term_to_binary(Quack.Logger) - assert ConfigDB.from_binary(binary) == Quack.Logger + assert ConfigDB.to_elixir_types("Quack.Logger") == Quack.Logger end test "Swoosh.Adapters modules" do - binary = ConfigDB.transform("Swoosh.Adapters.SMTP") - assert binary == :erlang.term_to_binary(Swoosh.Adapters.SMTP) - assert ConfigDB.from_binary(binary) == Swoosh.Adapters.SMTP - binary = ConfigDB.transform("Swoosh.Adapters.AmazonSES") - assert binary == :erlang.term_to_binary(Swoosh.Adapters.AmazonSES) - assert ConfigDB.from_binary(binary) == Swoosh.Adapters.AmazonSES + assert ConfigDB.to_elixir_types("Swoosh.Adapters.SMTP") == Swoosh.Adapters.SMTP + assert ConfigDB.to_elixir_types("Swoosh.Adapters.AmazonSES") == Swoosh.Adapters.AmazonSES end test "sigil" do - binary = ConfigDB.transform("~r[comp[lL][aA][iI][nN]er]") - assert binary == :erlang.term_to_binary(~r/comp[lL][aA][iI][nN]er/) - assert ConfigDB.from_binary(binary) == ~r/comp[lL][aA][iI][nN]er/ + assert ConfigDB.to_elixir_types("~r[comp[lL][aA][iI][nN]er]") == ~r/comp[lL][aA][iI][nN]er/ end test "link sigil" do - binary = ConfigDB.transform("~r/https:\/\/example.com/") - assert binary == :erlang.term_to_binary(~r/https:\/\/example.com/) - assert ConfigDB.from_binary(binary) == ~r/https:\/\/example.com/ + assert ConfigDB.to_elixir_types("~r/https:\/\/example.com/") == ~r/https:\/\/example.com/ end test "link sigil with um modifiers" do - binary = ConfigDB.transform("~r/https:\/\/example.com/um") - assert binary == :erlang.term_to_binary(~r/https:\/\/example.com/um) - assert ConfigDB.from_binary(binary) == ~r/https:\/\/example.com/um + assert ConfigDB.to_elixir_types("~r/https:\/\/example.com/um") == + ~r/https:\/\/example.com/um end test "link sigil with i modifier" do - binary = ConfigDB.transform("~r/https:\/\/example.com/i") - assert binary == :erlang.term_to_binary(~r/https:\/\/example.com/i) - assert ConfigDB.from_binary(binary) == ~r/https:\/\/example.com/i + assert ConfigDB.to_elixir_types("~r/https:\/\/example.com/i") == ~r/https:\/\/example.com/i end test "link sigil with s modifier" do - binary = ConfigDB.transform("~r/https:\/\/example.com/s") - assert binary == :erlang.term_to_binary(~r/https:\/\/example.com/s) - assert ConfigDB.from_binary(binary) == ~r/https:\/\/example.com/s + assert ConfigDB.to_elixir_types("~r/https:\/\/example.com/s") == ~r/https:\/\/example.com/s end test "raise if valid delimiter not found" do assert_raise ArgumentError, "valid delimiter for Regex expression not found", fn -> - ConfigDB.transform("~r/https://[]{}<>\"'()|example.com/s") + ConfigDB.to_elixir_types("~r/https://[]{}<>\"'()|example.com/s") end end test "2 child tuple" do - binary = ConfigDB.transform(%{"tuple" => ["v1", ":v2"]}) - assert binary == :erlang.term_to_binary({"v1", :v2}) - assert ConfigDB.from_binary(binary) == {"v1", :v2} + assert ConfigDB.to_elixir_types(%{"tuple" => ["v1", ":v2"]}) == {"v1", :v2} end test "proxy tuple with localhost" do - binary = - ConfigDB.transform(%{ - "tuple" => [":proxy_url", %{"tuple" => [":socks5", "localhost", 1234]}] - }) - - assert binary == :erlang.term_to_binary({:proxy_url, {:socks5, :localhost, 1234}}) - assert ConfigDB.from_binary(binary) == {:proxy_url, {:socks5, :localhost, 1234}} + assert ConfigDB.to_elixir_types(%{ + "tuple" => [":proxy_url", %{"tuple" => [":socks5", "localhost", 1234]}] + }) == {:proxy_url, {:socks5, :localhost, 1234}} end test "proxy tuple with domain" do - binary = - ConfigDB.transform(%{ - "tuple" => [":proxy_url", %{"tuple" => [":socks5", "domain.com", 1234]}] - }) - - assert binary == :erlang.term_to_binary({:proxy_url, {:socks5, 'domain.com', 1234}}) - assert ConfigDB.from_binary(binary) == {:proxy_url, {:socks5, 'domain.com', 1234}} + assert ConfigDB.to_elixir_types(%{ + "tuple" => [":proxy_url", %{"tuple" => [":socks5", "domain.com", 1234]}] + }) == {:proxy_url, {:socks5, 'domain.com', 1234}} end test "proxy tuple with ip" do - binary = - ConfigDB.transform(%{ - "tuple" => [":proxy_url", %{"tuple" => [":socks5", "127.0.0.1", 1234]}] - }) - - assert binary == :erlang.term_to_binary({:proxy_url, {:socks5, {127, 0, 0, 1}, 1234}}) - assert ConfigDB.from_binary(binary) == {:proxy_url, {:socks5, {127, 0, 0, 1}, 1234}} + assert ConfigDB.to_elixir_types(%{ + "tuple" => [":proxy_url", %{"tuple" => [":socks5", "127.0.0.1", 1234]}] + }) == {:proxy_url, {:socks5, {127, 0, 0, 1}, 1234}} end test "tuple with n childs" do - binary = - ConfigDB.transform(%{ - "tuple" => [ - "v1", - ":v2", - "Pleroma.Bookmark", - 150, - false, - "Phoenix.Socket.V1.JSONSerializer" - ] - }) - - assert binary == - :erlang.term_to_binary( - {"v1", :v2, Pleroma.Bookmark, 150, false, Phoenix.Socket.V1.JSONSerializer} - ) - - assert ConfigDB.from_binary(binary) == - {"v1", :v2, Pleroma.Bookmark, 150, false, Phoenix.Socket.V1.JSONSerializer} + assert ConfigDB.to_elixir_types(%{ + "tuple" => [ + "v1", + ":v2", + "Pleroma.Bookmark", + 150, + false, + "Phoenix.Socket.V1.JSONSerializer" + ] + }) == {"v1", :v2, Pleroma.Bookmark, 150, false, Phoenix.Socket.V1.JSONSerializer} end test "map with string key" do - binary = ConfigDB.transform(%{"key" => "value"}) - assert binary == :erlang.term_to_binary(%{"key" => "value"}) - assert ConfigDB.from_binary(binary) == %{"key" => "value"} + assert ConfigDB.to_elixir_types(%{"key" => "value"}) == %{"key" => "value"} end test "map with atom key" do - binary = ConfigDB.transform(%{":key" => "value"}) - assert binary == :erlang.term_to_binary(%{key: "value"}) - assert ConfigDB.from_binary(binary) == %{key: "value"} + assert ConfigDB.to_elixir_types(%{":key" => "value"}) == %{key: "value"} end test "list of strings" do - binary = ConfigDB.transform(["v1", "v2", "v3"]) - assert binary == :erlang.term_to_binary(["v1", "v2", "v3"]) - assert ConfigDB.from_binary(binary) == ["v1", "v2", "v3"] + assert ConfigDB.to_elixir_types(["v1", "v2", "v3"]) == ["v1", "v2", "v3"] end test "list of modules" do - binary = ConfigDB.transform(["Pleroma.Repo", "Pleroma.Activity"]) - assert binary == :erlang.term_to_binary([Pleroma.Repo, Pleroma.Activity]) - assert ConfigDB.from_binary(binary) == [Pleroma.Repo, Pleroma.Activity] + assert ConfigDB.to_elixir_types(["Pleroma.Repo", "Pleroma.Activity"]) == [ + Pleroma.Repo, + Pleroma.Activity + ] end test "list of atoms" do - binary = ConfigDB.transform([":v1", ":v2", ":v3"]) - assert binary == :erlang.term_to_binary([:v1, :v2, :v3]) - assert ConfigDB.from_binary(binary) == [:v1, :v2, :v3] + assert ConfigDB.to_elixir_types([":v1", ":v2", ":v3"]) == [:v1, :v2, :v3] end test "list of mixed values" do - binary = - ConfigDB.transform([ - "v1", - ":v2", - "Pleroma.Repo", - "Phoenix.Socket.V1.JSONSerializer", - 15, - false - ]) - - assert binary == - :erlang.term_to_binary([ - "v1", - :v2, - Pleroma.Repo, - Phoenix.Socket.V1.JSONSerializer, - 15, - false - ]) - - assert ConfigDB.from_binary(binary) == [ + assert ConfigDB.to_elixir_types([ + "v1", + ":v2", + "Pleroma.Repo", + "Phoenix.Socket.V1.JSONSerializer", + 15, + false + ]) == [ "v1", :v2, Pleroma.Repo, @@ -470,40 +379,17 @@ test "list of mixed values" do end test "simple keyword" do - binary = ConfigDB.transform([%{"tuple" => [":key", "value"]}]) - assert binary == :erlang.term_to_binary([{:key, "value"}]) - assert ConfigDB.from_binary(binary) == [{:key, "value"}] - assert ConfigDB.from_binary(binary) == [key: "value"] - end - - test "keyword with partial_chain key" do - binary = - ConfigDB.transform([%{"tuple" => [":partial_chain", "&:hackney_connect.partial_chain/1"]}]) - - assert binary == :erlang.term_to_binary(partial_chain: &:hackney_connect.partial_chain/1) - assert ConfigDB.from_binary(binary) == [partial_chain: &:hackney_connect.partial_chain/1] + assert ConfigDB.to_elixir_types([%{"tuple" => [":key", "value"]}]) == [key: "value"] end test "keyword" do - binary = - ConfigDB.transform([ - %{"tuple" => [":types", "Pleroma.PostgresTypes"]}, - %{"tuple" => [":telemetry_event", ["Pleroma.Repo.Instrumenter"]]}, - %{"tuple" => [":migration_lock", nil]}, - %{"tuple" => [":key1", 150]}, - %{"tuple" => [":key2", "string"]} - ]) - - assert binary == - :erlang.term_to_binary( - types: Pleroma.PostgresTypes, - telemetry_event: [Pleroma.Repo.Instrumenter], - migration_lock: nil, - key1: 150, - key2: "string" - ) - - assert ConfigDB.from_binary(binary) == [ + assert ConfigDB.to_elixir_types([ + %{"tuple" => [":types", "Pleroma.PostgresTypes"]}, + %{"tuple" => [":telemetry_event", ["Pleroma.Repo.Instrumenter"]]}, + %{"tuple" => [":migration_lock", nil]}, + %{"tuple" => [":key1", 150]}, + %{"tuple" => [":key2", "string"]} + ]) == [ types: Pleroma.PostgresTypes, telemetry_event: [Pleroma.Repo.Instrumenter], migration_lock: nil, @@ -512,86 +398,60 @@ test "keyword" do ] end - test "complex keyword with nested mixed childs" do - binary = - ConfigDB.transform([ - %{"tuple" => [":uploader", "Pleroma.Uploaders.Local"]}, - %{"tuple" => [":filters", ["Pleroma.Upload.Filter.Dedupe"]]}, - %{"tuple" => [":link_name", true]}, - %{"tuple" => [":proxy_remote", false]}, - %{"tuple" => [":common_map", %{":key" => "value"}]}, - %{ - "tuple" => [ - ":proxy_opts", - [ - %{"tuple" => [":redirect_on_failure", false]}, - %{"tuple" => [":max_body_length", 1_048_576]}, - %{ - "tuple" => [ - ":http", - [%{"tuple" => [":follow_redirect", true]}, %{"tuple" => [":pool", ":upload"]}] - ] - } - ] - ] - } - ]) + test "trandformed keyword" do + assert ConfigDB.to_elixir_types(a: 1, b: 2, c: "string") == [a: 1, b: 2, c: "string"] + end - assert binary == - :erlang.term_to_binary( - uploader: Pleroma.Uploaders.Local, - filters: [Pleroma.Upload.Filter.Dedupe], - link_name: true, - proxy_remote: false, - common_map: %{key: "value"}, - proxy_opts: [ - redirect_on_failure: false, - max_body_length: 1_048_576, - http: [ - follow_redirect: true, - pool: :upload + test "complex keyword with nested mixed childs" do + assert ConfigDB.to_elixir_types([ + %{"tuple" => [":uploader", "Pleroma.Uploaders.Local"]}, + %{"tuple" => [":filters", ["Pleroma.Upload.Filter.Dedupe"]]}, + %{"tuple" => [":link_name", true]}, + %{"tuple" => [":proxy_remote", false]}, + %{"tuple" => [":common_map", %{":key" => "value"}]}, + %{ + "tuple" => [ + ":proxy_opts", + [ + %{"tuple" => [":redirect_on_failure", false]}, + %{"tuple" => [":max_body_length", 1_048_576]}, + %{ + "tuple" => [ + ":http", + [ + %{"tuple" => [":follow_redirect", true]}, + %{"tuple" => [":pool", ":upload"]} + ] + ] + } ] ] - ) - - assert ConfigDB.from_binary(binary) == - [ - uploader: Pleroma.Uploaders.Local, - filters: [Pleroma.Upload.Filter.Dedupe], - link_name: true, - proxy_remote: false, - common_map: %{key: "value"}, - proxy_opts: [ - redirect_on_failure: false, - max_body_length: 1_048_576, - http: [ - follow_redirect: true, - pool: :upload - ] + } + ]) == [ + uploader: Pleroma.Uploaders.Local, + filters: [Pleroma.Upload.Filter.Dedupe], + link_name: true, + proxy_remote: false, + common_map: %{key: "value"}, + proxy_opts: [ + redirect_on_failure: false, + max_body_length: 1_048_576, + http: [ + follow_redirect: true, + pool: :upload ] ] + ] end test "common keyword" do - binary = - ConfigDB.transform([ - %{"tuple" => [":level", ":warn"]}, - %{"tuple" => [":meta", [":all"]]}, - %{"tuple" => [":path", ""]}, - %{"tuple" => [":val", nil]}, - %{"tuple" => [":webhook_url", "https://hooks.slack.com/services/YOUR-KEY-HERE"]} - ]) - - assert binary == - :erlang.term_to_binary( - level: :warn, - meta: [:all], - path: "", - val: nil, - webhook_url: "https://hooks.slack.com/services/YOUR-KEY-HERE" - ) - - assert ConfigDB.from_binary(binary) == [ + assert ConfigDB.to_elixir_types([ + %{"tuple" => [":level", ":warn"]}, + %{"tuple" => [":meta", [":all"]]}, + %{"tuple" => [":path", ""]}, + %{"tuple" => [":val", nil]}, + %{"tuple" => [":webhook_url", "https://hooks.slack.com/services/YOUR-KEY-HERE"]} + ]) == [ level: :warn, meta: [:all], path: "", @@ -601,98 +461,73 @@ test "common keyword" do end test "complex keyword with sigil" do - binary = - ConfigDB.transform([ - %{"tuple" => [":federated_timeline_removal", []]}, - %{"tuple" => [":reject", ["~r/comp[lL][aA][iI][nN]er/"]]}, - %{"tuple" => [":replace", []]} - ]) - - assert binary == - :erlang.term_to_binary( - federated_timeline_removal: [], - reject: [~r/comp[lL][aA][iI][nN]er/], - replace: [] - ) - - assert ConfigDB.from_binary(binary) == - [federated_timeline_removal: [], reject: [~r/comp[lL][aA][iI][nN]er/], replace: []] + assert ConfigDB.to_elixir_types([ + %{"tuple" => [":federated_timeline_removal", []]}, + %{"tuple" => [":reject", ["~r/comp[lL][aA][iI][nN]er/"]]}, + %{"tuple" => [":replace", []]} + ]) == [ + federated_timeline_removal: [], + reject: [~r/comp[lL][aA][iI][nN]er/], + replace: [] + ] end test "complex keyword with tuples with more than 2 values" do - binary = - ConfigDB.transform([ - %{ - "tuple" => [ - ":http", - [ - %{ - "tuple" => [ - ":key1", - [ - %{ - "tuple" => [ - ":_", - [ - %{ - "tuple" => [ - "/api/v1/streaming", - "Pleroma.Web.MastodonAPI.WebsocketHandler", - [] - ] - }, - %{ - "tuple" => [ - "/websocket", - "Phoenix.Endpoint.CowboyWebSocket", - %{ - "tuple" => [ - "Phoenix.Transports.WebSocket", - %{ - "tuple" => [ - "Pleroma.Web.Endpoint", - "Pleroma.Web.UserSocket", - [] - ] - } - ] - } - ] - }, - %{ - "tuple" => [ - ":_", - "Phoenix.Endpoint.Cowboy2Handler", - %{"tuple" => ["Pleroma.Web.Endpoint", []]} - ] - } - ] - ] - } - ] - ] - } - ] - ] - } - ]) - - assert binary == - :erlang.term_to_binary( - http: [ - key1: [ - _: [ - {"/api/v1/streaming", Pleroma.Web.MastodonAPI.WebsocketHandler, []}, - {"/websocket", Phoenix.Endpoint.CowboyWebSocket, - {Phoenix.Transports.WebSocket, - {Pleroma.Web.Endpoint, Pleroma.Web.UserSocket, []}}}, - {:_, Phoenix.Endpoint.Cowboy2Handler, {Pleroma.Web.Endpoint, []}} - ] + assert ConfigDB.to_elixir_types([ + %{ + "tuple" => [ + ":http", + [ + %{ + "tuple" => [ + ":key1", + [ + %{ + "tuple" => [ + ":_", + [ + %{ + "tuple" => [ + "/api/v1/streaming", + "Pleroma.Web.MastodonAPI.WebsocketHandler", + [] + ] + }, + %{ + "tuple" => [ + "/websocket", + "Phoenix.Endpoint.CowboyWebSocket", + %{ + "tuple" => [ + "Phoenix.Transports.WebSocket", + %{ + "tuple" => [ + "Pleroma.Web.Endpoint", + "Pleroma.Web.UserSocket", + [] + ] + } + ] + } + ] + }, + %{ + "tuple" => [ + ":_", + "Phoenix.Endpoint.Cowboy2Handler", + %{"tuple" => ["Pleroma.Web.Endpoint", []]} + ] + } + ] + ] + } + ] + ] + } ] ] - ) - - assert ConfigDB.from_binary(binary) == [ + } + ]) == [ http: [ key1: [ {:_, diff --git a/test/config/deprecation_warnings_test.exs b/test/config/deprecation_warnings_test.exs new file mode 100644 index 000000000..548ee87b0 --- /dev/null +++ b/test/config/deprecation_warnings_test.exs @@ -0,0 +1,57 @@ +defmodule Pleroma.Config.DeprecationWarningsTest do + use ExUnit.Case, async: true + use Pleroma.Tests.Helpers + + import ExUnit.CaptureLog + + test "check_old_mrf_config/0" do + clear_config([:instance, :rewrite_policy], Pleroma.Web.ActivityPub.MRF.NoOpPolicy) + clear_config([:instance, :mrf_transparency], true) + clear_config([:instance, :mrf_transparency_exclusions], []) + + assert capture_log(fn -> Pleroma.Config.DeprecationWarnings.check_old_mrf_config() end) =~ + """ + !!!DEPRECATION WARNING!!! + Your config is using old namespaces for MRF configuration. They should work for now, but you are advised to change to new namespaces to prevent possible issues later: + + * `config :pleroma, :instance, rewrite_policy` is now `config :pleroma, :mrf, policies` + * `config :pleroma, :instance, mrf_transparency` is now `config :pleroma, :mrf, transparency` + * `config :pleroma, :instance, mrf_transparency_exclusions` is now `config :pleroma, :mrf, transparency_exclusions` + """ + end + + test "move_namespace_and_warn/2" do + old_group1 = [:group, :key] + old_group2 = [:group, :key2] + old_group3 = [:group, :key3] + + new_group1 = [:another_group, :key4] + new_group2 = [:another_group, :key5] + new_group3 = [:another_group, :key6] + + clear_config(old_group1, 1) + clear_config(old_group2, 2) + clear_config(old_group3, 3) + + clear_config(new_group1) + clear_config(new_group2) + clear_config(new_group3) + + config_map = [ + {old_group1, new_group1, "\n error :key"}, + {old_group2, new_group2, "\n error :key2"}, + {old_group3, new_group3, "\n error :key3"} + ] + + assert capture_log(fn -> + Pleroma.Config.DeprecationWarnings.move_namespace_and_warn( + config_map, + "Warning preface" + ) + end) =~ "Warning preface\n error :key\n error :key2\n error :key3" + + assert Pleroma.Config.get(new_group1) == 1 + assert Pleroma.Config.get(new_group2) == 2 + assert Pleroma.Config.get(new_group3) == 3 + end +end diff --git a/test/config/transfer_task_test.exs b/test/config/transfer_task_test.exs index 473899d1d..f53829e09 100644 --- a/test/config/transfer_task_test.exs +++ b/test/config/transfer_task_test.exs @@ -6,9 +6,9 @@ defmodule Pleroma.Config.TransferTaskTest do use Pleroma.DataCase import ExUnit.CaptureLog + import Pleroma.Factory alias Pleroma.Config.TransferTask - alias Pleroma.ConfigDB setup do: clear_config(:configurable_from_database, true) @@ -19,31 +19,11 @@ test "transfer config values from db to env" do refute Application.get_env(:postgrex, :test_key) initial = Application.get_env(:logger, :level) - ConfigDB.create(%{ - group: ":pleroma", - key: ":test_key", - value: [live: 2, com: 3] - }) - - ConfigDB.create(%{ - group: ":idna", - key: ":test_key", - value: [live: 15, com: 35] - }) - - ConfigDB.create(%{ - group: ":quack", - key: ":test_key", - value: [:test_value1, :test_value2] - }) - - ConfigDB.create(%{ - group: ":postgrex", - key: ":test_key", - value: :value - }) - - ConfigDB.create(%{group: ":logger", key: ":level", value: :debug}) + insert(:config, key: :test_key, value: [live: 2, com: 3]) + insert(:config, group: :idna, key: :test_key, value: [live: 15, com: 35]) + insert(:config, group: :quack, key: :test_key, value: [:test_value1, :test_value2]) + insert(:config, group: :postgrex, key: :test_key, value: :value) + insert(:config, group: :logger, key: :level, value: :debug) TransferTask.start_link([]) @@ -66,17 +46,8 @@ test "transfer config values for 1 group and some keys" do level = Application.get_env(:quack, :level) meta = Application.get_env(:quack, :meta) - ConfigDB.create(%{ - group: ":quack", - key: ":level", - value: :info - }) - - ConfigDB.create(%{ - group: ":quack", - key: ":meta", - value: [:none] - }) + insert(:config, group: :quack, key: :level, value: :info) + insert(:config, group: :quack, key: :meta, value: [:none]) TransferTask.start_link([]) @@ -95,17 +66,8 @@ test "transfer config values with full subkey update" do clear_config(:emoji) clear_config(:assets) - ConfigDB.create(%{ - group: ":pleroma", - key: ":emoji", - value: [groups: [a: 1, b: 2]] - }) - - ConfigDB.create(%{ - group: ":pleroma", - key: ":assets", - value: [mascots: [a: 1, b: 2]] - }) + insert(:config, key: :emoji, value: [groups: [a: 1, b: 2]]) + insert(:config, key: :assets, value: [mascots: [a: 1, b: 2]]) TransferTask.start_link([]) @@ -122,12 +84,7 @@ test "transfer config values with full subkey update" do test "don't restart if no reboot time settings were changed" do clear_config(:emoji) - - ConfigDB.create(%{ - group: ":pleroma", - key: ":emoji", - value: [groups: [a: 1, b: 2]] - }) + insert(:config, key: :emoji, value: [groups: [a: 1, b: 2]]) refute String.contains?( capture_log(fn -> TransferTask.start_link([]) end), @@ -137,25 +94,13 @@ test "don't restart if no reboot time settings were changed" do test "on reboot time key" do clear_config(:chat) - - ConfigDB.create(%{ - group: ":pleroma", - key: ":chat", - value: [enabled: false] - }) - + insert(:config, key: :chat, value: [enabled: false]) assert capture_log(fn -> TransferTask.start_link([]) end) =~ "pleroma restarted" end test "on reboot time subkey" do clear_config(Pleroma.Captcha) - - ConfigDB.create(%{ - group: ":pleroma", - key: "Pleroma.Captcha", - value: [seconds_valid: 60] - }) - + insert(:config, key: Pleroma.Captcha, value: [seconds_valid: 60]) assert capture_log(fn -> TransferTask.start_link([]) end) =~ "pleroma restarted" end @@ -163,17 +108,8 @@ test "don't restart pleroma on reboot time key and subkey if there is false flag clear_config(:chat) clear_config(Pleroma.Captcha) - ConfigDB.create(%{ - group: ":pleroma", - key: ":chat", - value: [enabled: false] - }) - - ConfigDB.create(%{ - group: ":pleroma", - key: "Pleroma.Captcha", - value: [seconds_valid: 60] - }) + insert(:config, key: :chat, value: [enabled: false]) + insert(:config, key: Pleroma.Captcha, value: [seconds_valid: 60]) refute String.contains?( capture_log(fn -> TransferTask.load_and_update_env([], false) end), diff --git a/test/fixtures/config/temp.secret.exs b/test/fixtures/config/temp.secret.exs index dc950ca30..fa8c7c7e8 100644 --- a/test/fixtures/config/temp.secret.exs +++ b/test/fixtures/config/temp.secret.exs @@ -9,3 +9,5 @@ config :pleroma, Pleroma.Repo, pool: Ecto.Adapters.SQL.Sandbox config :postgrex, :json_library, Poison + +config :pleroma, :database, rum_enabled: true diff --git a/test/fixtures/create-chat-message.json b/test/fixtures/create-chat-message.json new file mode 100644 index 000000000..9c23a1c9b --- /dev/null +++ b/test/fixtures/create-chat-message.json @@ -0,0 +1,31 @@ +{ + "actor": "http://2hu.gensokyo/users/raymoo", + "id": "http://2hu.gensokyo/objects/1", + "object": { + "attributedTo": "http://2hu.gensokyo/users/raymoo", + "content": "You expected a cute girl? Too bad. ", + "id": "http://2hu.gensokyo/objects/2", + "published": "2020-02-12T14:08:20Z", + "to": [ + "http://2hu.gensokyo/users/marisa" + ], + "tag": [ + { + "icon": { + "type": "Image", + "url": "http://2hu.gensokyo/emoji/Firefox.gif" + }, + "id": "http://2hu.gensokyo/emoji/Firefox.gif", + "name": ":firefox:", + "type": "Emoji", + "updated": "1970-01-01T00:00:00Z" + } + ], + "type": "ChatMessage" + }, + "published": "2018-02-12T14:08:20Z", + "to": [ + "http://2hu.gensokyo/users/marisa" + ], + "type": "Create" +} diff --git a/test/fixtures/preload_static/instance/panel.html b/test/fixtures/preload_static/instance/panel.html new file mode 100644 index 000000000..fc58e4e93 --- /dev/null +++ b/test/fixtures/preload_static/instance/panel.html @@ -0,0 +1 @@ +HEY! diff --git a/test/html_test.exs b/test/html_test.exs index 0a4b4ebbc..f8907c8b4 100644 --- a/test/html_test.exs +++ b/test/html_test.exs @@ -237,5 +237,19 @@ test "does not crash when there is an HTML entity in a link" do assert {:ok, nil} = HTML.extract_first_external_url(object, object.data["content"]) end + + test "skips attachment links" do + user = insert(:user) + + {:ok, activity} = + CommonAPI.post(user, %{ + status: + "image.png" + }) + + object = Object.normalize(activity) + + assert {:ok, nil} = HTML.extract_first_external_url(object, object.data["content"]) + end end end diff --git a/test/http/adapter_helper/hackney_test.exs b/test/http/adapter_helper/hackney_test.exs index 3f7e708e0..f2361ff0b 100644 --- a/test/http/adapter_helper/hackney_test.exs +++ b/test/http/adapter_helper/hackney_test.exs @@ -31,17 +31,5 @@ test "respect connection opts and no proxy", %{uri: uri} do assert opts[:b] == 1 refute Keyword.has_key?(opts, :proxy) end - - test "add opts for https" do - uri = URI.parse("https://domain.com") - - opts = Hackney.options(uri) - - assert opts[:ssl_options] == [ - partial_chain: &:hackney_connect.partial_chain/1, - versions: [:tlsv1, :"tlsv1.1", :"tlsv1.2"], - server_name_indication: 'domain.com' - ] - end end end diff --git a/test/http/ex_aws_test.exs b/test/http/ex_aws_test.exs new file mode 100644 index 000000000..d0b00ca26 --- /dev/null +++ b/test/http/ex_aws_test.exs @@ -0,0 +1,54 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.HTTP.ExAwsTest do + use ExUnit.Case + + import Tesla.Mock + alias Pleroma.HTTP + + @url "https://s3.amazonaws.com/test_bucket/test_image.jpg" + + setup do + mock(fn + %{method: :get, url: @url, headers: [{"x-amz-bucket-region", "us-east-1"}]} -> + %Tesla.Env{ + status: 200, + body: "image-content", + headers: [{"x-amz-bucket-region", "us-east-1"}] + } + + %{method: :post, url: @url, body: "image-content-2"} -> + %Tesla.Env{status: 200, body: "image-content-2"} + end) + + :ok + end + + describe "request" do + test "get" do + assert HTTP.ExAws.request(:get, @url, "", [{"x-amz-bucket-region", "us-east-1"}]) == { + :ok, + %{ + body: "image-content", + headers: [{"x-amz-bucket-region", "us-east-1"}], + status_code: 200 + } + } + end + + test "post" do + assert HTTP.ExAws.request(:post, @url, "image-content-2", [ + {"x-amz-bucket-region", "us-east-1"} + ]) == { + :ok, + %{ + body: "image-content-2", + headers: [], + status_code: 200 + } + } + end + end +end diff --git a/test/http/tzdata_test.exs b/test/http/tzdata_test.exs new file mode 100644 index 000000000..3e605d33b --- /dev/null +++ b/test/http/tzdata_test.exs @@ -0,0 +1,35 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.HTTP.TzdataTest do + use ExUnit.Case + + import Tesla.Mock + alias Pleroma.HTTP + @url "https://data.iana.org/time-zones/tzdata-latest.tar.gz" + + setup do + mock(fn + %{method: :head, url: @url} -> + %Tesla.Env{status: 200, body: ""} + + %{method: :get, url: @url} -> + %Tesla.Env{status: 200, body: "hello"} + end) + + :ok + end + + describe "head/1" do + test "returns successfully result" do + assert HTTP.Tzdata.head(@url, [], []) == {:ok, {200, []}} + end + end + + describe "get/1" do + test "returns successfully result" do + assert HTTP.Tzdata.get(@url, [], []) == {:ok, {200, [], "hello"}} + end + end +end diff --git a/test/http_test.exs b/test/http_test.exs index 618485b55..d394bb942 100644 --- a/test/http_test.exs +++ b/test/http_test.exs @@ -17,6 +17,9 @@ defmodule Pleroma.HTTPTest do } -> json(%{"my" => "data"}) + %{method: :head, url: "http://example.com/hello"} -> + %Tesla.Env{status: 200, body: ""} + %{method: :get, url: "http://example.com/hello"} -> %Tesla.Env{status: 200, body: "hello"} @@ -27,6 +30,12 @@ defmodule Pleroma.HTTPTest do :ok end + describe "head/1" do + test "returns successfully result" do + assert HTTP.head("http://example.com/hello") == {:ok, %Tesla.Env{status: 200, body: ""}} + end + end + describe "get/1" do test "returns successfully result" do assert HTTP.get("http://example.com/hello") == { diff --git a/test/instance_static/emoji/test_pack/blank2.png b/test/instance_static/emoji/test_pack/blank2.png new file mode 100644 index 000000000..8f50fa023 Binary files /dev/null and b/test/instance_static/emoji/test_pack/blank2.png differ diff --git a/test/instance_static/emoji/test_pack/pack.json b/test/instance_static/emoji/test_pack/pack.json index 481891b08..5b33fbb32 100644 --- a/test/instance_static/emoji/test_pack/pack.json +++ b/test/instance_static/emoji/test_pack/pack.json @@ -1,6 +1,7 @@ { "files": { - "blank": "blank.png" + "blank": "blank.png", + "blank2": "blank2.png" }, "pack": { "description": "Test description", diff --git a/test/instance_static/emoji/test_pack_nonshared/nonshared.zip b/test/instance_static/emoji/test_pack_nonshared/nonshared.zip index 148446c64..59bff37f0 100644 Binary files a/test/instance_static/emoji/test_pack_nonshared/nonshared.zip and b/test/instance_static/emoji/test_pack_nonshared/nonshared.zip differ diff --git a/test/instance_static/emoji/test_pack_nonshared/pack.json b/test/instance_static/emoji/test_pack_nonshared/pack.json index 93d643a5f..09f6274d1 100644 --- a/test/instance_static/emoji/test_pack_nonshared/pack.json +++ b/test/instance_static/emoji/test_pack_nonshared/pack.json @@ -4,7 +4,7 @@ "homepage": "https://pleroma.social", "description": "Test description", "fallback-src": "https://nonshared-pack", - "fallback-src-sha256": "74409E2674DAA06C072729C6C8426C4CB3B7E0B85ED77792DB7A436E11D76DAF", + "fallback-src-sha256": "1967BB4E42BCC34BCC12D57BE7811D3B7BE52F965BCE45C87BD377B9499CE11D", "share-files": false }, "files": { diff --git a/test/migration_helper/notification_backfill_test.exs b/test/migration_helper/notification_backfill_test.exs new file mode 100644 index 000000000..2a62a2b00 --- /dev/null +++ b/test/migration_helper/notification_backfill_test.exs @@ -0,0 +1,56 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.MigrationHelper.NotificationBackfillTest do + use Pleroma.DataCase + + alias Pleroma.Activity + alias Pleroma.MigrationHelper.NotificationBackfill + alias Pleroma.Notification + alias Pleroma.Repo + alias Pleroma.Web.CommonAPI + + import Pleroma.Factory + + describe "fill_in_notification_types" do + test "it fills in missing notification types" do + user = insert(:user) + other_user = insert(:user) + + {:ok, post} = CommonAPI.post(user, %{status: "yeah, @#{other_user.nickname}"}) + {:ok, chat} = CommonAPI.post_chat_message(user, other_user, "yo") + {:ok, react} = CommonAPI.react_with_emoji(post.id, other_user, "☕") + {:ok, like} = CommonAPI.favorite(other_user, post.id) + {:ok, react_2} = CommonAPI.react_with_emoji(post.id, other_user, "☕") + + data = + react_2.data + |> Map.put("type", "EmojiReaction") + + {:ok, react_2} = + react_2 + |> Activity.change(%{data: data}) + |> Repo.update() + + assert {5, nil} = Repo.update_all(Notification, set: [type: nil]) + + NotificationBackfill.fill_in_notification_types() + + assert %{type: "mention"} = + Repo.get_by(Notification, user_id: other_user.id, activity_id: post.id) + + assert %{type: "favourite"} = + Repo.get_by(Notification, user_id: user.id, activity_id: like.id) + + assert %{type: "pleroma:emoji_reaction"} = + Repo.get_by(Notification, user_id: user.id, activity_id: react.id) + + assert %{type: "pleroma:emoji_reaction"} = + Repo.get_by(Notification, user_id: user.id, activity_id: react_2.id) + + assert %{type: "pleroma:chat_mention"} = + Repo.get_by(Notification, user_id: other_user.id, activity_id: chat.id) + end + end +end diff --git a/test/notification_test.exs b/test/notification_test.exs index 37c255fee..6add3f7eb 100644 --- a/test/notification_test.exs +++ b/test/notification_test.exs @@ -10,6 +10,7 @@ defmodule Pleroma.NotificationTest do alias Pleroma.FollowingRelationship alias Pleroma.Notification + alias Pleroma.Repo alias Pleroma.Tests.ObanHelpers alias Pleroma.User alias Pleroma.Web.ActivityPub.ActivityPub @@ -21,6 +22,16 @@ defmodule Pleroma.NotificationTest do alias Pleroma.Web.Streamer describe "create_notifications" do + test "never returns nil" do + user = insert(:user) + other_user = insert(:user, %{invisible: true}) + + {:ok, activity} = CommonAPI.post(user, %{status: "yeah"}) + {:ok, activity} = CommonAPI.react_with_emoji(activity.id, other_user, "☕") + + refute {:ok, [nil]} == Notification.create_notifications(activity) + end + test "creates a notification for an emoji reaction" do user = insert(:user) other_user = insert(:user) @@ -31,6 +42,7 @@ test "creates a notification for an emoji reaction" do {:ok, [notification]} = Notification.create_notifications(activity) assert notification.user_id == user.id + assert notification.type == "pleroma:emoji_reaction" end test "notifies someone when they are directly addressed" do @@ -48,6 +60,7 @@ test "notifies someone when they are directly addressed" do notified_ids = Enum.sort([notification.user_id, other_notification.user_id]) assert notified_ids == [other_user.id, third_user.id] assert notification.activity_id == activity.id + assert notification.type == "mention" assert other_notification.activity_id == activity.id assert [%Pleroma.Marker{unread_count: 2}] = @@ -303,6 +316,14 @@ test "it doesn't create subscription notifications if the recipient cannot see t assert {:ok, []} == Notification.create_notifications(status) end + + test "it disables notifications from people who are invisible" do + author = insert(:user, invisible: true) + user = insert(:user) + + {:ok, status} = CommonAPI.post(author, %{status: "hey @#{user.nickname}"}) + refute Notification.create_notification(status, user) + end end describe "follow / follow_request notifications" do @@ -335,9 +356,12 @@ test "it creates `follow_request` notification for pending Follow activity" do # After request is accepted, the same notification is rendered with type "follow": assert {:ok, _} = CommonAPI.accept_follow_request(user, followed_user) - notification_id = notification.id - assert [%{id: ^notification_id}] = Notification.for_user(followed_user) - assert %{type: "follow"} = NotificationView.render("show.json", render_opts) + notification = + Repo.get(Notification, notification.id) + |> Repo.preload(:activity) + + assert %{type: "follow"} = + NotificationView.render("show.json", notification: notification, for: followed_user) end test "it doesn't create a notification for follow-unfollow-follow chains" do diff --git a/test/pagination_test.exs b/test/pagination_test.exs index d5b1b782d..9165427ae 100644 --- a/test/pagination_test.exs +++ b/test/pagination_test.exs @@ -21,7 +21,7 @@ test "paginates by min_id", %{notes: notes} do id = Enum.at(notes, 2).id |> Integer.to_string() %{total: total, items: paginated} = - Pagination.fetch_paginated(Object, %{"min_id" => id, "total" => true}) + Pagination.fetch_paginated(Object, %{min_id: id, total: true}) assert length(paginated) == 2 assert total == 5 @@ -31,7 +31,7 @@ test "paginates by since_id", %{notes: notes} do id = Enum.at(notes, 2).id |> Integer.to_string() %{total: total, items: paginated} = - Pagination.fetch_paginated(Object, %{"since_id" => id, "total" => true}) + Pagination.fetch_paginated(Object, %{since_id: id, total: true}) assert length(paginated) == 2 assert total == 5 @@ -41,7 +41,7 @@ test "paginates by max_id", %{notes: notes} do id = Enum.at(notes, 1).id |> Integer.to_string() %{total: total, items: paginated} = - Pagination.fetch_paginated(Object, %{"max_id" => id, "total" => true}) + Pagination.fetch_paginated(Object, %{max_id: id, total: true}) assert length(paginated) == 1 assert total == 5 @@ -50,7 +50,7 @@ test "paginates by max_id", %{notes: notes} do test "paginates by min_id & limit", %{notes: notes} do id = Enum.at(notes, 2).id |> Integer.to_string() - paginated = Pagination.fetch_paginated(Object, %{"min_id" => id, "limit" => 1}) + paginated = Pagination.fetch_paginated(Object, %{min_id: id, limit: 1}) assert length(paginated) == 1 end @@ -64,13 +64,13 @@ test "paginates by min_id & limit", %{notes: notes} do end test "paginates by limit" do - paginated = Pagination.fetch_paginated(Object, %{"limit" => 2}, :offset) + paginated = Pagination.fetch_paginated(Object, %{limit: 2}, :offset) assert length(paginated) == 2 end test "paginates by limit & offset" do - paginated = Pagination.fetch_paginated(Object, %{"limit" => 2, "offset" => 4}, :offset) + paginated = Pagination.fetch_paginated(Object, %{limit: 2, offset: 4}, :offset) assert length(paginated) == 1 end diff --git a/test/plugs/instance_static_test.exs b/test/plugs/instance_static_test.exs index b8f070d6a..be2613ad0 100644 --- a/test/plugs/instance_static_test.exs +++ b/test/plugs/instance_static_test.exs @@ -16,7 +16,7 @@ defmodule Pleroma.Web.RuntimeStaticPlugTest do test "overrides index" do bundled_index = get(build_conn(), "/") - assert html_response(bundled_index, 200) == File.read!("priv/static/index.html") + refute html_response(bundled_index, 200) == "hello world" File.write!(@dir <> "/index.html", "hello world") diff --git a/test/repo_test.exs b/test/repo_test.exs index daffc6542..92e827c95 100644 --- a/test/repo_test.exs +++ b/test/repo_test.exs @@ -4,9 +4,7 @@ defmodule Pleroma.RepoTest do use Pleroma.DataCase - import ExUnit.CaptureLog import Pleroma.Factory - import Mock alias Pleroma.User @@ -49,36 +47,4 @@ test "return error if has not assoc " do assert Repo.get_assoc(token, :user) == {:error, :not_found} end end - - describe "check_migrations_applied!" do - setup_with_mocks([ - {Ecto.Migrator, [], - [ - with_repo: fn repo, fun -> passthrough([repo, fun]) end, - migrations: fn Pleroma.Repo -> - [ - {:up, 20_191_128_153_944, "fix_missing_following_count"}, - {:up, 20_191_203_043_610, "create_report_notes"}, - {:down, 20_191_220_174_645, "add_scopes_to_pleroma_feo_auth_records"} - ] - end - ]} - ]) do - :ok - end - - setup do: clear_config([:i_am_aware_this_may_cause_data_loss, :disable_migration_check]) - - test "raises if it detects unapplied migrations" do - assert_raise Pleroma.Repo.UnappliedMigrationsError, fn -> - capture_log(&Repo.check_migrations_applied!/0) - end - end - - test "doesn't do anything if disabled" do - Pleroma.Config.put([:i_am_aware_this_may_cause_data_loss, :disable_migration_check], true) - - assert :ok == Repo.check_migrations_applied!() - end - end end diff --git a/test/stats_test.exs b/test/stats_test.exs index 4b76e2e78..f09d8d31a 100644 --- a/test/stats_test.exs +++ b/test/stats_test.exs @@ -17,10 +17,11 @@ test "it ignores internal users" do end end - describe "status visibility count" do + describe "status visibility sum count" do test "on new status" do + instance2 = "instance2.tld" user = insert(:user) - other_user = insert(:user) + other_user = insert(:user, %{ap_id: "https://#{instance2}/@actor"}) CommonAPI.post(user, %{visibility: "public", status: "hey"}) @@ -45,24 +46,24 @@ test "on new status" do }) end) - assert %{direct: 3, private: 4, public: 1, unlisted: 2} = + assert %{"direct" => 3, "private" => 4, "public" => 1, "unlisted" => 2} = Pleroma.Stats.get_status_visibility_count() end test "on status delete" do user = insert(:user) {:ok, activity} = CommonAPI.post(user, %{visibility: "public", status: "hey"}) - assert %{public: 1} = Pleroma.Stats.get_status_visibility_count() + assert %{"public" => 1} = Pleroma.Stats.get_status_visibility_count() CommonAPI.delete(activity.id, user) - assert %{public: 0} = Pleroma.Stats.get_status_visibility_count() + assert %{"public" => 0} = Pleroma.Stats.get_status_visibility_count() end test "on status visibility update" do user = insert(:user) {:ok, activity} = CommonAPI.post(user, %{visibility: "public", status: "hey"}) - assert %{public: 1, private: 0} = Pleroma.Stats.get_status_visibility_count() + assert %{"public" => 1, "private" => 0} = Pleroma.Stats.get_status_visibility_count() {:ok, _} = CommonAPI.update_activity_scope(activity.id, %{visibility: "private"}) - assert %{public: 0, private: 1} = Pleroma.Stats.get_status_visibility_count() + assert %{"public" => 0, "private" => 1} = Pleroma.Stats.get_status_visibility_count() end test "doesn't count unrelated activities" do @@ -73,8 +74,46 @@ test "doesn't count unrelated activities" do CommonAPI.favorite(other_user, activity.id) CommonAPI.repeat(activity.id, other_user) - assert %{direct: 0, private: 0, public: 1, unlisted: 0} = + assert %{"direct" => 0, "private" => 0, "public" => 1, "unlisted" => 0} = Pleroma.Stats.get_status_visibility_count() end end + + describe "status visibility by instance count" do + test "single instance" do + local_instance = Pleroma.Web.Endpoint.url() |> String.split("//") |> Enum.at(1) + instance2 = "instance2.tld" + user1 = insert(:user) + user2 = insert(:user, %{ap_id: "https://#{instance2}/@actor"}) + + CommonAPI.post(user1, %{visibility: "public", status: "hey"}) + + Enum.each(1..5, fn _ -> + CommonAPI.post(user1, %{ + visibility: "unlisted", + status: "hey" + }) + end) + + Enum.each(1..10, fn _ -> + CommonAPI.post(user1, %{ + visibility: "direct", + status: "hey @#{user2.nickname}" + }) + end) + + Enum.each(1..20, fn _ -> + CommonAPI.post(user2, %{ + visibility: "private", + status: "hey" + }) + end) + + assert %{"direct" => 10, "private" => 0, "public" => 1, "unlisted" => 5} = + Pleroma.Stats.get_status_visibility_count(local_instance) + + assert %{"direct" => 0, "private" => 20, "public" => 0, "unlisted" => 0} = + Pleroma.Stats.get_status_visibility_count(instance2) + end + end end diff --git a/test/support/factory.ex b/test/support/factory.ex index 6e3676aca..6e22b66a4 100644 --- a/test/support/factory.ex +++ b/test/support/factory.ex @@ -42,7 +42,8 @@ def user_factory do user | ap_id: User.ap_id(user), follower_address: User.ap_followers(user), - following_address: User.ap_following(user) + following_address: User.ap_following(user), + raw_bio: user.bio } end @@ -396,24 +397,17 @@ def registration_factory do } end - def config_factory do + def config_factory(attrs \\ %{}) do %Pleroma.ConfigDB{ - key: - sequence(:key, fn key -> - # Atom dynamic registration hack in tests - "some_key_#{key}" - |> String.to_atom() - |> inspect() - end), - group: ":pleroma", + key: sequence(:key, &String.to_atom("some_key_#{&1}")), + group: :pleroma, value: sequence( :value, - fn key -> - :erlang.term_to_binary(%{another_key: "#{key}somevalue", another: "#{key}somevalue"}) - end + &%{another_key: "#{&1}somevalue", another: "#{&1}somevalue"} ) } + |> merge_attributes(attrs) end def marker_factory do diff --git a/test/tasks/config_test.exs b/test/tasks/config_test.exs index 04bc947a9..71f36c0e3 100644 --- a/test/tasks/config_test.exs +++ b/test/tasks/config_test.exs @@ -5,6 +5,8 @@ defmodule Mix.Tasks.Pleroma.ConfigTest do use Pleroma.DataCase + import Pleroma.Factory + alias Pleroma.ConfigDB alias Pleroma.Repo @@ -48,25 +50,21 @@ test "filtered settings are migrated to db" do config3 = ConfigDB.get_by_params(%{group: ":quack", key: ":level"}) refute ConfigDB.get_by_params(%{group: ":pleroma", key: "Pleroma.Repo"}) refute ConfigDB.get_by_params(%{group: ":postgrex", key: ":json_library"}) + refute ConfigDB.get_by_params(%{group: ":pleroma", key: ":database"}) - assert ConfigDB.from_binary(config1.value) == [key: "value", key2: [Repo]] - assert ConfigDB.from_binary(config2.value) == [key: "value2", key2: ["Activity"]] - assert ConfigDB.from_binary(config3.value) == :info + assert config1.value == [key: "value", key2: [Repo]] + assert config2.value == [key: "value2", key2: ["Activity"]] + assert config3.value == :info end test "config table is truncated before migration" do - ConfigDB.create(%{ - group: ":pleroma", - key: ":first_setting", - value: [key: "value", key2: ["Activity"]] - }) - + insert(:config, key: :first_setting, value: [key: "value", key2: ["Activity"]]) assert Repo.aggregate(ConfigDB, :count, :id) == 1 Mix.Tasks.Pleroma.Config.migrate_to_db("test/fixtures/config/temp.secret.exs") config = ConfigDB.get_by_params(%{group: ":pleroma", key: ":first_setting"}) - assert ConfigDB.from_binary(config.value) == [key: "value", key2: [Repo]] + assert config.value == [key: "value", key2: [Repo]] end end @@ -82,19 +80,9 @@ test "config table is truncated before migration" do end test "settings are migrated to file and deleted from db", %{temp_file: temp_file} do - ConfigDB.create(%{ - group: ":pleroma", - key: ":setting_first", - value: [key: "value", key2: ["Activity"]] - }) - - ConfigDB.create(%{ - group: ":pleroma", - key: ":setting_second", - value: [key: "value2", key2: [Repo]] - }) - - ConfigDB.create(%{group: ":quack", key: ":level", value: :info}) + insert(:config, key: :setting_first, value: [key: "value", key2: ["Activity"]]) + insert(:config, key: :setting_second, value: [key: "value2", key2: [Repo]]) + insert(:config, group: :quack, key: :level, value: :info) Mix.Tasks.Pleroma.Config.run(["migrate_from_db", "--env", "temp", "-d"]) @@ -107,9 +95,8 @@ test "settings are migrated to file and deleted from db", %{temp_file: temp_file end test "load a settings with large values and pass to file", %{temp_file: temp_file} do - ConfigDB.create(%{ - group: ":pleroma", - key: ":instance", + insert(:config, + key: :instance, value: [ name: "Pleroma", email: "example@example.com", @@ -134,14 +121,11 @@ test "load a settings with large values and pass to file", %{temp_file: temp_fil federation_reachability_timeout_days: 7, federation_publisher_modules: [Pleroma.Web.ActivityPub.Publisher], allow_relay: true, - rewrite_policy: Pleroma.Web.ActivityPub.MRF.NoOpPolicy, public: true, quarantined_instances: [], managed_config: true, static_dir: "instance/static/", allowed_post_formats: ["text/plain", "text/html", "text/markdown", "text/bbcode"], - mrf_transparency: true, - mrf_transparency_exclusions: [], autofollowed_nicknames: [], max_pinned_statuses: 1, attachment_links: false, @@ -163,7 +147,6 @@ test "load a settings with large values and pass to file", %{temp_file: temp_fil extended_nickname_format: true, multi_factor_authentication: [ totp: [ - # digits 6 or 8 digits: 6, period: 30 ], @@ -173,7 +156,7 @@ test "load a settings with large values and pass to file", %{temp_file: temp_fil ] ] ] - }) + ) Mix.Tasks.Pleroma.Config.run(["migrate_from_db", "--env", "temp", "-d"]) @@ -189,7 +172,7 @@ test "load a settings with large values and pass to file", %{temp_file: temp_fil end assert file == - "#{header}\n\nconfig :pleroma, :instance,\n name: \"Pleroma\",\n email: \"example@example.com\",\n notify_email: \"noreply@example.com\",\n description: \"A Pleroma instance, an alternative fediverse server\",\n limit: 5000,\n chat_limit: 5000,\n remote_limit: 100_000,\n upload_limit: 16_000_000,\n avatar_upload_limit: 2_000_000,\n background_upload_limit: 4_000_000,\n banner_upload_limit: 4_000_000,\n poll_limits: %{\n max_expiration: 31_536_000,\n max_option_chars: 200,\n max_options: 20,\n min_expiration: 0\n },\n registrations_open: true,\n federating: true,\n federation_incoming_replies_max_depth: 100,\n federation_reachability_timeout_days: 7,\n federation_publisher_modules: [Pleroma.Web.ActivityPub.Publisher],\n allow_relay: true,\n rewrite_policy: Pleroma.Web.ActivityPub.MRF.NoOpPolicy,\n public: true,\n quarantined_instances: [],\n managed_config: true,\n static_dir: \"instance/static/\",\n allowed_post_formats: [\"text/plain\", \"text/html\", \"text/markdown\", \"text/bbcode\"],\n mrf_transparency: true,\n mrf_transparency_exclusions: [],\n autofollowed_nicknames: [],\n max_pinned_statuses: 1,\n attachment_links: false,\n welcome_user_nickname: nil,\n welcome_message: nil,\n max_report_comment_size: 1000,\n safe_dm_mentions: false,\n healthcheck: false,\n remote_post_retention_days: 90,\n skip_thread_containment: true,\n limit_to_local_content: :unauthenticated,\n user_bio_length: 5000,\n user_name_length: 100,\n max_account_fields: 10,\n max_remote_account_fields: 20,\n account_field_name_length: 512,\n account_field_value_length: 2048,\n external_user_synchronization: true,\n extended_nickname_format: true,\n multi_factor_authentication: [\n totp: [digits: 6, period: 30],\n backup_codes: [number: 2, length: 6]\n ]\n" + "#{header}\n\nconfig :pleroma, :instance,\n name: \"Pleroma\",\n email: \"example@example.com\",\n notify_email: \"noreply@example.com\",\n description: \"A Pleroma instance, an alternative fediverse server\",\n limit: 5000,\n chat_limit: 5000,\n remote_limit: 100_000,\n upload_limit: 16_000_000,\n avatar_upload_limit: 2_000_000,\n background_upload_limit: 4_000_000,\n banner_upload_limit: 4_000_000,\n poll_limits: %{\n max_expiration: 31_536_000,\n max_option_chars: 200,\n max_options: 20,\n min_expiration: 0\n },\n registrations_open: true,\n federating: true,\n federation_incoming_replies_max_depth: 100,\n federation_reachability_timeout_days: 7,\n federation_publisher_modules: [Pleroma.Web.ActivityPub.Publisher],\n allow_relay: true,\n public: true,\n quarantined_instances: [],\n managed_config: true,\n static_dir: \"instance/static/\",\n allowed_post_formats: [\"text/plain\", \"text/html\", \"text/markdown\", \"text/bbcode\"],\n autofollowed_nicknames: [],\n max_pinned_statuses: 1,\n attachment_links: false,\n welcome_user_nickname: nil,\n welcome_message: nil,\n max_report_comment_size: 1000,\n safe_dm_mentions: false,\n healthcheck: false,\n remote_post_retention_days: 90,\n skip_thread_containment: true,\n limit_to_local_content: :unauthenticated,\n user_bio_length: 5000,\n user_name_length: 100,\n max_account_fields: 10,\n max_remote_account_fields: 20,\n account_field_name_length: 512,\n account_field_value_length: 2048,\n external_user_synchronization: true,\n extended_nickname_format: true,\n multi_factor_authentication: [\n totp: [digits: 6, period: 30],\n backup_codes: [number: 2, length: 6]\n ]\n" end end end diff --git a/test/tasks/refresh_counter_cache_test.exs b/test/tasks/refresh_counter_cache_test.exs index 851971a77..6a1a9ac17 100644 --- a/test/tasks/refresh_counter_cache_test.exs +++ b/test/tasks/refresh_counter_cache_test.exs @@ -37,7 +37,7 @@ test "counts statuses" do assert capture_io(fn -> Mix.Tasks.Pleroma.RefreshCounterCache.run([]) end) =~ "Done\n" - assert %{direct: 3, private: 4, public: 1, unlisted: 2} = + assert %{"direct" => 3, "private" => 4, "public" => 1, "unlisted" => 2} = Pleroma.Stats.get_status_visibility_count() end end diff --git a/test/tasks/relay_test.exs b/test/tasks/relay_test.exs index d3d88467d..a8ba0658d 100644 --- a/test/tasks/relay_test.exs +++ b/test/tasks/relay_test.exs @@ -62,10 +62,11 @@ test "relay is unfollowed" do [undo_activity] = ActivityPub.fetch_activities([], %{ - "type" => "Undo", - "actor_id" => follower_id, - "limit" => 1, - "skip_preload" => true + type: "Undo", + actor_id: follower_id, + limit: 1, + skip_preload: true, + invisible_actors: true }) assert undo_activity.data["type"] == "Undo" diff --git a/test/tasks/user_test.exs b/test/tasks/user_test.exs index b55aa1cdb..9220d23fc 100644 --- a/test/tasks/user_test.exs +++ b/test/tasks/user_test.exs @@ -4,6 +4,7 @@ defmodule Mix.Tasks.Pleroma.UserTest do alias Pleroma.Activity + alias Pleroma.MFA alias Pleroma.Object alias Pleroma.Repo alias Pleroma.Tests.ObanHelpers @@ -278,6 +279,35 @@ test "no user to reset password" do end end + describe "running reset_mfa" do + test "disables MFA" do + user = + insert(:user, + multi_factor_authentication_settings: %MFA.Settings{ + enabled: true, + totp: %MFA.Settings.TOTP{secret: "xx", confirmed: true} + } + ) + + Mix.Tasks.Pleroma.User.run(["reset_mfa", user.nickname]) + + assert_received {:mix_shell, :info, [message]} + assert message == "Multi-Factor Authentication disabled for #{user.nickname}" + + assert %{enabled: false, totp: false} == + user.nickname + |> User.get_cached_by_nickname() + |> MFA.mfa_settings() + end + + test "no user to reset MFA" do + Mix.Tasks.Pleroma.User.run(["reset_password", "nonexistent"]) + + assert_received {:mix_shell, :error, [message]} + assert message =~ "No local user" + end + end + describe "running invite" do test "invite token is generated" do assert capture_io(fn -> diff --git a/test/upload/filter/mogrify_test.exs b/test/upload/filter/mogrify_test.exs index b6a463e8c..62ca30487 100644 --- a/test/upload/filter/mogrify_test.exs +++ b/test/upload/filter/mogrify_test.exs @@ -6,21 +6,17 @@ defmodule Pleroma.Upload.Filter.MogrifyTest do use Pleroma.DataCase import Mock - alias Pleroma.Config - alias Pleroma.Upload alias Pleroma.Upload.Filter - setup do: clear_config([Filter.Mogrify, :args]) - test "apply mogrify filter" do - Config.put([Filter.Mogrify, :args], [{"tint", "40"}]) + clear_config(Filter.Mogrify, args: [{"tint", "40"}]) File.cp!( "test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg" ) - upload = %Upload{ + upload = %Pleroma.Upload{ name: "an… image.jpg", content_type: "image/jpg", path: Path.absname("test/fixtures/image_tmp.jpg"), diff --git a/test/upload_test.exs b/test/upload_test.exs index 060a940bb..2abf0edec 100644 --- a/test/upload_test.exs +++ b/test/upload_test.exs @@ -54,6 +54,7 @@ test "it returns file" do %{ "name" => "image.jpg", "type" => "Document", + "mediaType" => "image/jpeg", "url" => [ %{ "href" => "http://localhost:4001/media/post-process-file.jpg", diff --git a/test/user_test.exs b/test/user_test.exs index 3556ef1b4..9b66f3f51 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -199,6 +199,16 @@ test "doesn't return already accepted or duplicate follow requests" do assert [^pending_follower] = User.get_follow_requests(locked) end + test "doesn't return follow requests for deactivated accounts" do + locked = insert(:user, locked: true) + pending_follower = insert(:user, %{deactivated: true}) + + CommonAPI.follow(pending_follower, locked) + + assert true == pending_follower.deactivated + assert [] = User.get_follow_requests(locked) + end + test "clears follow requests when requester is blocked" do followed = insert(:user, locked: true) follower = insert(:user) @@ -1122,7 +1132,7 @@ test "hide a user's statuses from timelines and notifications" do assert [%{activity | thread_muted?: CommonAPI.thread_muted?(user2, activity)}] == ActivityPub.fetch_activities([user2.ap_id | User.following(user2)], %{ - "user" => user2 + user: user2 }) {:ok, _user} = User.deactivate(user) @@ -1132,7 +1142,7 @@ test "hide a user's statuses from timelines and notifications" do assert [] == ActivityPub.fetch_activities([user2.ap_id | User.following(user2)], %{ - "user" => user2 + user: user2 }) end end @@ -1159,6 +1169,9 @@ test "it deactivates a user, all follow relationships and all activities", %{use follower = insert(:user) {:ok, follower} = User.follow(follower, user) + locked_user = insert(:user, name: "locked", locked: true) + {:ok, _} = User.follow(user, locked_user, :follow_pending) + object = insert(:note, user: user) activity = insert(:note_activity, user: user, note: object) @@ -1177,6 +1190,8 @@ test "it deactivates a user, all follow relationships and all activities", %{use refute User.following?(follower, user) assert %{deactivated: true} = User.get_by_id(user.id) + assert [] == User.get_follow_requests(locked_user) + user_activities = user.ap_id |> Activity.Queries.by_actor() @@ -1337,11 +1352,11 @@ test "returns false for a non-invisible user" do end end - describe "visible_for?/2" do + describe "visible_for/2" do test "returns true when the account is itself" do user = insert(:user, local: true) - assert User.visible_for?(user, user) + assert User.visible_for(user, user) == :visible end test "returns false when the account is unauthenticated and auth is required" do @@ -1350,14 +1365,14 @@ test "returns false when the account is unauthenticated and auth is required" do user = insert(:user, local: true, confirmation_pending: true) other_user = insert(:user, local: true) - refute User.visible_for?(user, other_user) + refute User.visible_for(user, other_user) == :visible end test "returns true when the account is unauthenticated and auth is not required" do user = insert(:user, local: true, confirmation_pending: true) other_user = insert(:user, local: true) - assert User.visible_for?(user, other_user) + assert User.visible_for(user, other_user) == :visible end test "returns true when the account is unauthenticated and being viewed by a privileged account (auth required)" do @@ -1366,7 +1381,7 @@ test "returns true when the account is unauthenticated and being viewed by a pri user = insert(:user, local: true, confirmation_pending: true) other_user = insert(:user, local: true, is_admin: true) - assert User.visible_for?(user, other_user) + assert User.visible_for(user, other_user) == :visible end end @@ -1802,7 +1817,7 @@ test "avatar fallback" do user = insert(:user) assert User.avatar_url(user) =~ "/images/avi.png" - Pleroma.Config.put([:assets, :default_user_avatar], "avatar.png") + clear_config([:assets, :default_user_avatar], "avatar.png") user = User.get_cached_by_nickname_or_id(user.nickname) assert User.avatar_url(user) =~ "avatar.png" diff --git a/test/web/activity_pub/activity_pub_controller_test.exs b/test/web/activity_pub/activity_pub_controller_test.exs index 24edab41a..e722f7c04 100644 --- a/test/web/activity_pub/activity_pub_controller_test.exs +++ b/test/web/activity_pub/activity_pub_controller_test.exs @@ -536,6 +536,7 @@ test "accept follow activity", %{conn: conn} do assert_receive {:mix_shell, :info, ["relay.mastodon.host"]} end + @tag capture_log: true test "without valid signature, " <> "it only accepts Create activities and requires enabled federation", %{conn: conn} do @@ -648,11 +649,14 @@ test "it accepts messages with bcc as string instead of array", %{conn: conn, da test "it accepts announces with to as string instead of array", %{conn: conn} do user = insert(:user) + {:ok, post} = CommonAPI.post(user, %{status: "hey"}) + announcer = insert(:user, local: false) + data = %{ "@context" => "https://www.w3.org/ns/activitystreams", - "actor" => "http://mastodon.example.org/users/admin", - "id" => "http://mastodon.example.org/users/admin/statuses/19512778738411822/activity", - "object" => "https://mastodon.social/users/emelie/statuses/101849165031453009", + "actor" => announcer.ap_id, + "id" => "#{announcer.ap_id}/statuses/19512778738411822/activity", + "object" => post.data["object"], "to" => "https://www.w3.org/ns/activitystreams#Public", "cc" => [user.ap_id], "type" => "Announce" @@ -804,17 +808,63 @@ test "it requires authentication", %{conn: conn} do end describe "GET /users/:nickname/outbox" do + test "it paginates correctly", %{conn: conn} do + user = insert(:user) + conn = assign(conn, :user, user) + outbox_endpoint = user.ap_id <> "/outbox" + + _posts = + for i <- 0..25 do + {:ok, activity} = CommonAPI.post(user, %{status: "post #{i}"}) + activity + end + + result = + conn + |> put_req_header("accept", "application/activity+json") + |> get(outbox_endpoint <> "?page=true") + |> json_response(200) + + result_ids = Enum.map(result["orderedItems"], fn x -> x["id"] end) + assert length(result["orderedItems"]) == 20 + assert length(result_ids) == 20 + assert result["next"] + assert String.starts_with?(result["next"], outbox_endpoint) + + result_next = + conn + |> put_req_header("accept", "application/activity+json") + |> get(result["next"]) + |> json_response(200) + + result_next_ids = Enum.map(result_next["orderedItems"], fn x -> x["id"] end) + assert length(result_next["orderedItems"]) == 6 + assert length(result_next_ids) == 6 + refute Enum.find(result_next_ids, fn x -> x in result_ids end) + refute Enum.find(result_ids, fn x -> x in result_next_ids end) + assert String.starts_with?(result["id"], outbox_endpoint) + + result_next_again = + conn + |> put_req_header("accept", "application/activity+json") + |> get(result_next["id"]) + |> json_response(200) + + assert result_next == result_next_again + end + test "it returns 200 even if there're no activities", %{conn: conn} do user = insert(:user) + outbox_endpoint = user.ap_id <> "/outbox" conn = conn |> assign(:user, user) |> put_req_header("accept", "application/activity+json") - |> get("/users/#{user.nickname}/outbox") + |> get(outbox_endpoint) result = json_response(conn, 200) - assert user.ap_id <> "/outbox" == result["id"] + assert outbox_endpoint == result["id"] end test "it returns a note activity in a collection", %{conn: conn} do diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index 3dcb62873..575e0c5db 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -82,30 +82,28 @@ test "it restricts by the appropriate visibility" do {:ok, private_activity} = CommonAPI.post(user, %{status: ".", visibility: "private"}) - activities = - ActivityPub.fetch_activities([], %{:visibility => "direct", "actor_id" => user.ap_id}) + activities = ActivityPub.fetch_activities([], %{visibility: "direct", actor_id: user.ap_id}) assert activities == [direct_activity] activities = - ActivityPub.fetch_activities([], %{:visibility => "unlisted", "actor_id" => user.ap_id}) + ActivityPub.fetch_activities([], %{visibility: "unlisted", actor_id: user.ap_id}) assert activities == [unlisted_activity] activities = - ActivityPub.fetch_activities([], %{:visibility => "private", "actor_id" => user.ap_id}) + ActivityPub.fetch_activities([], %{visibility: "private", actor_id: user.ap_id}) assert activities == [private_activity] - activities = - ActivityPub.fetch_activities([], %{:visibility => "public", "actor_id" => user.ap_id}) + activities = ActivityPub.fetch_activities([], %{visibility: "public", actor_id: user.ap_id}) assert activities == [public_activity] activities = ActivityPub.fetch_activities([], %{ - :visibility => ~w[private public], - "actor_id" => user.ap_id + visibility: ~w[private public], + actor_id: user.ap_id }) assert activities == [public_activity, private_activity] @@ -126,8 +124,8 @@ test "it excludes by the appropriate visibility" do activities = ActivityPub.fetch_activities([], %{ - "exclude_visibilities" => "direct", - "actor_id" => user.ap_id + exclude_visibilities: "direct", + actor_id: user.ap_id }) assert public_activity in activities @@ -137,8 +135,8 @@ test "it excludes by the appropriate visibility" do activities = ActivityPub.fetch_activities([], %{ - "exclude_visibilities" => "unlisted", - "actor_id" => user.ap_id + exclude_visibilities: "unlisted", + actor_id: user.ap_id }) assert public_activity in activities @@ -148,8 +146,8 @@ test "it excludes by the appropriate visibility" do activities = ActivityPub.fetch_activities([], %{ - "exclude_visibilities" => "private", - "actor_id" => user.ap_id + exclude_visibilities: "private", + actor_id: user.ap_id }) assert public_activity in activities @@ -159,8 +157,8 @@ test "it excludes by the appropriate visibility" do activities = ActivityPub.fetch_activities([], %{ - "exclude_visibilities" => "public", - "actor_id" => user.ap_id + exclude_visibilities: "public", + actor_id: user.ap_id }) refute public_activity in activities @@ -193,23 +191,22 @@ test "it fetches the appropriate tag-restricted posts" do {:ok, status_two} = CommonAPI.post(user, %{status: ". #essais"}) {:ok, status_three} = CommonAPI.post(user, %{status: ". #test #reject"}) - fetch_one = ActivityPub.fetch_activities([], %{"type" => "Create", "tag" => "test"}) + fetch_one = ActivityPub.fetch_activities([], %{type: "Create", tag: "test"}) - fetch_two = - ActivityPub.fetch_activities([], %{"type" => "Create", "tag" => ["test", "essais"]}) + fetch_two = ActivityPub.fetch_activities([], %{type: "Create", tag: ["test", "essais"]}) fetch_three = ActivityPub.fetch_activities([], %{ - "type" => "Create", - "tag" => ["test", "essais"], - "tag_reject" => ["reject"] + type: "Create", + tag: ["test", "essais"], + tag_reject: ["reject"] }) fetch_four = ActivityPub.fetch_activities([], %{ - "type" => "Create", - "tag" => ["test"], - "tag_all" => ["test", "reject"] + type: "Create", + tag: ["test"], + tag_all: ["test", "reject"] }) assert fetch_one == [status_one, status_three] @@ -375,7 +372,7 @@ test "can be fetched into a timeline" do _listen_activity_2 = insert(:listen) _listen_activity_3 = insert(:listen) - timeline = ActivityPub.fetch_activities([], %{"type" => ["Listen"]}) + timeline = ActivityPub.fetch_activities([], %{type: ["Listen"]}) assert length(timeline) == 3 end @@ -507,7 +504,7 @@ test "retrieves activities that have a given context" do {:ok, _user_relationship} = User.block(user, %{ap_id: activity_five.data["actor"]}) - activities = ActivityPub.fetch_activities_for_context("2hu", %{"blocking_user" => user}) + activities = ActivityPub.fetch_activities_for_context("2hu", %{blocking_user: user}) assert activities == [activity_two, activity] end end @@ -520,8 +517,7 @@ test "doesn't return blocked activities" do booster = insert(:user) {:ok, _user_relationship} = User.block(user, %{ap_id: activity_one.data["actor"]}) - activities = - ActivityPub.fetch_activities([], %{"blocking_user" => user, "skip_preload" => true}) + activities = ActivityPub.fetch_activities([], %{blocking_user: user, skip_preload: true}) assert Enum.member?(activities, activity_two) assert Enum.member?(activities, activity_three) @@ -529,8 +525,7 @@ test "doesn't return blocked activities" do {:ok, _user_block} = User.unblock(user, %{ap_id: activity_one.data["actor"]}) - activities = - ActivityPub.fetch_activities([], %{"blocking_user" => user, "skip_preload" => true}) + activities = ActivityPub.fetch_activities([], %{blocking_user: user, skip_preload: true}) assert Enum.member?(activities, activity_two) assert Enum.member?(activities, activity_three) @@ -541,16 +536,14 @@ test "doesn't return blocked activities" do %Activity{} = boost_activity = Activity.get_create_by_object_ap_id(id) activity_three = Activity.get_by_id(activity_three.id) - activities = - ActivityPub.fetch_activities([], %{"blocking_user" => user, "skip_preload" => true}) + activities = ActivityPub.fetch_activities([], %{blocking_user: user, skip_preload: true}) assert Enum.member?(activities, activity_two) refute Enum.member?(activities, activity_three) refute Enum.member?(activities, boost_activity) assert Enum.member?(activities, activity_one) - activities = - ActivityPub.fetch_activities([], %{"blocking_user" => nil, "skip_preload" => true}) + activities = ActivityPub.fetch_activities([], %{blocking_user: nil, skip_preload: true}) assert Enum.member?(activities, activity_two) assert Enum.member?(activities, activity_three) @@ -573,7 +566,7 @@ test "doesn't return transitive interactions concerning blocked users" do {:ok, activity_four} = CommonAPI.post(blockee, %{status: "hey! @#{blocker.nickname}"}) - activities = ActivityPub.fetch_activities([], %{"blocking_user" => blocker}) + activities = ActivityPub.fetch_activities([], %{blocking_user: blocker}) assert Enum.member?(activities, activity_one) refute Enum.member?(activities, activity_two) @@ -581,7 +574,7 @@ test "doesn't return transitive interactions concerning blocked users" do refute Enum.member?(activities, activity_four) end - test "doesn't return announce activities concerning blocked users" do + test "doesn't return announce activities with blocked users in 'to'" do blocker = insert(:user) blockee = insert(:user) friend = insert(:user) @@ -595,7 +588,40 @@ test "doesn't return announce activities concerning blocked users" do {:ok, activity_three} = CommonAPI.repeat(activity_two.id, friend) activities = - ActivityPub.fetch_activities([], %{"blocking_user" => blocker}) + ActivityPub.fetch_activities([], %{blocking_user: blocker}) + |> Enum.map(fn act -> act.id end) + + assert Enum.member?(activities, activity_one.id) + refute Enum.member?(activities, activity_two.id) + refute Enum.member?(activities, activity_three.id) + end + + test "doesn't return announce activities with blocked users in 'cc'" do + blocker = insert(:user) + blockee = insert(:user) + friend = insert(:user) + + {:ok, _user_relationship} = User.block(blocker, blockee) + + {:ok, activity_one} = CommonAPI.post(friend, %{status: "hey!"}) + + {:ok, activity_two} = CommonAPI.post(blockee, %{status: "hey! @#{friend.nickname}"}) + + assert object = Pleroma.Object.normalize(activity_two) + + data = %{ + "actor" => friend.ap_id, + "object" => object.data["id"], + "context" => object.data["context"], + "type" => "Announce", + "to" => ["https://www.w3.org/ns/activitystreams#Public"], + "cc" => [blockee.ap_id] + } + + assert {:ok, activity_three} = ActivityPub.insert(data) + + activities = + ActivityPub.fetch_activities([], %{blocking_user: blocker}) |> Enum.map(fn act -> act.id end) assert Enum.member?(activities, activity_one.id) @@ -611,8 +637,7 @@ test "doesn't return activities from blocked domains" do user = insert(:user) {:ok, user} = User.block_domain(user, domain) - activities = - ActivityPub.fetch_activities([], %{"blocking_user" => user, "skip_preload" => true}) + activities = ActivityPub.fetch_activities([], %{blocking_user: user, skip_preload: true}) refute activity in activities @@ -620,8 +645,7 @@ test "doesn't return activities from blocked domains" do ActivityPub.follow(user, followed_user) {:ok, repeat_activity} = CommonAPI.repeat(activity.id, followed_user) - activities = - ActivityPub.fetch_activities([], %{"blocking_user" => user, "skip_preload" => true}) + activities = ActivityPub.fetch_activities([], %{blocking_user: user, skip_preload: true}) refute repeat_activity in activities end @@ -641,8 +665,7 @@ test "does return activities from followed users on blocked domains" do note = insert(:note, %{data: %{"actor" => domain_user.ap_id}}) activity = insert(:note_activity, %{note: note}) - activities = - ActivityPub.fetch_activities([], %{"blocking_user" => blocker, "skip_preload" => true}) + activities = ActivityPub.fetch_activities([], %{blocking_user: blocker, skip_preload: true}) assert activity in activities @@ -653,8 +676,7 @@ test "does return activities from followed users on blocked domains" do bad_activity = insert(:note_activity, %{note: bad_note}) {:ok, repeat_activity} = CommonAPI.repeat(bad_activity.id, domain_user) - activities = - ActivityPub.fetch_activities([], %{"blocking_user" => blocker, "skip_preload" => true}) + activities = ActivityPub.fetch_activities([], %{blocking_user: blocker, skip_preload: true}) refute repeat_activity in activities end @@ -669,8 +691,7 @@ test "doesn't return muted activities" do activity_one_actor = User.get_by_ap_id(activity_one.data["actor"]) {:ok, _user_relationships} = User.mute(user, activity_one_actor) - activities = - ActivityPub.fetch_activities([], %{"muting_user" => user, "skip_preload" => true}) + activities = ActivityPub.fetch_activities([], %{muting_user: user, skip_preload: true}) assert Enum.member?(activities, activity_two) assert Enum.member?(activities, activity_three) @@ -679,9 +700,9 @@ test "doesn't return muted activities" do # Calling with 'with_muted' will deliver muted activities, too. activities = ActivityPub.fetch_activities([], %{ - "muting_user" => user, - "with_muted" => true, - "skip_preload" => true + muting_user: user, + with_muted: true, + skip_preload: true }) assert Enum.member?(activities, activity_two) @@ -690,8 +711,7 @@ test "doesn't return muted activities" do {:ok, _user_mute} = User.unmute(user, activity_one_actor) - activities = - ActivityPub.fetch_activities([], %{"muting_user" => user, "skip_preload" => true}) + activities = ActivityPub.fetch_activities([], %{muting_user: user, skip_preload: true}) assert Enum.member?(activities, activity_two) assert Enum.member?(activities, activity_three) @@ -703,15 +723,14 @@ test "doesn't return muted activities" do %Activity{} = boost_activity = Activity.get_create_by_object_ap_id(id) activity_three = Activity.get_by_id(activity_three.id) - activities = - ActivityPub.fetch_activities([], %{"muting_user" => user, "skip_preload" => true}) + activities = ActivityPub.fetch_activities([], %{muting_user: user, skip_preload: true}) assert Enum.member?(activities, activity_two) refute Enum.member?(activities, activity_three) refute Enum.member?(activities, boost_activity) assert Enum.member?(activities, activity_one) - activities = ActivityPub.fetch_activities([], %{"muting_user" => nil, "skip_preload" => true}) + activities = ActivityPub.fetch_activities([], %{muting_user: nil, skip_preload: true}) assert Enum.member?(activities, activity_two) assert Enum.member?(activities, activity_three) @@ -727,7 +746,7 @@ test "doesn't return thread muted activities" do {:ok, _activity_two} = CommonAPI.add_mute(user, activity_two) - assert [_activity_one] = ActivityPub.fetch_activities([], %{"muting_user" => user}) + assert [_activity_one] = ActivityPub.fetch_activities([], %{muting_user: user}) end test "returns thread muted activities when with_muted is set" do @@ -739,7 +758,7 @@ test "returns thread muted activities when with_muted is set" do {:ok, _activity_two} = CommonAPI.add_mute(user, activity_two) assert [_activity_two, _activity_one] = - ActivityPub.fetch_activities([], %{"muting_user" => user, "with_muted" => true}) + ActivityPub.fetch_activities([], %{muting_user: user, with_muted: true}) end test "does include announces on request" do @@ -761,7 +780,7 @@ test "excludes reblogs on request" do {:ok, expected_activity} = ActivityBuilder.insert(%{"type" => "Create"}, %{:user => user}) {:ok, _} = ActivityBuilder.insert(%{"type" => "Announce"}, %{:user => user}) - [activity] = ActivityPub.fetch_user_activities(user, nil, %{"exclude_reblogs" => "true"}) + [activity] = ActivityPub.fetch_user_activities(user, nil, %{exclude_reblogs: true}) assert activity == expected_activity end @@ -804,7 +823,7 @@ test "retrieves ids starting from a since_id" do expected_activities = ActivityBuilder.insert_list(10) since_id = List.last(activities).id - activities = ActivityPub.fetch_public_activities(%{"since_id" => since_id}) + activities = ActivityPub.fetch_public_activities(%{since_id: since_id}) assert collect_ids(activities) == collect_ids(expected_activities) assert length(activities) == 10 @@ -819,7 +838,7 @@ test "retrieves ids up to max_id" do |> ActivityBuilder.insert_list() |> List.first() - activities = ActivityPub.fetch_public_activities(%{"max_id" => max_id}) + activities = ActivityPub.fetch_public_activities(%{max_id: max_id}) assert length(activities) == 20 assert collect_ids(activities) == collect_ids(expected_activities) @@ -831,8 +850,7 @@ test "paginates via offset/limit" do later_activities = ActivityBuilder.insert_list(10) - activities = - ActivityPub.fetch_public_activities(%{"page" => "2", "page_size" => "20"}, :offset) + activities = ActivityPub.fetch_public_activities(%{page: "2", page_size: "20"}, :offset) assert length(activities) == 20 @@ -848,7 +866,7 @@ test "doesn't return reblogs for users for whom reblogs have been muted" do {:ok, activity} = CommonAPI.repeat(activity.id, booster) - activities = ActivityPub.fetch_activities([], %{"muting_user" => user}) + activities = ActivityPub.fetch_activities([], %{muting_user: user}) refute Enum.any?(activities, fn %{id: id} -> id == activity.id end) end @@ -862,7 +880,7 @@ test "returns reblogs for users for whom reblogs have not been muted" do {:ok, activity} = CommonAPI.repeat(activity.id, booster) - activities = ActivityPub.fetch_activities([], %{"muting_user" => user}) + activities = ActivityPub.fetch_activities([], %{muting_user: user}) assert Enum.any?(activities, fn %{id: id} -> id == activity.id end) end @@ -974,54 +992,6 @@ test "creates an undo activity for a pending follow request" do end end - describe "blocking" do - test "reverts block activity on error" do - [blocker, blocked] = insert_list(2, :user) - - with_mock(Utils, [:passthrough], maybe_federate: fn _ -> {:error, :reverted} end) do - assert {:error, :reverted} = ActivityPub.block(blocker, blocked) - end - - assert Repo.aggregate(Activity, :count, :id) == 0 - assert Repo.aggregate(Object, :count, :id) == 0 - end - - test "creates a block activity" do - clear_config([:instance, :federating], true) - blocker = insert(:user) - blocked = insert(:user) - - with_mock Pleroma.Web.Federator, - publish: fn _ -> nil end do - {:ok, activity} = ActivityPub.block(blocker, blocked) - - assert activity.data["type"] == "Block" - assert activity.data["actor"] == blocker.ap_id - assert activity.data["object"] == blocked.ap_id - - assert called(Pleroma.Web.Federator.publish(activity)) - end - end - - test "works with outgoing blocks disabled, but doesn't federate" do - clear_config([:instance, :federating], true) - clear_config([:activitypub, :outgoing_blocks], false) - blocker = insert(:user) - blocked = insert(:user) - - with_mock Pleroma.Web.Federator, - publish: fn _ -> nil end do - {:ok, activity} = ActivityPub.block(blocker, blocked) - - assert activity.data["type"] == "Block" - assert activity.data["actor"] == blocker.ap_id - assert activity.data["object"] == blocked.ap_id - - refute called(Pleroma.Web.Federator.publish(:_)) - end - end - end - describe "timeline post-processing" do test "it filters broken threads" do user1 = insert(:user) @@ -1066,7 +1036,7 @@ test "it filters broken threads" do assert length(activities) == 3 activities = - ActivityPub.fetch_activities([user1.ap_id | User.following(user1)], %{"user" => user1}) + ActivityPub.fetch_activities([user1.ap_id | User.following(user1)], %{user: user1}) |> Enum.map(fn a -> a.id end) assert [public_activity.id, private_activity_1.id] == activities @@ -1074,52 +1044,6 @@ test "it filters broken threads" do end end - describe "update" do - setup do: clear_config([:instance, :max_pinned_statuses]) - - test "it creates an update activity with the new user data" do - user = insert(:user) - {:ok, user} = User.ensure_keys_present(user) - user_data = Pleroma.Web.ActivityPub.UserView.render("user.json", %{user: user}) - - {:ok, update} = - ActivityPub.update(%{ - actor: user_data["id"], - to: [user.follower_address], - cc: [], - object: user_data - }) - - assert update.data["actor"] == user.ap_id - assert update.data["to"] == [user.follower_address] - assert embedded_object = update.data["object"] - assert embedded_object["id"] == user_data["id"] - assert embedded_object["type"] == user_data["type"] - end - end - - test "returned pinned statuses" do - Config.put([:instance, :max_pinned_statuses], 3) - user = insert(:user) - - {:ok, activity_one} = CommonAPI.post(user, %{status: "HI!!!"}) - {:ok, activity_two} = CommonAPI.post(user, %{status: "HI!!!"}) - {:ok, activity_three} = CommonAPI.post(user, %{status: "HI!!!"}) - - CommonAPI.pin(activity_one.id, user) - user = refresh_record(user) - - CommonAPI.pin(activity_two.id, user) - user = refresh_record(user) - - CommonAPI.pin(activity_three.id, user) - user = refresh_record(user) - - activities = ActivityPub.fetch_user_activities(user, nil, %{"pinned" => "true"}) - - assert 3 = length(activities) - end - describe "flag/1" do setup do reporter = insert(:user) @@ -1226,7 +1150,7 @@ test "fetch_activities/2 returns activities addressed to a list " do activity = Repo.preload(activity, :bookmark) activity = %Activity{activity | thread_muted?: !!activity.thread_muted?} - assert ActivityPub.fetch_activities([], %{"user" => user}) == [activity] + assert ActivityPub.fetch_activities([], %{user: user}) == [activity] end def data_uri do @@ -1400,7 +1324,7 @@ test "returns a favourite activities sorted by adds to favorite" do assert Enum.map(result, & &1.id) == [a1.id, a5.id, a3.id, a4.id] - result = ActivityPub.fetch_favourites(user, %{"limit" => 2}) + result = ActivityPub.fetch_favourites(user, %{limit: 2}) assert Enum.map(result, & &1.id) == [a1.id, a5.id] end end @@ -1470,7 +1394,7 @@ test "doesn't retrieve replies activities with exclude_replies" do {:ok, _reply} = CommonAPI.post(user, %{status: "yeah", in_reply_to_status_id: activity.id}) - [result] = ActivityPub.fetch_public_activities(%{"exclude_replies" => "true"}) + [result] = ActivityPub.fetch_public_activities(%{exclude_replies: true}) assert result.id == activity.id @@ -1483,11 +1407,11 @@ test "doesn't retrieve replies activities with exclude_replies" do test "public timeline", %{users: %{u1: user}} do activities_ids = %{} - |> Map.put("type", ["Create", "Announce"]) - |> Map.put("local_only", false) - |> Map.put("blocking_user", user) - |> Map.put("muting_user", user) - |> Map.put("reply_filtering_user", user) + |> Map.put(:type, ["Create", "Announce"]) + |> Map.put(:local_only, false) + |> Map.put(:blocking_user, user) + |> Map.put(:muting_user, user) + |> Map.put(:reply_filtering_user, user) |> ActivityPub.fetch_public_activities() |> Enum.map(& &1.id) @@ -1504,12 +1428,12 @@ test "public timeline with reply_visibility `following`", %{ } do activities_ids = %{} - |> Map.put("type", ["Create", "Announce"]) - |> Map.put("local_only", false) - |> Map.put("blocking_user", user) - |> Map.put("muting_user", user) - |> Map.put("reply_visibility", "following") - |> Map.put("reply_filtering_user", user) + |> Map.put(:type, ["Create", "Announce"]) + |> Map.put(:local_only, false) + |> Map.put(:blocking_user, user) + |> Map.put(:muting_user, user) + |> Map.put(:reply_visibility, "following") + |> Map.put(:reply_filtering_user, user) |> ActivityPub.fetch_public_activities() |> Enum.map(& &1.id) @@ -1531,12 +1455,12 @@ test "public timeline with reply_visibility `self`", %{ } do activities_ids = %{} - |> Map.put("type", ["Create", "Announce"]) - |> Map.put("local_only", false) - |> Map.put("blocking_user", user) - |> Map.put("muting_user", user) - |> Map.put("reply_visibility", "self") - |> Map.put("reply_filtering_user", user) + |> Map.put(:type, ["Create", "Announce"]) + |> Map.put(:local_only, false) + |> Map.put(:blocking_user, user) + |> Map.put(:muting_user, user) + |> Map.put(:reply_visibility, "self") + |> Map.put(:reply_filtering_user, user) |> ActivityPub.fetch_public_activities() |> Enum.map(& &1.id) @@ -1555,11 +1479,11 @@ test "home timeline", %{ } do params = %{} - |> Map.put("type", ["Create", "Announce"]) - |> Map.put("blocking_user", user) - |> Map.put("muting_user", user) - |> Map.put("user", user) - |> Map.put("reply_filtering_user", user) + |> Map.put(:type, ["Create", "Announce"]) + |> Map.put(:blocking_user, user) + |> Map.put(:muting_user, user) + |> Map.put(:user, user) + |> Map.put(:reply_filtering_user, user) activities_ids = ActivityPub.fetch_activities([user.ap_id | User.following(user)], params) @@ -1593,12 +1517,12 @@ test "home timeline with reply_visibility `following`", %{ } do params = %{} - |> Map.put("type", ["Create", "Announce"]) - |> Map.put("blocking_user", user) - |> Map.put("muting_user", user) - |> Map.put("user", user) - |> Map.put("reply_visibility", "following") - |> Map.put("reply_filtering_user", user) + |> Map.put(:type, ["Create", "Announce"]) + |> Map.put(:blocking_user, user) + |> Map.put(:muting_user, user) + |> Map.put(:user, user) + |> Map.put(:reply_visibility, "following") + |> Map.put(:reply_filtering_user, user) activities_ids = ActivityPub.fetch_activities([user.ap_id | User.following(user)], params) @@ -1632,12 +1556,12 @@ test "home timeline with reply_visibility `self`", %{ } do params = %{} - |> Map.put("type", ["Create", "Announce"]) - |> Map.put("blocking_user", user) - |> Map.put("muting_user", user) - |> Map.put("user", user) - |> Map.put("reply_visibility", "self") - |> Map.put("reply_filtering_user", user) + |> Map.put(:type, ["Create", "Announce"]) + |> Map.put(:blocking_user, user) + |> Map.put(:muting_user, user) + |> Map.put(:user, user) + |> Map.put(:reply_visibility, "self") + |> Map.put(:reply_filtering_user, user) activities_ids = ActivityPub.fetch_activities([user.ap_id | User.following(user)], params) @@ -1658,6 +1582,40 @@ test "home timeline with reply_visibility `self`", %{ assert Enum.all?(visible_ids, &(&1 in activities_ids)) end + + test "filtering out announces where the user is the actor of the announced message" do + user = insert(:user) + other_user = insert(:user) + third_user = insert(:user) + User.follow(user, other_user) + + {:ok, post} = CommonAPI.post(user, %{status: "yo"}) + {:ok, other_post} = CommonAPI.post(third_user, %{status: "yo"}) + {:ok, _announce} = CommonAPI.repeat(post.id, other_user) + {:ok, _announce} = CommonAPI.repeat(post.id, third_user) + {:ok, announce} = CommonAPI.repeat(other_post.id, other_user) + + params = %{ + type: ["Announce"] + } + + results = + [user.ap_id | User.following(user)] + |> ActivityPub.fetch_activities(params) + + assert length(results) == 3 + + params = %{ + type: ["Announce"], + announce_filtering_user: user + } + + [result] = + [user.ap_id | User.following(user)] + |> ActivityPub.fetch_activities(params) + + assert result.id == announce.id + end end describe "replies filtering with private messages" do @@ -1666,11 +1624,11 @@ test "home timeline with reply_visibility `self`", %{ test "public timeline", %{users: %{u1: user}} do activities_ids = %{} - |> Map.put("type", ["Create", "Announce"]) - |> Map.put("local_only", false) - |> Map.put("blocking_user", user) - |> Map.put("muting_user", user) - |> Map.put("user", user) + |> Map.put(:type, ["Create", "Announce"]) + |> Map.put(:local_only, false) + |> Map.put(:blocking_user, user) + |> Map.put(:muting_user, user) + |> Map.put(:user, user) |> ActivityPub.fetch_public_activities() |> Enum.map(& &1.id) @@ -1680,13 +1638,13 @@ test "public timeline", %{users: %{u1: user}} do test "public timeline with default reply_visibility `following`", %{users: %{u1: user}} do activities_ids = %{} - |> Map.put("type", ["Create", "Announce"]) - |> Map.put("local_only", false) - |> Map.put("blocking_user", user) - |> Map.put("muting_user", user) - |> Map.put("reply_visibility", "following") - |> Map.put("reply_filtering_user", user) - |> Map.put("user", user) + |> Map.put(:type, ["Create", "Announce"]) + |> Map.put(:local_only, false) + |> Map.put(:blocking_user, user) + |> Map.put(:muting_user, user) + |> Map.put(:reply_visibility, "following") + |> Map.put(:reply_filtering_user, user) + |> Map.put(:user, user) |> ActivityPub.fetch_public_activities() |> Enum.map(& &1.id) @@ -1696,13 +1654,13 @@ test "public timeline with default reply_visibility `following`", %{users: %{u1: test "public timeline with default reply_visibility `self`", %{users: %{u1: user}} do activities_ids = %{} - |> Map.put("type", ["Create", "Announce"]) - |> Map.put("local_only", false) - |> Map.put("blocking_user", user) - |> Map.put("muting_user", user) - |> Map.put("reply_visibility", "self") - |> Map.put("reply_filtering_user", user) - |> Map.put("user", user) + |> Map.put(:type, ["Create", "Announce"]) + |> Map.put(:local_only, false) + |> Map.put(:blocking_user, user) + |> Map.put(:muting_user, user) + |> Map.put(:reply_visibility, "self") + |> Map.put(:reply_filtering_user, user) + |> Map.put(:user, user) |> ActivityPub.fetch_public_activities() |> Enum.map(& &1.id) @@ -1712,10 +1670,10 @@ test "public timeline with default reply_visibility `self`", %{users: %{u1: user test "home timeline", %{users: %{u1: user}} do params = %{} - |> Map.put("type", ["Create", "Announce"]) - |> Map.put("blocking_user", user) - |> Map.put("muting_user", user) - |> Map.put("user", user) + |> Map.put(:type, ["Create", "Announce"]) + |> Map.put(:blocking_user, user) + |> Map.put(:muting_user, user) + |> Map.put(:user, user) activities_ids = ActivityPub.fetch_activities([user.ap_id | User.following(user)], params) @@ -1727,12 +1685,12 @@ test "home timeline", %{users: %{u1: user}} do test "home timeline with default reply_visibility `following`", %{users: %{u1: user}} do params = %{} - |> Map.put("type", ["Create", "Announce"]) - |> Map.put("blocking_user", user) - |> Map.put("muting_user", user) - |> Map.put("user", user) - |> Map.put("reply_visibility", "following") - |> Map.put("reply_filtering_user", user) + |> Map.put(:type, ["Create", "Announce"]) + |> Map.put(:blocking_user, user) + |> Map.put(:muting_user, user) + |> Map.put(:user, user) + |> Map.put(:reply_visibility, "following") + |> Map.put(:reply_filtering_user, user) activities_ids = ActivityPub.fetch_activities([user.ap_id | User.following(user)], params) @@ -1751,12 +1709,12 @@ test "home timeline with default reply_visibility `self`", %{ } do params = %{} - |> Map.put("type", ["Create", "Announce"]) - |> Map.put("blocking_user", user) - |> Map.put("muting_user", user) - |> Map.put("user", user) - |> Map.put("reply_visibility", "self") - |> Map.put("reply_filtering_user", user) + |> Map.put(:type, ["Create", "Announce"]) + |> Map.put(:blocking_user, user) + |> Map.put(:muting_user, user) + |> Map.put(:user, user) + |> Map.put(:reply_visibility, "self") + |> Map.put(:reply_filtering_user, user) activities_ids = ActivityPub.fetch_activities([user.ap_id | User.following(user)], params) @@ -2001,4 +1959,20 @@ test "it just returns the input if the user has no following/follower addresses" end) =~ "Follower/Following counter update for #{user.ap_id} failed" end end + + describe "global activity expiration" do + setup do: clear_config([:mrf, :policies]) + + test "creates an activity expiration for local Create activities" do + Pleroma.Config.put( + [:mrf, :policies], + Pleroma.Web.ActivityPub.MRF.ActivityExpirationPolicy + ) + + {:ok, %{id: id_create}} = ActivityBuilder.insert(%{"type" => "Create", "context" => "3hu"}) + {:ok, _follow} = ActivityBuilder.insert(%{"type" => "Follow", "context" => "3hu"}) + + assert [%{activity_id: ^id_create}] = Pleroma.ActivityExpiration |> Repo.all() + end + end end diff --git a/test/web/activity_pub/mrf/activity_expiration_policy_test.exs b/test/web/activity_pub/mrf/activity_expiration_policy_test.exs new file mode 100644 index 000000000..8babf49e7 --- /dev/null +++ b/test/web/activity_pub/mrf/activity_expiration_policy_test.exs @@ -0,0 +1,77 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ActivityPub.MRF.ActivityExpirationPolicyTest do + use ExUnit.Case, async: true + alias Pleroma.Web.ActivityPub.MRF.ActivityExpirationPolicy + + @id Pleroma.Web.Endpoint.url() <> "/activities/cofe" + + test "adds `expires_at` property" do + assert {:ok, %{"type" => "Create", "expires_at" => expires_at}} = + ActivityExpirationPolicy.filter(%{ + "id" => @id, + "type" => "Create", + "object" => %{"type" => "Note"} + }) + + assert Timex.diff(expires_at, NaiveDateTime.utc_now(), :days) == 364 + end + + test "keeps existing `expires_at` if it less than the config setting" do + expires_at = NaiveDateTime.utc_now() |> Timex.shift(days: 1) + + assert {:ok, %{"type" => "Create", "expires_at" => ^expires_at}} = + ActivityExpirationPolicy.filter(%{ + "id" => @id, + "type" => "Create", + "expires_at" => expires_at, + "object" => %{"type" => "Note"} + }) + end + + test "overwrites existing `expires_at` if it greater than the config setting" do + too_distant_future = NaiveDateTime.utc_now() |> Timex.shift(years: 2) + + assert {:ok, %{"type" => "Create", "expires_at" => expires_at}} = + ActivityExpirationPolicy.filter(%{ + "id" => @id, + "type" => "Create", + "expires_at" => too_distant_future, + "object" => %{"type" => "Note"} + }) + + assert Timex.diff(expires_at, NaiveDateTime.utc_now(), :days) == 364 + end + + test "ignores remote activities" do + assert {:ok, activity} = + ActivityExpirationPolicy.filter(%{ + "id" => "https://example.com/123", + "type" => "Create", + "object" => %{"type" => "Note"} + }) + + refute Map.has_key?(activity, "expires_at") + end + + test "ignores non-Create/Note activities" do + assert {:ok, activity} = + ActivityExpirationPolicy.filter(%{ + "id" => "https://example.com/123", + "type" => "Follow" + }) + + refute Map.has_key?(activity, "expires_at") + + assert {:ok, activity} = + ActivityExpirationPolicy.filter(%{ + "id" => "https://example.com/123", + "type" => "Create", + "object" => %{"type" => "Cofe"} + }) + + refute Map.has_key?(activity, "expires_at") + end +end diff --git a/test/web/activity_pub/mrf/anti_link_spam_policy_test.exs b/test/web/activity_pub/mrf/anti_link_spam_policy_test.exs index 1a13699be..6867c9853 100644 --- a/test/web/activity_pub/mrf/anti_link_spam_policy_test.exs +++ b/test/web/activity_pub/mrf/anti_link_spam_policy_test.exs @@ -33,7 +33,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.AntiLinkSpamPolicyTest do describe "with new user" do test "it allows posts without links" do - user = insert(:user) + user = insert(:user, local: false) assert user.note_count == 0 @@ -45,7 +45,7 @@ test "it allows posts without links" do end test "it disallows posts with links" do - user = insert(:user) + user = insert(:user, local: false) assert user.note_count == 0 @@ -55,6 +55,18 @@ test "it disallows posts with links" do {:reject, _} = AntiLinkSpamPolicy.filter(message) end + + test "it allows posts with links for local users" do + user = insert(:user) + + assert user.note_count == 0 + + message = + @linkful_message + |> Map.put("actor", user.ap_id) + + {:ok, _message} = AntiLinkSpamPolicy.filter(message) + end end describe "with old user" do diff --git a/test/web/activity_pub/mrf/hellthread_policy_test.exs b/test/web/activity_pub/mrf/hellthread_policy_test.exs index 95ef0b168..6e9daa7f9 100644 --- a/test/web/activity_pub/mrf/hellthread_policy_test.exs +++ b/test/web/activity_pub/mrf/hellthread_policy_test.exs @@ -8,6 +8,8 @@ defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicyTest do import Pleroma.Web.ActivityPub.MRF.HellthreadPolicy + alias Pleroma.Web.CommonAPI + setup do user = insert(:user) @@ -20,7 +22,10 @@ defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicyTest do "https://instance.tld/users/user1", "https://instance.tld/users/user2", "https://instance.tld/users/user3" - ] + ], + "object" => %{ + "type" => "Note" + } } [user: user, message: message] @@ -28,6 +33,17 @@ defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicyTest do setup do: clear_config(:mrf_hellthread) + test "doesn't die on chat messages" do + Pleroma.Config.put([:mrf_hellthread], %{delist_threshold: 2, reject_threshold: 0}) + + user = insert(:user) + other_user = insert(:user) + + {:ok, activity} = CommonAPI.post_chat_message(user, other_user, "moin") + + assert {:ok, _} = filter(activity.data) + end + describe "reject" do test "rejects the message if the recipient count is above reject_threshold", %{ message: message diff --git a/test/web/activity_pub/mrf/mrf_test.exs b/test/web/activity_pub/mrf/mrf_test.exs index c941066f2..a63b25423 100644 --- a/test/web/activity_pub/mrf/mrf_test.exs +++ b/test/web/activity_pub/mrf/mrf_test.exs @@ -60,8 +60,6 @@ test "matches are case-insensitive" do end describe "describe/0" do - setup do: clear_config([:instance, :rewrite_policy]) - test "it works as expected with noop policy" do expected = %{ mrf_policies: ["NoOpPolicy"], @@ -72,7 +70,7 @@ test "it works as expected with noop policy" do end test "it works as expected with mock policy" do - Pleroma.Config.put([:instance, :rewrite_policy], [MRFModuleMock]) + clear_config([:mrf, :policies], [MRFModuleMock]) expected = %{ mrf_policies: ["MRFModuleMock"], diff --git a/test/web/activity_pub/mrf/user_allowlist_policy_test.exs b/test/web/activity_pub/mrf/user_allowlist_policy_test.exs index 724bae058..ba1b69658 100644 --- a/test/web/activity_pub/mrf/user_allowlist_policy_test.exs +++ b/test/web/activity_pub/mrf/user_allowlist_policy_test.exs @@ -7,7 +7,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.UserAllowListPolicyTest do alias Pleroma.Web.ActivityPub.MRF.UserAllowListPolicy - setup do: clear_config([:mrf_user_allowlist, :localhost]) + setup do: clear_config(:mrf_user_allowlist) test "pass filter if allow list is empty" do actor = insert(:user) @@ -17,14 +17,14 @@ test "pass filter if allow list is empty" do test "pass filter if allow list isn't empty and user in allow list" do actor = insert(:user) - Pleroma.Config.put([:mrf_user_allowlist, :localhost], [actor.ap_id, "test-ap-id"]) + Pleroma.Config.put([:mrf_user_allowlist], %{"localhost" => [actor.ap_id, "test-ap-id"]}) message = %{"actor" => actor.ap_id} assert UserAllowListPolicy.filter(message) == {:ok, message} end test "rejected if allow list isn't empty and user not in allow list" do actor = insert(:user) - Pleroma.Config.put([:mrf_user_allowlist, :localhost], ["test-ap-id"]) + Pleroma.Config.put([:mrf_user_allowlist], %{"localhost" => ["test-ap-id"]}) message = %{"actor" => actor.ap_id} assert UserAllowListPolicy.filter(message) == {:reject, nil} end diff --git a/test/web/activity_pub/object_validator_test.exs b/test/web/activity_pub/object_validator_test.exs index 7953eecf2..f38bf7e08 100644 --- a/test/web/activity_pub/object_validator_test.exs +++ b/test/web/activity_pub/object_validator_test.exs @@ -2,14 +2,264 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidatorTest do use Pleroma.DataCase alias Pleroma.Object + alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.ActivityPub.Builder alias Pleroma.Web.ActivityPub.ObjectValidator + alias Pleroma.Web.ActivityPub.ObjectValidators.AttachmentValidator alias Pleroma.Web.ActivityPub.ObjectValidators.LikeValidator alias Pleroma.Web.ActivityPub.Utils alias Pleroma.Web.CommonAPI import Pleroma.Factory + describe "attachments" do + test "works with honkerific attachments" do + attachment = %{ + "mediaType" => "", + "name" => "", + "summary" => "298p3RG7j27tfsZ9RQ.jpg", + "type" => "Document", + "url" => "https://honk.tedunangst.com/d/298p3RG7j27tfsZ9RQ.jpg" + } + + assert {:ok, attachment} = + AttachmentValidator.cast_and_validate(attachment) + |> Ecto.Changeset.apply_action(:insert) + + assert attachment.mediaType == "application/octet-stream" + end + + test "it turns mastodon attachments into our attachments" do + attachment = %{ + "url" => + "http://mastodon.example.org/system/media_attachments/files/000/000/002/original/334ce029e7bfb920.jpg", + "type" => "Document", + "name" => nil, + "mediaType" => "image/jpeg" + } + + {:ok, attachment} = + AttachmentValidator.cast_and_validate(attachment) + |> Ecto.Changeset.apply_action(:insert) + + assert [ + %{ + href: + "http://mastodon.example.org/system/media_attachments/files/000/000/002/original/334ce029e7bfb920.jpg", + type: "Link", + mediaType: "image/jpeg" + } + ] = attachment.url + + assert attachment.mediaType == "image/jpeg" + end + + test "it handles our own uploads" do + user = insert(:user) + + file = %Plug.Upload{ + content_type: "image/jpg", + path: Path.absname("test/fixtures/image.jpg"), + filename: "an_image.jpg" + } + + {:ok, attachment} = ActivityPub.upload(file, actor: user.ap_id) + + {:ok, attachment} = + attachment.data + |> AttachmentValidator.cast_and_validate() + |> Ecto.Changeset.apply_action(:insert) + + assert attachment.mediaType == "image/jpeg" + end + end + + describe "chat message create activities" do + test "it is invalid if the object already exists" do + user = insert(:user) + recipient = insert(:user) + {:ok, activity} = CommonAPI.post_chat_message(user, recipient, "hey") + object = Object.normalize(activity, false) + + {:ok, create_data, _} = Builder.create(user, object.data, [recipient.ap_id]) + + {:error, cng} = ObjectValidator.validate(create_data, []) + + assert {:object, {"The object to create already exists", []}} in cng.errors + end + + test "it is invalid if the object data has a different `to` or `actor` field" do + user = insert(:user) + recipient = insert(:user) + {:ok, object_data, _} = Builder.chat_message(recipient, user.ap_id, "Hey") + + {:ok, create_data, _} = Builder.create(user, object_data, [recipient.ap_id]) + + {:error, cng} = ObjectValidator.validate(create_data, []) + + assert {:to, {"Recipients don't match with object recipients", []}} in cng.errors + assert {:actor, {"Actor doesn't match with object actor", []}} in cng.errors + end + end + + describe "chat messages" do + setup do + clear_config([:instance, :remote_limit]) + user = insert(:user) + recipient = insert(:user, local: false) + + {:ok, valid_chat_message, _} = Builder.chat_message(user, recipient.ap_id, "hey :firefox:") + + %{user: user, recipient: recipient, valid_chat_message: valid_chat_message} + end + + test "let's through some basic html", %{user: user, recipient: recipient} do + {:ok, valid_chat_message, _} = + Builder.chat_message( + user, + recipient.ap_id, + "hey example " + ) + + assert {:ok, object, _meta} = ObjectValidator.validate(valid_chat_message, []) + + assert object["content"] == + "hey example alert('uguu')" + end + + test "validates for a basic object we build", %{valid_chat_message: valid_chat_message} do + assert {:ok, object, _meta} = ObjectValidator.validate(valid_chat_message, []) + + assert Map.put(valid_chat_message, "attachment", nil) == object + end + + test "validates for a basic object with an attachment", %{ + valid_chat_message: valid_chat_message, + user: user + } do + file = %Plug.Upload{ + content_type: "image/jpg", + path: Path.absname("test/fixtures/image.jpg"), + filename: "an_image.jpg" + } + + {:ok, attachment} = ActivityPub.upload(file, actor: user.ap_id) + + valid_chat_message = + valid_chat_message + |> Map.put("attachment", attachment.data) + + assert {:ok, object, _meta} = ObjectValidator.validate(valid_chat_message, []) + + assert object["attachment"] + end + + test "validates for a basic object with an attachment in an array", %{ + valid_chat_message: valid_chat_message, + user: user + } do + file = %Plug.Upload{ + content_type: "image/jpg", + path: Path.absname("test/fixtures/image.jpg"), + filename: "an_image.jpg" + } + + {:ok, attachment} = ActivityPub.upload(file, actor: user.ap_id) + + valid_chat_message = + valid_chat_message + |> Map.put("attachment", [attachment.data]) + + assert {:ok, object, _meta} = ObjectValidator.validate(valid_chat_message, []) + + assert object["attachment"] + end + + test "validates for a basic object with an attachment but without content", %{ + valid_chat_message: valid_chat_message, + user: user + } do + file = %Plug.Upload{ + content_type: "image/jpg", + path: Path.absname("test/fixtures/image.jpg"), + filename: "an_image.jpg" + } + + {:ok, attachment} = ActivityPub.upload(file, actor: user.ap_id) + + valid_chat_message = + valid_chat_message + |> Map.put("attachment", attachment.data) + |> Map.delete("content") + + assert {:ok, object, _meta} = ObjectValidator.validate(valid_chat_message, []) + + assert object["attachment"] + end + + test "does not validate if the message has no content", %{ + valid_chat_message: valid_chat_message + } do + contentless = + valid_chat_message + |> Map.delete("content") + + refute match?({:ok, _object, _meta}, ObjectValidator.validate(contentless, [])) + end + + test "does not validate if the message is longer than the remote_limit", %{ + valid_chat_message: valid_chat_message + } do + Pleroma.Config.put([:instance, :remote_limit], 2) + refute match?({:ok, _object, _meta}, ObjectValidator.validate(valid_chat_message, [])) + end + + test "does not validate if the recipient is blocking the actor", %{ + valid_chat_message: valid_chat_message, + user: user, + recipient: recipient + } do + Pleroma.User.block(recipient, user) + refute match?({:ok, _object, _meta}, ObjectValidator.validate(valid_chat_message, [])) + end + + test "does not validate if the actor or the recipient is not in our system", %{ + valid_chat_message: valid_chat_message + } do + chat_message = + valid_chat_message + |> Map.put("actor", "https://raymoo.com/raymoo") + + {:error, _} = ObjectValidator.validate(chat_message, []) + + chat_message = + valid_chat_message + |> Map.put("to", ["https://raymoo.com/raymoo"]) + + {:error, _} = ObjectValidator.validate(chat_message, []) + end + + test "does not validate for a message with multiple recipients", %{ + valid_chat_message: valid_chat_message, + user: user, + recipient: recipient + } do + chat_message = + valid_chat_message + |> Map.put("to", [user.ap_id, recipient.ap_id]) + + assert {:error, _} = ObjectValidator.validate(chat_message, []) + end + + test "does not validate if it doesn't concern local users" do + user = insert(:user, local: false) + recipient = insert(:user, local: false) + + {:ok, valid_chat_message, _} = Builder.chat_message(user, recipient.ap_id, "hey") + assert {:error, _} = ObjectValidator.validate(valid_chat_message, []) + end + end + describe "EmojiReacts" do setup do user = insert(:user) @@ -372,4 +622,63 @@ test "returns an error if the actor can't announce the object", %{ assert {:actor, {"can not announce this object publicly", []}} in cng.errors end end + + describe "updates" do + setup do + user = insert(:user) + + object = %{ + "id" => user.ap_id, + "name" => "A new name", + "summary" => "A new bio" + } + + {:ok, valid_update, []} = Builder.update(user, object) + + %{user: user, valid_update: valid_update} + end + + test "validates a basic object", %{valid_update: valid_update} do + assert {:ok, _update, []} = ObjectValidator.validate(valid_update, []) + end + + test "returns an error if the object can't be updated by the actor", %{ + valid_update: valid_update + } do + other_user = insert(:user) + + update = + valid_update + |> Map.put("actor", other_user.ap_id) + + assert {:error, _cng} = ObjectValidator.validate(update, []) + end + end + + describe "blocks" do + setup do + user = insert(:user, local: false) + blocked = insert(:user) + + {:ok, valid_block, []} = Builder.block(user, blocked) + + %{user: user, valid_block: valid_block} + end + + test "validates a basic object", %{ + valid_block: valid_block + } do + assert {:ok, _block, []} = ObjectValidator.validate(valid_block, []) + end + + test "returns an error if we don't know the blocked user", %{ + valid_block: valid_block + } do + block = + valid_block + |> Map.put("object", "https://gensokyo.2hu/users/raymoo") + + assert {:error, _cng} = ObjectValidator.validate(block, []) + end + end end diff --git a/test/web/activity_pub/object_validators/types/date_time_test.exs b/test/web/activity_pub/object_validators/types/date_time_test.exs index 3e17a9497..43be8e936 100644 --- a/test/web/activity_pub/object_validators/types/date_time_test.exs +++ b/test/web/activity_pub/object_validators/types/date_time_test.exs @@ -1,5 +1,5 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.Types.DateTimeTest do - alias Pleroma.Web.ActivityPub.ObjectValidators.Types.DateTime + alias Pleroma.EctoType.ActivityPub.ObjectValidators.DateTime use Pleroma.DataCase test "it validates an xsd:Datetime" do diff --git a/test/web/activity_pub/object_validators/types/object_id_test.exs b/test/web/activity_pub/object_validators/types/object_id_test.exs index 834213182..e0ab76379 100644 --- a/test/web/activity_pub/object_validators/types/object_id_test.exs +++ b/test/web/activity_pub/object_validators/types/object_id_test.exs @@ -1,5 +1,9 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Web.ObjectValidators.Types.ObjectIDTest do - alias Pleroma.Web.ActivityPub.ObjectValidators.Types.ObjectID + alias Pleroma.EctoType.ActivityPub.ObjectValidators.ObjectID use Pleroma.DataCase @uris [ diff --git a/test/web/activity_pub/object_validators/types/recipients_test.exs b/test/web/activity_pub/object_validators/types/recipients_test.exs index f278f039b..053916bdd 100644 --- a/test/web/activity_pub/object_validators/types/recipients_test.exs +++ b/test/web/activity_pub/object_validators/types/recipients_test.exs @@ -1,5 +1,5 @@ defmodule Pleroma.Web.ObjectValidators.Types.RecipientsTest do - alias Pleroma.Web.ActivityPub.ObjectValidators.Types.Recipients + alias Pleroma.EctoType.ActivityPub.ObjectValidators.Recipients use Pleroma.DataCase test "it asserts that all elements of the list are object ids" do diff --git a/test/web/activity_pub/object_validators/types/safe_text_test.exs b/test/web/activity_pub/object_validators/types/safe_text_test.exs new file mode 100644 index 000000000..9c08606f6 --- /dev/null +++ b/test/web/activity_pub/object_validators/types/safe_text_test.exs @@ -0,0 +1,30 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ActivityPub.ObjectValidators.Types.SafeTextTest do + use Pleroma.DataCase + + alias Pleroma.EctoType.ActivityPub.ObjectValidators.SafeText + + test "it lets normal text go through" do + text = "hey how are you" + assert {:ok, text} == SafeText.cast(text) + end + + test "it removes html tags from text" do + text = "hey look xss " + assert {:ok, "hey look xss alert('foo')"} == SafeText.cast(text) + end + + test "it keeps basic html tags" do + text = "hey look xss " + + assert {:ok, "hey look xss alert('foo')"} == + SafeText.cast(text) + end + + test "errors for non-text" do + assert :error == SafeText.cast(1) + end +end diff --git a/test/web/activity_pub/pipeline_test.exs b/test/web/activity_pub/pipeline_test.exs index 26557720b..8deb64501 100644 --- a/test/web/activity_pub/pipeline_test.exs +++ b/test/web/activity_pub/pipeline_test.exs @@ -33,7 +33,10 @@ test "it goes through validation, filtering, persisting, side effects and federa { Pleroma.Web.ActivityPub.SideEffects, [], - [handle: fn o, m -> {:ok, o, m} end] + [ + handle: fn o, m -> {:ok, o, m} end, + handle_after_transaction: fn m -> m end + ] }, { Pleroma.Web.Federator, @@ -71,7 +74,7 @@ test "it goes through validation, filtering, persisting, side effects without fe { Pleroma.Web.ActivityPub.SideEffects, [], - [handle: fn o, m -> {:ok, o, m} end] + [handle: fn o, m -> {:ok, o, m} end, handle_after_transaction: fn m -> m end] }, { Pleroma.Web.Federator, @@ -110,7 +113,7 @@ test "it goes through validation, filtering, persisting, side effects without fe { Pleroma.Web.ActivityPub.SideEffects, [], - [handle: fn o, m -> {:ok, o, m} end] + [handle: fn o, m -> {:ok, o, m} end, handle_after_transaction: fn m -> m end] }, { Pleroma.Web.Federator, diff --git a/test/web/activity_pub/side_effects_test.exs b/test/web/activity_pub/side_effects_test.exs index a80104ea7..af27c34b4 100644 --- a/test/web/activity_pub/side_effects_test.exs +++ b/test/web/activity_pub/side_effects_test.exs @@ -7,6 +7,8 @@ defmodule Pleroma.Web.ActivityPub.SideEffectsTest do use Pleroma.DataCase alias Pleroma.Activity + alias Pleroma.Chat + alias Pleroma.Chat.MessageReference alias Pleroma.Notification alias Pleroma.Object alias Pleroma.Repo @@ -20,6 +22,114 @@ defmodule Pleroma.Web.ActivityPub.SideEffectsTest do import Pleroma.Factory import Mock + describe "handle_after_transaction" do + test "it streams out notifications and streams" do + author = insert(:user, local: true) + recipient = insert(:user, local: true) + + {:ok, chat_message_data, _meta} = Builder.chat_message(author, recipient.ap_id, "hey") + + {:ok, create_activity_data, _meta} = + Builder.create(author, chat_message_data["id"], [recipient.ap_id]) + + {:ok, create_activity, _meta} = ActivityPub.persist(create_activity_data, local: false) + + {:ok, _create_activity, meta} = + SideEffects.handle(create_activity, local: false, object_data: chat_message_data) + + assert [notification] = meta[:notifications] + + with_mocks([ + { + Pleroma.Web.Streamer, + [], + [ + stream: fn _, _ -> nil end + ] + }, + { + Pleroma.Web.Push, + [], + [ + send: fn _ -> nil end + ] + } + ]) do + SideEffects.handle_after_transaction(meta) + + assert called(Pleroma.Web.Streamer.stream(["user", "user:notification"], notification)) + assert called(Pleroma.Web.Streamer.stream(["user", "user:pleroma_chat"], :_)) + assert called(Pleroma.Web.Push.send(notification)) + end + end + end + + describe "blocking users" do + setup do + user = insert(:user) + blocked = insert(:user) + User.follow(blocked, user) + User.follow(user, blocked) + + {:ok, block_data, []} = Builder.block(user, blocked) + {:ok, block, _meta} = ActivityPub.persist(block_data, local: true) + + %{user: user, blocked: blocked, block: block} + end + + test "it unfollows and blocks", %{user: user, blocked: blocked, block: block} do + assert User.following?(user, blocked) + assert User.following?(blocked, user) + + {:ok, _, _} = SideEffects.handle(block) + + refute User.following?(user, blocked) + refute User.following?(blocked, user) + assert User.blocks?(user, blocked) + end + + test "it blocks but does not unfollow if the relevant setting is set", %{ + user: user, + blocked: blocked, + block: block + } do + clear_config([:activitypub, :unfollow_blocked], false) + assert User.following?(user, blocked) + assert User.following?(blocked, user) + + {:ok, _, _} = SideEffects.handle(block) + + refute User.following?(user, blocked) + assert User.following?(blocked, user) + assert User.blocks?(user, blocked) + end + end + + describe "update users" do + setup do + user = insert(:user) + {:ok, update_data, []} = Builder.update(user, %{"id" => user.ap_id, "name" => "new name!"}) + {:ok, update, _meta} = ActivityPub.persist(update_data, local: true) + + %{user: user, update_data: update_data, update: update} + end + + test "it updates the user", %{user: user, update: update} do + {:ok, _, _} = SideEffects.handle(update) + user = User.get_by_id(user.id) + assert user.name == "new name!" + end + + test "it uses a given changeset to update", %{user: user, update: update} do + changeset = Ecto.Changeset.change(user, %{default_scope: "direct"}) + + assert user.default_scope == "public" + {:ok, _, _} = SideEffects.handle(update, user_update_changeset: changeset) + user = User.get_by_id(user.id) + assert user.default_scope == "direct" + end + end + describe "delete objects" do setup do user = insert(:user) @@ -173,8 +283,7 @@ test "when activation is required", %{delete: delete, user: user} do {:ok, like} = CommonAPI.favorite(user, post.id) {:ok, reaction} = CommonAPI.react_with_emoji(post.id, user, "👍") {:ok, announce} = CommonAPI.repeat(post.id, user) - {:ok, block} = ActivityPub.block(user, poster) - User.block(user, poster) + {:ok, block} = CommonAPI.block(user, poster) {:ok, undo_data, _meta} = Builder.undo(user, like) {:ok, like_undo, _meta} = ActivityPub.persist(undo_data, local: true) @@ -290,6 +399,147 @@ test "creates a notification", %{like: like, poster: poster} do end end + describe "creation of ChatMessages" do + test "notifies the recipient" do + author = insert(:user, local: false) + recipient = insert(:user, local: true) + + {:ok, chat_message_data, _meta} = Builder.chat_message(author, recipient.ap_id, "hey") + + {:ok, create_activity_data, _meta} = + Builder.create(author, chat_message_data["id"], [recipient.ap_id]) + + {:ok, create_activity, _meta} = ActivityPub.persist(create_activity_data, local: false) + + {:ok, _create_activity, _meta} = + SideEffects.handle(create_activity, local: false, object_data: chat_message_data) + + assert Repo.get_by(Notification, user_id: recipient.id, activity_id: create_activity.id) + end + + test "it streams the created ChatMessage" do + author = insert(:user, local: true) + recipient = insert(:user, local: true) + + {:ok, chat_message_data, _meta} = Builder.chat_message(author, recipient.ap_id, "hey") + + {:ok, create_activity_data, _meta} = + Builder.create(author, chat_message_data["id"], [recipient.ap_id]) + + {:ok, create_activity, _meta} = ActivityPub.persist(create_activity_data, local: false) + + {:ok, _create_activity, meta} = + SideEffects.handle(create_activity, local: false, object_data: chat_message_data) + + assert [_, _] = meta[:streamables] + end + + test "it creates a Chat and MessageReferences for the local users and bumps the unread count, except for the author" do + author = insert(:user, local: true) + recipient = insert(:user, local: true) + + {:ok, chat_message_data, _meta} = Builder.chat_message(author, recipient.ap_id, "hey") + + {:ok, create_activity_data, _meta} = + Builder.create(author, chat_message_data["id"], [recipient.ap_id]) + + {:ok, create_activity, _meta} = ActivityPub.persist(create_activity_data, local: false) + + with_mocks([ + { + Pleroma.Web.Streamer, + [], + [ + stream: fn _, _ -> nil end + ] + }, + { + Pleroma.Web.Push, + [], + [ + send: fn _ -> nil end + ] + } + ]) do + {:ok, _create_activity, meta} = + SideEffects.handle(create_activity, local: false, object_data: chat_message_data) + + # The notification gets created + assert [notification] = meta[:notifications] + assert notification.activity_id == create_activity.id + + # But it is not sent out + refute called(Pleroma.Web.Streamer.stream(["user", "user:notification"], notification)) + refute called(Pleroma.Web.Push.send(notification)) + + # Same for the user chat stream + assert [{topics, _}, _] = meta[:streamables] + assert topics == ["user", "user:pleroma_chat"] + refute called(Pleroma.Web.Streamer.stream(["user", "user:pleroma_chat"], :_)) + + chat = Chat.get(author.id, recipient.ap_id) + + [cm_ref] = MessageReference.for_chat_query(chat) |> Repo.all() + + assert cm_ref.object.data["content"] == "hey" + assert cm_ref.unread == false + + chat = Chat.get(recipient.id, author.ap_id) + + [cm_ref] = MessageReference.for_chat_query(chat) |> Repo.all() + + assert cm_ref.object.data["content"] == "hey" + assert cm_ref.unread == true + end + end + + test "it creates a Chat for the local users and bumps the unread count" do + author = insert(:user, local: false) + recipient = insert(:user, local: true) + + {:ok, chat_message_data, _meta} = Builder.chat_message(author, recipient.ap_id, "hey") + + {:ok, create_activity_data, _meta} = + Builder.create(author, chat_message_data["id"], [recipient.ap_id]) + + {:ok, create_activity, _meta} = ActivityPub.persist(create_activity_data, local: false) + + {:ok, _create_activity, _meta} = + SideEffects.handle(create_activity, local: false, object_data: chat_message_data) + + # An object is created + assert Object.get_by_ap_id(chat_message_data["id"]) + + # The remote user won't get a chat + chat = Chat.get(author.id, recipient.ap_id) + refute chat + + # The local user will get a chat + chat = Chat.get(recipient.id, author.ap_id) + assert chat + + author = insert(:user, local: true) + recipient = insert(:user, local: true) + + {:ok, chat_message_data, _meta} = Builder.chat_message(author, recipient.ap_id, "hey") + + {:ok, create_activity_data, _meta} = + Builder.create(author, chat_message_data["id"], [recipient.ap_id]) + + {:ok, create_activity, _meta} = ActivityPub.persist(create_activity_data, local: false) + + {:ok, _create_activity, _meta} = + SideEffects.handle(create_activity, local: false, object_data: chat_message_data) + + # Both users are local and get the chat + chat = Chat.get(author.id, recipient.ap_id) + assert chat + + chat = Chat.get(recipient.id, author.ap_id) + assert chat + end + end + describe "announce objects" do setup do poster = insert(:user) diff --git a/test/web/activity_pub/transmogrifier/block_handling_test.exs b/test/web/activity_pub/transmogrifier/block_handling_test.exs new file mode 100644 index 000000000..71f1a0ed5 --- /dev/null +++ b/test/web/activity_pub/transmogrifier/block_handling_test.exs @@ -0,0 +1,63 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ActivityPub.Transmogrifier.BlockHandlingTest do + use Pleroma.DataCase + + alias Pleroma.Activity + alias Pleroma.User + alias Pleroma.Web.ActivityPub.Transmogrifier + + import Pleroma.Factory + + test "it works for incoming blocks" do + user = insert(:user) + + data = + File.read!("test/fixtures/mastodon-block-activity.json") + |> Poison.decode!() + |> Map.put("object", user.ap_id) + + blocker = insert(:user, ap_id: data["actor"]) + + {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) + + assert data["type"] == "Block" + assert data["object"] == user.ap_id + assert data["actor"] == "http://mastodon.example.org/users/admin" + + assert User.blocks?(blocker, user) + end + + test "incoming blocks successfully tear down any follow relationship" do + blocker = insert(:user) + blocked = insert(:user) + + data = + File.read!("test/fixtures/mastodon-block-activity.json") + |> Poison.decode!() + |> Map.put("object", blocked.ap_id) + |> Map.put("actor", blocker.ap_id) + + {:ok, blocker} = User.follow(blocker, blocked) + {:ok, blocked} = User.follow(blocked, blocker) + + assert User.following?(blocker, blocked) + assert User.following?(blocked, blocker) + + {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) + + assert data["type"] == "Block" + assert data["object"] == blocked.ap_id + assert data["actor"] == blocker.ap_id + + blocker = User.get_cached_by_ap_id(data["actor"]) + blocked = User.get_cached_by_ap_id(data["object"]) + + assert User.blocks?(blocker, blocked) + + refute User.following?(blocker, blocked) + refute User.following?(blocked, blocker) + end +end diff --git a/test/web/activity_pub/transmogrifier/chat_message_test.exs b/test/web/activity_pub/transmogrifier/chat_message_test.exs new file mode 100644 index 000000000..d6736dc3e --- /dev/null +++ b/test/web/activity_pub/transmogrifier/chat_message_test.exs @@ -0,0 +1,153 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ActivityPub.Transmogrifier.ChatMessageTest do + use Pleroma.DataCase + + import Pleroma.Factory + + alias Pleroma.Activity + alias Pleroma.Chat + alias Pleroma.Object + alias Pleroma.Web.ActivityPub.Transmogrifier + + describe "handle_incoming" do + test "handles chonks with attachment" do + data = %{ + "@context" => "https://www.w3.org/ns/activitystreams", + "actor" => "https://honk.tedunangst.com/u/tedu", + "id" => "https://honk.tedunangst.com/u/tedu/honk/x6gt8X8PcyGkQcXxzg1T", + "object" => %{ + "attachment" => [ + %{ + "mediaType" => "image/jpeg", + "name" => "298p3RG7j27tfsZ9RQ.jpg", + "summary" => "298p3RG7j27tfsZ9RQ.jpg", + "type" => "Document", + "url" => "https://honk.tedunangst.com/d/298p3RG7j27tfsZ9RQ.jpg" + } + ], + "attributedTo" => "https://honk.tedunangst.com/u/tedu", + "content" => "", + "id" => "https://honk.tedunangst.com/u/tedu/chonk/26L4wl5yCbn4dr4y1b", + "published" => "2020-05-18T01:13:03Z", + "to" => [ + "https://dontbulling.me/users/lain" + ], + "type" => "ChatMessage" + }, + "published" => "2020-05-18T01:13:03Z", + "to" => [ + "https://dontbulling.me/users/lain" + ], + "type" => "Create" + } + + _user = insert(:user, ap_id: data["actor"]) + _user = insert(:user, ap_id: hd(data["to"])) + + assert {:ok, _activity} = Transmogrifier.handle_incoming(data) + end + + test "it rejects messages that don't contain content" do + data = + File.read!("test/fixtures/create-chat-message.json") + |> Poison.decode!() + + object = + data["object"] + |> Map.delete("content") + + data = + data + |> Map.put("object", object) + + _author = + insert(:user, ap_id: data["actor"], local: false, last_refreshed_at: DateTime.utc_now()) + + _recipient = + insert(:user, + ap_id: List.first(data["to"]), + local: true, + last_refreshed_at: DateTime.utc_now() + ) + + {:error, _} = Transmogrifier.handle_incoming(data) + end + + test "it rejects messages that don't concern local users" do + data = + File.read!("test/fixtures/create-chat-message.json") + |> Poison.decode!() + + _author = + insert(:user, ap_id: data["actor"], local: false, last_refreshed_at: DateTime.utc_now()) + + _recipient = + insert(:user, + ap_id: List.first(data["to"]), + local: false, + last_refreshed_at: DateTime.utc_now() + ) + + {:error, _} = Transmogrifier.handle_incoming(data) + end + + test "it rejects messages where the `to` field of activity and object don't match" do + data = + File.read!("test/fixtures/create-chat-message.json") + |> Poison.decode!() + + author = insert(:user, ap_id: data["actor"]) + _recipient = insert(:user, ap_id: List.first(data["to"])) + + data = + data + |> Map.put("to", author.ap_id) + + assert match?({:error, _}, Transmogrifier.handle_incoming(data)) + refute Object.get_by_ap_id(data["object"]["id"]) + end + + test "it fetches the actor if they aren't in our system" do + Tesla.Mock.mock(fn env -> apply(HttpRequestMock, :request, [env]) end) + + data = + File.read!("test/fixtures/create-chat-message.json") + |> Poison.decode!() + |> Map.put("actor", "http://mastodon.example.org/users/admin") + |> put_in(["object", "actor"], "http://mastodon.example.org/users/admin") + + _recipient = insert(:user, ap_id: List.first(data["to"]), local: true) + + {:ok, %Activity{} = _activity} = Transmogrifier.handle_incoming(data) + end + + test "it inserts it and creates a chat" do + data = + File.read!("test/fixtures/create-chat-message.json") + |> Poison.decode!() + + author = + insert(:user, ap_id: data["actor"], local: false, last_refreshed_at: DateTime.utc_now()) + + recipient = insert(:user, ap_id: List.first(data["to"]), local: true) + + {:ok, %Activity{} = activity} = Transmogrifier.handle_incoming(data) + assert activity.local == false + + assert activity.actor == author.ap_id + assert activity.recipients == [recipient.ap_id, author.ap_id] + + %Object{} = object = Object.get_by_ap_id(activity.data["object"]) + + assert object + assert object.data["content"] == "You expected a cute girl? Too bad. alert('XSS')" + assert match?(%{"firefox" => _}, object.data["emoji"]) + + refute Chat.get(author.id, recipient.ap_id) + assert Chat.get(recipient.id, author.ap_id) + end + end +end diff --git a/test/web/activity_pub/transmogrifier/follow_handling_test.exs b/test/web/activity_pub/transmogrifier/follow_handling_test.exs index 967389fae..06c39eed6 100644 --- a/test/web/activity_pub/transmogrifier/follow_handling_test.exs +++ b/test/web/activity_pub/transmogrifier/follow_handling_test.exs @@ -5,6 +5,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier.FollowHandlingTest do use Pleroma.DataCase alias Pleroma.Activity + alias Pleroma.Notification alias Pleroma.Repo alias Pleroma.User alias Pleroma.Web.ActivityPub.Transmogrifier @@ -12,6 +13,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier.FollowHandlingTest do import Pleroma.Factory import Ecto.Query + import Mock setup_all do Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end) @@ -57,9 +59,12 @@ test "it works for incoming follow requests" do activity = Repo.get(Activity, activity.id) assert activity.data["state"] == "accept" assert User.following?(User.get_cached_by_ap_id(data["actor"]), user) + + [notification] = Notification.for_user(user) + assert notification.type == "follow" end - test "with locked accounts, it does not create a follow or an accept" do + test "with locked accounts, it does create a Follow, but not an Accept" do user = insert(:user, locked: true) data = @@ -81,6 +86,9 @@ test "with locked accounts, it does not create a follow or an accept" do |> Repo.all() assert Enum.empty?(accepts) + + [notification] = Notification.for_user(user) + assert notification.type == "follow_request" end test "it works for follow requests when you are already followed, creating a new accept activity" do @@ -144,6 +152,23 @@ test "it rejects incoming follow requests from blocked users when deny_follow_bl assert activity.data["state"] == "reject" end + test "it rejects incoming follow requests if the following errors for some reason" do + user = insert(:user) + + data = + File.read!("test/fixtures/mastodon-follow-activity.json") + |> Poison.decode!() + |> Map.put("object", user.ap_id) + + with_mock Pleroma.User, [:passthrough], follow: fn _, _ -> {:error, :testing} end do + {:ok, %Activity{data: %{"id" => id}}} = Transmogrifier.handle_incoming(data) + + %Activity{} = activity = Activity.get_by_ap_id(id) + + assert activity.data["state"] == "reject" + end + end + test "it works for incoming follow requests from hubzilla" do user = insert(:user) diff --git a/test/web/activity_pub/transmogrifier/user_update_handling_test.exs b/test/web/activity_pub/transmogrifier/user_update_handling_test.exs new file mode 100644 index 000000000..64636656c --- /dev/null +++ b/test/web/activity_pub/transmogrifier/user_update_handling_test.exs @@ -0,0 +1,159 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ActivityPub.Transmogrifier.UserUpdateHandlingTest do + use Pleroma.DataCase + + alias Pleroma.Activity + alias Pleroma.User + alias Pleroma.Web.ActivityPub.Transmogrifier + + import Pleroma.Factory + + test "it works for incoming update activities" do + user = insert(:user, local: false) + + update_data = File.read!("test/fixtures/mastodon-update.json") |> Poison.decode!() + + object = + update_data["object"] + |> Map.put("actor", user.ap_id) + |> Map.put("id", user.ap_id) + + update_data = + update_data + |> Map.put("actor", user.ap_id) + |> Map.put("object", object) + + {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(update_data) + + assert data["id"] == update_data["id"] + + user = User.get_cached_by_ap_id(data["actor"]) + assert user.name == "gargle" + + assert user.avatar["url"] == [ + %{ + "href" => + "https://cd.niu.moe/accounts/avatars/000/033/323/original/fd7f8ae0b3ffedc9.jpeg" + } + ] + + assert user.banner["url"] == [ + %{ + "href" => + "https://cd.niu.moe/accounts/headers/000/033/323/original/850b3448fa5fd477.png" + } + ] + + assert user.bio == "

    Some bio

    " + end + + test "it works with alsoKnownAs" do + %{ap_id: actor} = insert(:user, local: false) + + assert User.get_cached_by_ap_id(actor).also_known_as == [] + + {:ok, _activity} = + "test/fixtures/mastodon-update.json" + |> File.read!() + |> Poison.decode!() + |> Map.put("actor", actor) + |> Map.update!("object", fn object -> + object + |> Map.put("actor", actor) + |> Map.put("id", actor) + |> Map.put("alsoKnownAs", [ + "http://mastodon.example.org/users/foo", + "http://example.org/users/bar" + ]) + end) + |> Transmogrifier.handle_incoming() + + assert User.get_cached_by_ap_id(actor).also_known_as == [ + "http://mastodon.example.org/users/foo", + "http://example.org/users/bar" + ] + end + + test "it works with custom profile fields" do + user = insert(:user, local: false) + + assert user.fields == [] + + update_data = File.read!("test/fixtures/mastodon-update.json") |> Poison.decode!() + + object = + update_data["object"] + |> Map.put("actor", user.ap_id) + |> Map.put("id", user.ap_id) + + update_data = + update_data + |> Map.put("actor", user.ap_id) + |> Map.put("object", object) + + {:ok, _update_activity} = Transmogrifier.handle_incoming(update_data) + + user = User.get_cached_by_ap_id(user.ap_id) + + assert user.fields == [ + %{"name" => "foo", "value" => "updated"}, + %{"name" => "foo1", "value" => "updated"} + ] + + Pleroma.Config.put([:instance, :max_remote_account_fields], 2) + + update_data = + update_data + |> put_in(["object", "attachment"], [ + %{"name" => "foo", "type" => "PropertyValue", "value" => "bar"}, + %{"name" => "foo11", "type" => "PropertyValue", "value" => "bar11"}, + %{"name" => "foo22", "type" => "PropertyValue", "value" => "bar22"} + ]) + |> Map.put("id", update_data["id"] <> ".") + + {:ok, _} = Transmogrifier.handle_incoming(update_data) + + user = User.get_cached_by_ap_id(user.ap_id) + + assert user.fields == [ + %{"name" => "foo", "value" => "updated"}, + %{"name" => "foo1", "value" => "updated"} + ] + + update_data = + update_data + |> put_in(["object", "attachment"], []) + |> Map.put("id", update_data["id"] <> ".") + + {:ok, _} = Transmogrifier.handle_incoming(update_data) + + user = User.get_cached_by_ap_id(user.ap_id) + + assert user.fields == [] + end + + test "it works for incoming update activities which lock the account" do + user = insert(:user, local: false) + + update_data = File.read!("test/fixtures/mastodon-update.json") |> Poison.decode!() + + object = + update_data["object"] + |> Map.put("actor", user.ap_id) + |> Map.put("id", user.ap_id) + |> Map.put("manuallyApprovesFollowers", true) + + update_data = + update_data + |> Map.put("actor", user.ap_id) + |> Map.put("object", object) + + {:ok, %Activity{local: false}} = Transmogrifier.handle_incoming(update_data) + + user = User.get_cached_by_ap_id(user.ap_id) + assert user.locked == true + end +end diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index 94d8552e8..6a53fd3f0 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -401,162 +401,6 @@ test "it strips internal reactions" do refute Map.has_key?(object_data, "reaction_count") end - test "it works for incoming update activities" do - data = File.read!("test/fixtures/mastodon-post-activity.json") |> Poison.decode!() - - {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) - update_data = File.read!("test/fixtures/mastodon-update.json") |> Poison.decode!() - - object = - update_data["object"] - |> Map.put("actor", data["actor"]) - |> Map.put("id", data["actor"]) - - update_data = - update_data - |> Map.put("actor", data["actor"]) - |> Map.put("object", object) - - {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(update_data) - - assert data["id"] == update_data["id"] - - user = User.get_cached_by_ap_id(data["actor"]) - assert user.name == "gargle" - - assert user.avatar["url"] == [ - %{ - "href" => - "https://cd.niu.moe/accounts/avatars/000/033/323/original/fd7f8ae0b3ffedc9.jpeg" - } - ] - - assert user.banner["url"] == [ - %{ - "href" => - "https://cd.niu.moe/accounts/headers/000/033/323/original/850b3448fa5fd477.png" - } - ] - - assert user.bio == "

    Some bio

    " - end - - test "it works with alsoKnownAs" do - {:ok, %Activity{data: %{"actor" => actor}}} = - "test/fixtures/mastodon-post-activity.json" - |> File.read!() - |> Poison.decode!() - |> Transmogrifier.handle_incoming() - - assert User.get_cached_by_ap_id(actor).also_known_as == ["http://example.org/users/foo"] - - {:ok, _activity} = - "test/fixtures/mastodon-update.json" - |> File.read!() - |> Poison.decode!() - |> Map.put("actor", actor) - |> Map.update!("object", fn object -> - object - |> Map.put("actor", actor) - |> Map.put("id", actor) - |> Map.put("alsoKnownAs", [ - "http://mastodon.example.org/users/foo", - "http://example.org/users/bar" - ]) - end) - |> Transmogrifier.handle_incoming() - - assert User.get_cached_by_ap_id(actor).also_known_as == [ - "http://mastodon.example.org/users/foo", - "http://example.org/users/bar" - ] - end - - test "it works with custom profile fields" do - {:ok, activity} = - "test/fixtures/mastodon-post-activity.json" - |> File.read!() - |> Poison.decode!() - |> Transmogrifier.handle_incoming() - - user = User.get_cached_by_ap_id(activity.actor) - - assert user.fields == [ - %{"name" => "foo", "value" => "bar"}, - %{"name" => "foo1", "value" => "bar1"} - ] - - update_data = File.read!("test/fixtures/mastodon-update.json") |> Poison.decode!() - - object = - update_data["object"] - |> Map.put("actor", user.ap_id) - |> Map.put("id", user.ap_id) - - update_data = - update_data - |> Map.put("actor", user.ap_id) - |> Map.put("object", object) - - {:ok, _update_activity} = Transmogrifier.handle_incoming(update_data) - - user = User.get_cached_by_ap_id(user.ap_id) - - assert user.fields == [ - %{"name" => "foo", "value" => "updated"}, - %{"name" => "foo1", "value" => "updated"} - ] - - Pleroma.Config.put([:instance, :max_remote_account_fields], 2) - - update_data = - put_in(update_data, ["object", "attachment"], [ - %{"name" => "foo", "type" => "PropertyValue", "value" => "bar"}, - %{"name" => "foo11", "type" => "PropertyValue", "value" => "bar11"}, - %{"name" => "foo22", "type" => "PropertyValue", "value" => "bar22"} - ]) - - {:ok, _} = Transmogrifier.handle_incoming(update_data) - - user = User.get_cached_by_ap_id(user.ap_id) - - assert user.fields == [ - %{"name" => "foo", "value" => "updated"}, - %{"name" => "foo1", "value" => "updated"} - ] - - update_data = put_in(update_data, ["object", "attachment"], []) - - {:ok, _} = Transmogrifier.handle_incoming(update_data) - - user = User.get_cached_by_ap_id(user.ap_id) - - assert user.fields == [] - end - - test "it works for incoming update activities which lock the account" do - data = File.read!("test/fixtures/mastodon-post-activity.json") |> Poison.decode!() - - {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) - update_data = File.read!("test/fixtures/mastodon-update.json") |> Poison.decode!() - - object = - update_data["object"] - |> Map.put("actor", data["actor"]) - |> Map.put("id", data["actor"]) - |> Map.put("manuallyApprovesFollowers", true) - - update_data = - update_data - |> Map.put("actor", data["actor"]) - |> Map.put("object", object) - - {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(update_data) - - user = User.get_cached_by_ap_id(data["actor"]) - assert user.locked == true - end - test "it works for incomming unfollows with an existing follow" do user = insert(:user) @@ -601,56 +445,6 @@ test "it works for incoming follows to locked account" do assert [^pending_follower] = User.get_follow_requests(user) end - test "it works for incoming blocks" do - user = insert(:user) - - data = - File.read!("test/fixtures/mastodon-block-activity.json") - |> Poison.decode!() - |> Map.put("object", user.ap_id) - - {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) - - assert data["type"] == "Block" - assert data["object"] == user.ap_id - assert data["actor"] == "http://mastodon.example.org/users/admin" - - blocker = User.get_cached_by_ap_id(data["actor"]) - - assert User.blocks?(blocker, user) - end - - test "incoming blocks successfully tear down any follow relationship" do - blocker = insert(:user) - blocked = insert(:user) - - data = - File.read!("test/fixtures/mastodon-block-activity.json") - |> Poison.decode!() - |> Map.put("object", blocked.ap_id) - |> Map.put("actor", blocker.ap_id) - - {:ok, blocker} = User.follow(blocker, blocked) - {:ok, blocked} = User.follow(blocked, blocker) - - assert User.following?(blocker, blocked) - assert User.following?(blocked, blocker) - - {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) - - assert data["type"] == "Block" - assert data["object"] == blocked.ap_id - assert data["actor"] == blocker.ap_id - - blocker = User.get_cached_by_ap_id(data["actor"]) - blocked = User.get_cached_by_ap_id(data["object"]) - - assert User.blocks?(blocker, blocked) - - refute User.following?(blocker, blocked) - refute User.following?(blocked, blocker) - end - test "it works for incoming accepts which were pre-accepted" do follower = insert(:user) followed = insert(:user) @@ -1571,9 +1365,6 @@ test "returns modified object when allowed incoming reply", %{data: data} do assert modified_object["inReplyToAtomUri"] == "https://shitposter.club/notice/2827873" - assert modified_object["conversation"] == - "tag:shitposter.club,2017-05-05:objectType=thread:nonce=3c16e9c2681f6d26" - assert modified_object["context"] == "tag:shitposter.club,2017-05-05:objectType=thread:nonce=3c16e9c2681f6d26" end diff --git a/test/web/activity_pub/utils_test.exs b/test/web/activity_pub/utils_test.exs index 15f03f193..2f9ecb5a3 100644 --- a/test/web/activity_pub/utils_test.exs +++ b/test/web/activity_pub/utils_test.exs @@ -27,16 +27,6 @@ test "fetches the latest Follow activity" do end end - describe "fetch the latest Block" do - test "fetches the latest Block activity" do - blocker = insert(:user) - blocked = insert(:user) - {:ok, activity} = ActivityPub.block(blocker, blocked) - - assert activity == Utils.fetch_latest_block(blocker, blocked) - end - end - describe "determine_explicit_mentions()" do test "works with an object that has mentions" do object = %{ @@ -344,9 +334,9 @@ test "fetches last block activities" do user1 = insert(:user) user2 = insert(:user) - assert {:ok, %Activity{} = _} = ActivityPub.block(user1, user2) - assert {:ok, %Activity{} = _} = ActivityPub.block(user1, user2) - assert {:ok, %Activity{} = activity} = ActivityPub.block(user1, user2) + assert {:ok, %Activity{} = _} = CommonAPI.block(user1, user2) + assert {:ok, %Activity{} = _} = CommonAPI.block(user1, user2) + assert {:ok, %Activity{} = activity} = CommonAPI.block(user1, user2) assert Utils.fetch_latest_block(user1, user2) == activity end diff --git a/test/web/activity_pub/views/user_view_test.exs b/test/web/activity_pub/views/user_view_test.exs index 20b0f223c..bec15a996 100644 --- a/test/web/activity_pub/views/user_view_test.exs +++ b/test/web/activity_pub/views/user_view_test.exs @@ -158,35 +158,4 @@ test "sets correct totalItems when follows are hidden but the follow counter is assert %{"totalItems" => 1} = UserView.render("following.json", %{user: user}) end end - - test "activity collection page aginates correctly" do - user = insert(:user) - - posts = - for i <- 0..25 do - {:ok, activity} = CommonAPI.post(user, %{status: "post #{i}"}) - activity - end - - # outbox sorts chronologically, newest first, with ten per page - posts = Enum.reverse(posts) - - %{"next" => next_url} = - UserView.render("activity_collection_page.json", %{ - iri: "#{user.ap_id}/outbox", - activities: Enum.take(posts, 10) - }) - - next_id = Enum.at(posts, 9).id - assert next_url =~ next_id - - %{"next" => next_url} = - UserView.render("activity_collection_page.json", %{ - iri: "#{user.ap_id}/outbox", - activities: Enum.take(Enum.drop(posts, 10), 10) - }) - - next_id = Enum.at(posts, 19).id - assert next_url =~ next_id - end end diff --git a/test/web/admin_api/controllers/admin_api_controller_test.exs b/test/web/admin_api/controllers/admin_api_controller_test.exs index ead840186..48fb108ec 100644 --- a/test/web/admin_api/controllers/admin_api_controller_test.exs +++ b/test/web/admin_api/controllers/admin_api_controller_test.exs @@ -12,15 +12,12 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do alias Pleroma.Activity alias Pleroma.Config - alias Pleroma.ConfigDB alias Pleroma.HTML alias Pleroma.MFA alias Pleroma.ModerationLog alias Pleroma.Repo - alias Pleroma.ReportNote alias Pleroma.Tests.ObanHelpers alias Pleroma.User - alias Pleroma.UserInviteToken alias Pleroma.Web alias Pleroma.Web.ActivityPub.Relay alias Pleroma.Web.CommonAPI @@ -340,7 +337,8 @@ test "Show", %{conn: conn} do "tags" => [], "avatar" => User.avatar_url(user) |> MediaProxy.url(), "display_name" => HTML.strip_tags(user.name || user.nickname), - "confirmation_pending" => false + "confirmation_pending" => false, + "url" => user.ap_id } assert expected == json_response(conn, 200) @@ -588,122 +586,6 @@ test "/:right DELETE, can remove from a permission group (multiple)", %{ end end - describe "POST /api/pleroma/admin/email_invite, with valid config" do - setup do: clear_config([:instance, :registrations_open], false) - setup do: clear_config([:instance, :invites_enabled], true) - - test "sends invitation and returns 204", %{admin: admin, conn: conn} do - recipient_email = "foo@bar.com" - recipient_name = "J. D." - - conn = - post( - conn, - "/api/pleroma/admin/users/email_invite?email=#{recipient_email}&name=#{recipient_name}" - ) - - assert json_response(conn, :no_content) - - token_record = List.last(Repo.all(Pleroma.UserInviteToken)) - assert token_record - refute token_record.used - - notify_email = Config.get([:instance, :notify_email]) - instance_name = Config.get([:instance, :name]) - - email = - Pleroma.Emails.UserEmail.user_invitation_email( - admin, - token_record, - recipient_email, - recipient_name - ) - - Swoosh.TestAssertions.assert_email_sent( - from: {instance_name, notify_email}, - to: {recipient_name, recipient_email}, - html_body: email.html_body - ) - end - - test "it returns 403 if requested by a non-admin" do - non_admin_user = insert(:user) - token = insert(:oauth_token, user: non_admin_user) - - conn = - build_conn() - |> assign(:user, non_admin_user) - |> assign(:token, token) - |> post("/api/pleroma/admin/users/email_invite?email=foo@bar.com&name=JD") - - assert json_response(conn, :forbidden) - end - - test "email with +", %{conn: conn, admin: admin} do - recipient_email = "foo+bar@baz.com" - - conn - |> put_req_header("content-type", "application/json;charset=utf-8") - |> post("/api/pleroma/admin/users/email_invite", %{email: recipient_email}) - |> json_response(:no_content) - - token_record = - Pleroma.UserInviteToken - |> Repo.all() - |> List.last() - - assert token_record - refute token_record.used - - notify_email = Config.get([:instance, :notify_email]) - instance_name = Config.get([:instance, :name]) - - email = - Pleroma.Emails.UserEmail.user_invitation_email( - admin, - token_record, - recipient_email - ) - - Swoosh.TestAssertions.assert_email_sent( - from: {instance_name, notify_email}, - to: recipient_email, - html_body: email.html_body - ) - end - end - - describe "POST /api/pleroma/admin/users/email_invite, with invalid config" do - setup do: clear_config([:instance, :registrations_open]) - setup do: clear_config([:instance, :invites_enabled]) - - test "it returns 500 if `invites_enabled` is not enabled", %{conn: conn} do - Config.put([:instance, :registrations_open], false) - Config.put([:instance, :invites_enabled], false) - - conn = post(conn, "/api/pleroma/admin/users/email_invite?email=foo@bar.com&name=JD") - - assert json_response(conn, :bad_request) == - %{ - "error" => - "To send invites you need to set the `invites_enabled` option to true." - } - end - - test "it returns 500 if `registrations_open` is enabled", %{conn: conn} do - Config.put([:instance, :registrations_open], true) - Config.put([:instance, :invites_enabled], true) - - conn = post(conn, "/api/pleroma/admin/users/email_invite?email=foo@bar.com&name=JD") - - assert json_response(conn, :bad_request) == - %{ - "error" => - "To send invites you need to set the `registrations_open` option to false." - } - end - end - test "/api/pleroma/admin/users/:nickname/password_reset", %{conn: conn} do user = insert(:user) @@ -733,7 +615,8 @@ test "renders users array for the first page", %{conn: conn, admin: admin} do "tags" => [], "avatar" => User.avatar_url(admin) |> MediaProxy.url(), "display_name" => HTML.strip_tags(admin.name || admin.nickname), - "confirmation_pending" => false + "confirmation_pending" => false, + "url" => admin.ap_id }, %{ "deactivated" => user.deactivated, @@ -744,7 +627,8 @@ test "renders users array for the first page", %{conn: conn, admin: admin} do "tags" => ["foo", "bar"], "avatar" => User.avatar_url(user) |> MediaProxy.url(), "display_name" => HTML.strip_tags(user.name || user.nickname), - "confirmation_pending" => false + "confirmation_pending" => false, + "url" => user.ap_id } ] |> Enum.sort_by(& &1["nickname"]) @@ -757,8 +641,8 @@ test "renders users array for the first page", %{conn: conn, admin: admin} do end test "pagination works correctly with service users", %{conn: conn} do - service1 = insert(:user, ap_id: Web.base_url() <> "/relay") - service2 = insert(:user, ap_id: Web.base_url() <> "/internal/fetch") + service1 = User.get_or_create_service_actor_by_ap_id(Web.base_url() <> "/meido", "meido") + insert_list(25, :user) assert %{"count" => 26, "page_size" => 10, "users" => users1} = @@ -767,8 +651,7 @@ test "pagination works correctly with service users", %{conn: conn} do |> json_response(200) assert Enum.count(users1) == 10 - assert service1 not in [users1] - assert service2 not in [users1] + assert service1 not in users1 assert %{"count" => 26, "page_size" => 10, "users" => users2} = conn @@ -776,8 +659,7 @@ test "pagination works correctly with service users", %{conn: conn} do |> json_response(200) assert Enum.count(users2) == 10 - assert service1 not in [users2] - assert service2 not in [users2] + assert service1 not in users2 assert %{"count" => 26, "page_size" => 10, "users" => users3} = conn @@ -785,8 +667,7 @@ test "pagination works correctly with service users", %{conn: conn} do |> json_response(200) assert Enum.count(users3) == 6 - assert service1 not in [users3] - assert service2 not in [users3] + assert service1 not in users3 end test "renders empty array for the second page", %{conn: conn} do @@ -819,7 +700,8 @@ test "regular search", %{conn: conn} do "tags" => [], "avatar" => User.avatar_url(user) |> MediaProxy.url(), "display_name" => HTML.strip_tags(user.name || user.nickname), - "confirmation_pending" => false + "confirmation_pending" => false, + "url" => user.ap_id } ] } @@ -844,7 +726,8 @@ test "search by domain", %{conn: conn} do "tags" => [], "avatar" => User.avatar_url(user) |> MediaProxy.url(), "display_name" => HTML.strip_tags(user.name || user.nickname), - "confirmation_pending" => false + "confirmation_pending" => false, + "url" => user.ap_id } ] } @@ -869,7 +752,8 @@ test "search by full nickname", %{conn: conn} do "tags" => [], "avatar" => User.avatar_url(user) |> MediaProxy.url(), "display_name" => HTML.strip_tags(user.name || user.nickname), - "confirmation_pending" => false + "confirmation_pending" => false, + "url" => user.ap_id } ] } @@ -894,7 +778,8 @@ test "search by display name", %{conn: conn} do "tags" => [], "avatar" => User.avatar_url(user) |> MediaProxy.url(), "display_name" => HTML.strip_tags(user.name || user.nickname), - "confirmation_pending" => false + "confirmation_pending" => false, + "url" => user.ap_id } ] } @@ -919,7 +804,8 @@ test "search by email", %{conn: conn} do "tags" => [], "avatar" => User.avatar_url(user) |> MediaProxy.url(), "display_name" => HTML.strip_tags(user.name || user.nickname), - "confirmation_pending" => false + "confirmation_pending" => false, + "url" => user.ap_id } ] } @@ -944,7 +830,8 @@ test "regular search with page size", %{conn: conn} do "tags" => [], "avatar" => User.avatar_url(user) |> MediaProxy.url(), "display_name" => HTML.strip_tags(user.name || user.nickname), - "confirmation_pending" => false + "confirmation_pending" => false, + "url" => user.ap_id } ] } @@ -964,7 +851,8 @@ test "regular search with page size", %{conn: conn} do "tags" => [], "avatar" => User.avatar_url(user2) |> MediaProxy.url(), "display_name" => HTML.strip_tags(user2.name || user2.nickname), - "confirmation_pending" => false + "confirmation_pending" => false, + "url" => user2.ap_id } ] } @@ -996,7 +884,8 @@ test "only local users" do "tags" => [], "avatar" => User.avatar_url(user) |> MediaProxy.url(), "display_name" => HTML.strip_tags(user.name || user.nickname), - "confirmation_pending" => false + "confirmation_pending" => false, + "url" => user.ap_id } ] } @@ -1021,7 +910,8 @@ test "only local users with no query", %{conn: conn, admin: old_admin} do "tags" => [], "avatar" => User.avatar_url(user) |> MediaProxy.url(), "display_name" => HTML.strip_tags(user.name || user.nickname), - "confirmation_pending" => false + "confirmation_pending" => false, + "url" => user.ap_id }, %{ "deactivated" => admin.deactivated, @@ -1032,7 +922,8 @@ test "only local users with no query", %{conn: conn, admin: old_admin} do "tags" => [], "avatar" => User.avatar_url(admin) |> MediaProxy.url(), "display_name" => HTML.strip_tags(admin.name || admin.nickname), - "confirmation_pending" => false + "confirmation_pending" => false, + "url" => admin.ap_id }, %{ "deactivated" => false, @@ -1043,7 +934,8 @@ test "only local users with no query", %{conn: conn, admin: old_admin} do "tags" => [], "avatar" => User.avatar_url(old_admin) |> MediaProxy.url(), "display_name" => HTML.strip_tags(old_admin.name || old_admin.nickname), - "confirmation_pending" => false + "confirmation_pending" => false, + "url" => old_admin.ap_id } ] |> Enum.sort_by(& &1["nickname"]) @@ -1073,7 +965,8 @@ test "load only admins", %{conn: conn, admin: admin} do "tags" => [], "avatar" => User.avatar_url(admin) |> MediaProxy.url(), "display_name" => HTML.strip_tags(admin.name || admin.nickname), - "confirmation_pending" => false + "confirmation_pending" => false, + "url" => admin.ap_id }, %{ "deactivated" => false, @@ -1084,7 +977,8 @@ test "load only admins", %{conn: conn, admin: admin} do "tags" => [], "avatar" => User.avatar_url(second_admin) |> MediaProxy.url(), "display_name" => HTML.strip_tags(second_admin.name || second_admin.nickname), - "confirmation_pending" => false + "confirmation_pending" => false, + "url" => second_admin.ap_id } ] |> Enum.sort_by(& &1["nickname"]) @@ -1116,7 +1010,8 @@ test "load only moderators", %{conn: conn} do "tags" => [], "avatar" => User.avatar_url(moderator) |> MediaProxy.url(), "display_name" => HTML.strip_tags(moderator.name || moderator.nickname), - "confirmation_pending" => false + "confirmation_pending" => false, + "url" => moderator.ap_id } ] } @@ -1141,7 +1036,8 @@ test "load users with tags list", %{conn: conn} do "tags" => ["first"], "avatar" => User.avatar_url(user1) |> MediaProxy.url(), "display_name" => HTML.strip_tags(user1.name || user1.nickname), - "confirmation_pending" => false + "confirmation_pending" => false, + "url" => user1.ap_id }, %{ "deactivated" => false, @@ -1152,7 +1048,8 @@ test "load users with tags list", %{conn: conn} do "tags" => ["second"], "avatar" => User.avatar_url(user2) |> MediaProxy.url(), "display_name" => HTML.strip_tags(user2.name || user2.nickname), - "confirmation_pending" => false + "confirmation_pending" => false, + "url" => user2.ap_id } ] |> Enum.sort_by(& &1["nickname"]) @@ -1191,7 +1088,8 @@ test "it works with multiple filters" do "tags" => [], "avatar" => User.avatar_url(user) |> MediaProxy.url(), "display_name" => HTML.strip_tags(user.name || user.nickname), - "confirmation_pending" => false + "confirmation_pending" => false, + "url" => user.ap_id } ] } @@ -1215,7 +1113,8 @@ test "it omits relay user", %{admin: admin, conn: conn} do "tags" => [], "avatar" => User.avatar_url(admin) |> MediaProxy.url(), "display_name" => HTML.strip_tags(admin.name || admin.nickname), - "confirmation_pending" => false + "confirmation_pending" => false, + "url" => admin.ap_id } ] } @@ -1277,7 +1176,8 @@ test "PATCH /api/pleroma/admin/users/:nickname/toggle_activation", %{admin: admi "tags" => [], "avatar" => User.avatar_url(user) |> MediaProxy.url(), "display_name" => HTML.strip_tags(user.name || user.nickname), - "confirmation_pending" => false + "confirmation_pending" => false, + "url" => user.ap_id } log_entry = Repo.one(ModerationLog) @@ -1318,1561 +1218,6 @@ test "returns 404 if user not found", %{conn: conn} do end end - describe "POST /api/pleroma/admin/users/invite_token" do - test "without options", %{conn: conn} do - conn = post(conn, "/api/pleroma/admin/users/invite_token") - - invite_json = json_response(conn, 200) - invite = UserInviteToken.find_by_token!(invite_json["token"]) - refute invite.used - refute invite.expires_at - refute invite.max_use - assert invite.invite_type == "one_time" - end - - test "with expires_at", %{conn: conn} do - conn = - post(conn, "/api/pleroma/admin/users/invite_token", %{ - "expires_at" => Date.to_string(Date.utc_today()) - }) - - invite_json = json_response(conn, 200) - invite = UserInviteToken.find_by_token!(invite_json["token"]) - - refute invite.used - assert invite.expires_at == Date.utc_today() - refute invite.max_use - assert invite.invite_type == "date_limited" - end - - test "with max_use", %{conn: conn} do - conn = post(conn, "/api/pleroma/admin/users/invite_token", %{"max_use" => 150}) - - invite_json = json_response(conn, 200) - invite = UserInviteToken.find_by_token!(invite_json["token"]) - refute invite.used - refute invite.expires_at - assert invite.max_use == 150 - assert invite.invite_type == "reusable" - end - - test "with max use and expires_at", %{conn: conn} do - conn = - post(conn, "/api/pleroma/admin/users/invite_token", %{ - "max_use" => 150, - "expires_at" => Date.to_string(Date.utc_today()) - }) - - invite_json = json_response(conn, 200) - invite = UserInviteToken.find_by_token!(invite_json["token"]) - refute invite.used - assert invite.expires_at == Date.utc_today() - assert invite.max_use == 150 - assert invite.invite_type == "reusable_date_limited" - end - end - - describe "GET /api/pleroma/admin/users/invites" do - test "no invites", %{conn: conn} do - conn = get(conn, "/api/pleroma/admin/users/invites") - - assert json_response(conn, 200) == %{"invites" => []} - end - - test "with invite", %{conn: conn} do - {:ok, invite} = UserInviteToken.create_invite() - - conn = get(conn, "/api/pleroma/admin/users/invites") - - assert json_response(conn, 200) == %{ - "invites" => [ - %{ - "expires_at" => nil, - "id" => invite.id, - "invite_type" => "one_time", - "max_use" => nil, - "token" => invite.token, - "used" => false, - "uses" => 0 - } - ] - } - end - end - - describe "POST /api/pleroma/admin/users/revoke_invite" do - test "with token", %{conn: conn} do - {:ok, invite} = UserInviteToken.create_invite() - - conn = post(conn, "/api/pleroma/admin/users/revoke_invite", %{"token" => invite.token}) - - assert json_response(conn, 200) == %{ - "expires_at" => nil, - "id" => invite.id, - "invite_type" => "one_time", - "max_use" => nil, - "token" => invite.token, - "used" => true, - "uses" => 0 - } - end - - test "with invalid token", %{conn: conn} do - conn = post(conn, "/api/pleroma/admin/users/revoke_invite", %{"token" => "foo"}) - - assert json_response(conn, :not_found) == %{"error" => "Not found"} - end - end - - describe "GET /api/pleroma/admin/reports/:id" do - test "returns report by its id", %{conn: conn} do - [reporter, target_user] = insert_pair(:user) - activity = insert(:note_activity, user: target_user) - - {:ok, %{id: report_id}} = - CommonAPI.report(reporter, %{ - account_id: target_user.id, - comment: "I feel offended", - status_ids: [activity.id] - }) - - response = - conn - |> get("/api/pleroma/admin/reports/#{report_id}") - |> json_response(:ok) - - assert response["id"] == report_id - end - - test "returns 404 when report id is invalid", %{conn: conn} do - conn = get(conn, "/api/pleroma/admin/reports/test") - - assert json_response(conn, :not_found) == %{"error" => "Not found"} - end - end - - describe "PATCH /api/pleroma/admin/reports" do - setup do - [reporter, target_user] = insert_pair(:user) - activity = insert(:note_activity, user: target_user) - - {:ok, %{id: report_id}} = - CommonAPI.report(reporter, %{ - account_id: target_user.id, - comment: "I feel offended", - status_ids: [activity.id] - }) - - {:ok, %{id: second_report_id}} = - CommonAPI.report(reporter, %{ - account_id: target_user.id, - comment: "I feel very offended", - status_ids: [activity.id] - }) - - %{ - id: report_id, - second_report_id: second_report_id - } - end - - test "requires admin:write:reports scope", %{conn: conn, id: id, admin: admin} do - read_token = insert(:oauth_token, user: admin, scopes: ["admin:read"]) - write_token = insert(:oauth_token, user: admin, scopes: ["admin:write:reports"]) - - response = - conn - |> assign(:token, read_token) - |> patch("/api/pleroma/admin/reports", %{ - "reports" => [%{"state" => "resolved", "id" => id}] - }) - |> json_response(403) - - assert response == %{ - "error" => "Insufficient permissions: admin:write:reports." - } - - conn - |> assign(:token, write_token) - |> patch("/api/pleroma/admin/reports", %{ - "reports" => [%{"state" => "resolved", "id" => id}] - }) - |> json_response(:no_content) - end - - test "mark report as resolved", %{conn: conn, id: id, admin: admin} do - conn - |> patch("/api/pleroma/admin/reports", %{ - "reports" => [ - %{"state" => "resolved", "id" => id} - ] - }) - |> json_response(:no_content) - - activity = Activity.get_by_id(id) - assert activity.data["state"] == "resolved" - - log_entry = Repo.one(ModerationLog) - - assert ModerationLog.get_log_entry_message(log_entry) == - "@#{admin.nickname} updated report ##{id} with 'resolved' state" - end - - test "closes report", %{conn: conn, id: id, admin: admin} do - conn - |> patch("/api/pleroma/admin/reports", %{ - "reports" => [ - %{"state" => "closed", "id" => id} - ] - }) - |> json_response(:no_content) - - activity = Activity.get_by_id(id) - assert activity.data["state"] == "closed" - - log_entry = Repo.one(ModerationLog) - - assert ModerationLog.get_log_entry_message(log_entry) == - "@#{admin.nickname} updated report ##{id} with 'closed' state" - end - - test "returns 400 when state is unknown", %{conn: conn, id: id} do - conn = - conn - |> patch("/api/pleroma/admin/reports", %{ - "reports" => [ - %{"state" => "test", "id" => id} - ] - }) - - assert hd(json_response(conn, :bad_request))["error"] == "Unsupported state" - end - - test "returns 404 when report is not exist", %{conn: conn} do - conn = - conn - |> patch("/api/pleroma/admin/reports", %{ - "reports" => [ - %{"state" => "closed", "id" => "test"} - ] - }) - - assert hd(json_response(conn, :bad_request))["error"] == "not_found" - end - - test "updates state of multiple reports", %{ - conn: conn, - id: id, - admin: admin, - second_report_id: second_report_id - } do - conn - |> patch("/api/pleroma/admin/reports", %{ - "reports" => [ - %{"state" => "resolved", "id" => id}, - %{"state" => "closed", "id" => second_report_id} - ] - }) - |> json_response(:no_content) - - activity = Activity.get_by_id(id) - second_activity = Activity.get_by_id(second_report_id) - assert activity.data["state"] == "resolved" - assert second_activity.data["state"] == "closed" - - [first_log_entry, second_log_entry] = Repo.all(ModerationLog) - - assert ModerationLog.get_log_entry_message(first_log_entry) == - "@#{admin.nickname} updated report ##{id} with 'resolved' state" - - assert ModerationLog.get_log_entry_message(second_log_entry) == - "@#{admin.nickname} updated report ##{second_report_id} with 'closed' state" - end - end - - describe "GET /api/pleroma/admin/reports" do - test "returns empty response when no reports created", %{conn: conn} do - response = - conn - |> get("/api/pleroma/admin/reports") - |> json_response(:ok) - - assert Enum.empty?(response["reports"]) - assert response["total"] == 0 - end - - test "returns reports", %{conn: conn} do - [reporter, target_user] = insert_pair(:user) - activity = insert(:note_activity, user: target_user) - - {:ok, %{id: report_id}} = - CommonAPI.report(reporter, %{ - account_id: target_user.id, - comment: "I feel offended", - status_ids: [activity.id] - }) - - response = - conn - |> get("/api/pleroma/admin/reports") - |> json_response(:ok) - - [report] = response["reports"] - - assert length(response["reports"]) == 1 - assert report["id"] == report_id - - assert response["total"] == 1 - end - - test "returns reports with specified state", %{conn: conn} do - [reporter, target_user] = insert_pair(:user) - activity = insert(:note_activity, user: target_user) - - {:ok, %{id: first_report_id}} = - CommonAPI.report(reporter, %{ - account_id: target_user.id, - comment: "I feel offended", - status_ids: [activity.id] - }) - - {:ok, %{id: second_report_id}} = - CommonAPI.report(reporter, %{ - account_id: target_user.id, - comment: "I don't like this user" - }) - - CommonAPI.update_report_state(second_report_id, "closed") - - response = - conn - |> get("/api/pleroma/admin/reports", %{ - "state" => "open" - }) - |> json_response(:ok) - - [open_report] = response["reports"] - - assert length(response["reports"]) == 1 - assert open_report["id"] == first_report_id - - assert response["total"] == 1 - - response = - conn - |> get("/api/pleroma/admin/reports", %{ - "state" => "closed" - }) - |> json_response(:ok) - - [closed_report] = response["reports"] - - assert length(response["reports"]) == 1 - assert closed_report["id"] == second_report_id - - assert response["total"] == 1 - - response = - conn - |> get("/api/pleroma/admin/reports", %{ - "state" => "resolved" - }) - |> json_response(:ok) - - assert Enum.empty?(response["reports"]) - assert response["total"] == 0 - end - - test "returns 403 when requested by a non-admin" do - user = insert(:user) - token = insert(:oauth_token, user: user) - - conn = - build_conn() - |> assign(:user, user) - |> assign(:token, token) - |> get("/api/pleroma/admin/reports") - - assert json_response(conn, :forbidden) == - %{"error" => "User is not an admin or OAuth admin scope is not granted."} - end - - test "returns 403 when requested by anonymous" do - conn = get(build_conn(), "/api/pleroma/admin/reports") - - assert json_response(conn, :forbidden) == %{"error" => "Invalid credentials."} - end - end - - describe "GET /api/pleroma/admin/config" do - setup do: clear_config(:configurable_from_database, true) - - test "when configuration from database is off", %{conn: conn} do - Config.put(:configurable_from_database, false) - conn = get(conn, "/api/pleroma/admin/config") - - assert json_response(conn, 400) == - %{ - "error" => "To use this endpoint you need to enable configuration from database." - } - end - - test "with settings only in db", %{conn: conn} do - config1 = insert(:config) - config2 = insert(:config) - - conn = get(conn, "/api/pleroma/admin/config", %{"only_db" => true}) - - %{ - "configs" => [ - %{ - "group" => ":pleroma", - "key" => key1, - "value" => _ - }, - %{ - "group" => ":pleroma", - "key" => key2, - "value" => _ - } - ] - } = json_response(conn, 200) - - assert key1 == config1.key - assert key2 == config2.key - end - - test "db is added to settings that are in db", %{conn: conn} do - _config = insert(:config, key: ":instance", value: ConfigDB.to_binary(name: "Some name")) - - %{"configs" => configs} = - conn - |> get("/api/pleroma/admin/config") - |> json_response(200) - - [instance_config] = - Enum.filter(configs, fn %{"group" => group, "key" => key} -> - group == ":pleroma" and key == ":instance" - end) - - assert instance_config["db"] == [":name"] - end - - test "merged default setting with db settings", %{conn: conn} do - config1 = insert(:config) - config2 = insert(:config) - - config3 = - insert(:config, - value: ConfigDB.to_binary(k1: :v1, k2: :v2) - ) - - %{"configs" => configs} = - conn - |> get("/api/pleroma/admin/config") - |> json_response(200) - - assert length(configs) > 3 - - received_configs = - Enum.filter(configs, fn %{"group" => group, "key" => key} -> - group == ":pleroma" and key in [config1.key, config2.key, config3.key] - end) - - assert length(received_configs) == 3 - - db_keys = - config3.value - |> ConfigDB.from_binary() - |> Keyword.keys() - |> ConfigDB.convert() - - Enum.each(received_configs, fn %{"value" => value, "db" => db} -> - assert db in [[config1.key], [config2.key], db_keys] - - assert value in [ - ConfigDB.from_binary_with_convert(config1.value), - ConfigDB.from_binary_with_convert(config2.value), - ConfigDB.from_binary_with_convert(config3.value) - ] - end) - end - - test "subkeys with full update right merge", %{conn: conn} do - config1 = - insert(:config, - key: ":emoji", - value: ConfigDB.to_binary(groups: [a: 1, b: 2], key: [a: 1]) - ) - - config2 = - insert(:config, - key: ":assets", - value: ConfigDB.to_binary(mascots: [a: 1, b: 2], key: [a: 1]) - ) - - %{"configs" => configs} = - conn - |> get("/api/pleroma/admin/config") - |> json_response(200) - - vals = - Enum.filter(configs, fn %{"group" => group, "key" => key} -> - group == ":pleroma" and key in [config1.key, config2.key] - end) - - emoji = Enum.find(vals, fn %{"key" => key} -> key == ":emoji" end) - assets = Enum.find(vals, fn %{"key" => key} -> key == ":assets" end) - - emoji_val = ConfigDB.transform_with_out_binary(emoji["value"]) - assets_val = ConfigDB.transform_with_out_binary(assets["value"]) - - assert emoji_val[:groups] == [a: 1, b: 2] - assert assets_val[:mascots] == [a: 1, b: 2] - end - end - - test "POST /api/pleroma/admin/config error", %{conn: conn} do - conn = post(conn, "/api/pleroma/admin/config", %{"configs" => []}) - - assert json_response(conn, 400) == - %{"error" => "To use this endpoint you need to enable configuration from database."} - end - - describe "POST /api/pleroma/admin/config" do - setup do - http = Application.get_env(:pleroma, :http) - - on_exit(fn -> - Application.delete_env(:pleroma, :key1) - Application.delete_env(:pleroma, :key2) - Application.delete_env(:pleroma, :key3) - Application.delete_env(:pleroma, :key4) - Application.delete_env(:pleroma, :keyaa1) - Application.delete_env(:pleroma, :keyaa2) - Application.delete_env(:pleroma, Pleroma.Web.Endpoint.NotReal) - Application.delete_env(:pleroma, Pleroma.Captcha.NotReal) - Application.put_env(:pleroma, :http, http) - Application.put_env(:tesla, :adapter, Tesla.Mock) - Restarter.Pleroma.refresh() - end) - end - - setup do: clear_config(:configurable_from_database, true) - - @tag capture_log: true - test "create new config setting in db", %{conn: conn} do - ueberauth = Application.get_env(:ueberauth, Ueberauth) - on_exit(fn -> Application.put_env(:ueberauth, Ueberauth, ueberauth) end) - - conn = - post(conn, "/api/pleroma/admin/config", %{ - configs: [ - %{group: ":pleroma", key: ":key1", value: "value1"}, - %{ - group: ":ueberauth", - key: "Ueberauth", - value: [%{"tuple" => [":consumer_secret", "aaaa"]}] - }, - %{ - group: ":pleroma", - key: ":key2", - value: %{ - ":nested_1" => "nested_value1", - ":nested_2" => [ - %{":nested_22" => "nested_value222"}, - %{":nested_33" => %{":nested_44" => "nested_444"}} - ] - } - }, - %{ - group: ":pleroma", - key: ":key3", - value: [ - %{"nested_3" => ":nested_3", "nested_33" => "nested_33"}, - %{"nested_4" => true} - ] - }, - %{ - group: ":pleroma", - key: ":key4", - value: %{":nested_5" => ":upload", "endpoint" => "https://example.com"} - }, - %{ - group: ":idna", - key: ":key5", - value: %{"tuple" => ["string", "Pleroma.Captcha.NotReal", []]} - } - ] - }) - - assert json_response(conn, 200) == %{ - "configs" => [ - %{ - "group" => ":pleroma", - "key" => ":key1", - "value" => "value1", - "db" => [":key1"] - }, - %{ - "group" => ":ueberauth", - "key" => "Ueberauth", - "value" => [%{"tuple" => [":consumer_secret", "aaaa"]}], - "db" => [":consumer_secret"] - }, - %{ - "group" => ":pleroma", - "key" => ":key2", - "value" => %{ - ":nested_1" => "nested_value1", - ":nested_2" => [ - %{":nested_22" => "nested_value222"}, - %{":nested_33" => %{":nested_44" => "nested_444"}} - ] - }, - "db" => [":key2"] - }, - %{ - "group" => ":pleroma", - "key" => ":key3", - "value" => [ - %{"nested_3" => ":nested_3", "nested_33" => "nested_33"}, - %{"nested_4" => true} - ], - "db" => [":key3"] - }, - %{ - "group" => ":pleroma", - "key" => ":key4", - "value" => %{"endpoint" => "https://example.com", ":nested_5" => ":upload"}, - "db" => [":key4"] - }, - %{ - "group" => ":idna", - "key" => ":key5", - "value" => %{"tuple" => ["string", "Pleroma.Captcha.NotReal", []]}, - "db" => [":key5"] - } - ] - } - - assert Application.get_env(:pleroma, :key1) == "value1" - - assert Application.get_env(:pleroma, :key2) == %{ - nested_1: "nested_value1", - nested_2: [ - %{nested_22: "nested_value222"}, - %{nested_33: %{nested_44: "nested_444"}} - ] - } - - assert Application.get_env(:pleroma, :key3) == [ - %{"nested_3" => :nested_3, "nested_33" => "nested_33"}, - %{"nested_4" => true} - ] - - assert Application.get_env(:pleroma, :key4) == %{ - "endpoint" => "https://example.com", - nested_5: :upload - } - - assert Application.get_env(:idna, :key5) == {"string", Pleroma.Captcha.NotReal, []} - end - - test "save configs setting without explicit key", %{conn: conn} do - level = Application.get_env(:quack, :level) - meta = Application.get_env(:quack, :meta) - webhook_url = Application.get_env(:quack, :webhook_url) - - on_exit(fn -> - Application.put_env(:quack, :level, level) - Application.put_env(:quack, :meta, meta) - Application.put_env(:quack, :webhook_url, webhook_url) - end) - - conn = - post(conn, "/api/pleroma/admin/config", %{ - configs: [ - %{ - group: ":quack", - key: ":level", - value: ":info" - }, - %{ - group: ":quack", - key: ":meta", - value: [":none"] - }, - %{ - group: ":quack", - key: ":webhook_url", - value: "https://hooks.slack.com/services/KEY" - } - ] - }) - - assert json_response(conn, 200) == %{ - "configs" => [ - %{ - "group" => ":quack", - "key" => ":level", - "value" => ":info", - "db" => [":level"] - }, - %{ - "group" => ":quack", - "key" => ":meta", - "value" => [":none"], - "db" => [":meta"] - }, - %{ - "group" => ":quack", - "key" => ":webhook_url", - "value" => "https://hooks.slack.com/services/KEY", - "db" => [":webhook_url"] - } - ] - } - - assert Application.get_env(:quack, :level) == :info - assert Application.get_env(:quack, :meta) == [:none] - assert Application.get_env(:quack, :webhook_url) == "https://hooks.slack.com/services/KEY" - end - - test "saving config with partial update", %{conn: conn} do - config = insert(:config, key: ":key1", value: :erlang.term_to_binary(key1: 1, key2: 2)) - - conn = - post(conn, "/api/pleroma/admin/config", %{ - configs: [ - %{group: config.group, key: config.key, value: [%{"tuple" => [":key3", 3]}]} - ] - }) - - assert json_response(conn, 200) == %{ - "configs" => [ - %{ - "group" => ":pleroma", - "key" => ":key1", - "value" => [ - %{"tuple" => [":key1", 1]}, - %{"tuple" => [":key2", 2]}, - %{"tuple" => [":key3", 3]} - ], - "db" => [":key1", ":key2", ":key3"] - } - ] - } - end - - test "saving config which need pleroma reboot", %{conn: conn} do - chat = Config.get(:chat) - on_exit(fn -> Config.put(:chat, chat) end) - - assert post( - conn, - "/api/pleroma/admin/config", - %{ - configs: [ - %{group: ":pleroma", key: ":chat", value: [%{"tuple" => [":enabled", true]}]} - ] - } - ) - |> json_response(200) == %{ - "configs" => [ - %{ - "db" => [":enabled"], - "group" => ":pleroma", - "key" => ":chat", - "value" => [%{"tuple" => [":enabled", true]}] - } - ], - "need_reboot" => true - } - - configs = - conn - |> get("/api/pleroma/admin/config") - |> json_response(200) - - assert configs["need_reboot"] - - capture_log(fn -> - assert conn |> get("/api/pleroma/admin/restart") |> json_response(200) == %{} - end) =~ "pleroma restarted" - - configs = - conn - |> get("/api/pleroma/admin/config") - |> json_response(200) - - assert configs["need_reboot"] == false - end - - test "update setting which need reboot, don't change reboot flag until reboot", %{conn: conn} do - chat = Config.get(:chat) - on_exit(fn -> Config.put(:chat, chat) end) - - assert post( - conn, - "/api/pleroma/admin/config", - %{ - configs: [ - %{group: ":pleroma", key: ":chat", value: [%{"tuple" => [":enabled", true]}]} - ] - } - ) - |> json_response(200) == %{ - "configs" => [ - %{ - "db" => [":enabled"], - "group" => ":pleroma", - "key" => ":chat", - "value" => [%{"tuple" => [":enabled", true]}] - } - ], - "need_reboot" => true - } - - assert post(conn, "/api/pleroma/admin/config", %{ - configs: [ - %{group: ":pleroma", key: ":key1", value: [%{"tuple" => [":key3", 3]}]} - ] - }) - |> json_response(200) == %{ - "configs" => [ - %{ - "group" => ":pleroma", - "key" => ":key1", - "value" => [ - %{"tuple" => [":key3", 3]} - ], - "db" => [":key3"] - } - ], - "need_reboot" => true - } - - capture_log(fn -> - assert conn |> get("/api/pleroma/admin/restart") |> json_response(200) == %{} - end) =~ "pleroma restarted" - - configs = - conn - |> get("/api/pleroma/admin/config") - |> json_response(200) - - assert configs["need_reboot"] == false - end - - test "saving config with nested merge", %{conn: conn} do - config = - insert(:config, key: ":key1", value: :erlang.term_to_binary(key1: 1, key2: [k1: 1, k2: 2])) - - conn = - post(conn, "/api/pleroma/admin/config", %{ - configs: [ - %{ - group: config.group, - key: config.key, - value: [ - %{"tuple" => [":key3", 3]}, - %{ - "tuple" => [ - ":key2", - [ - %{"tuple" => [":k2", 1]}, - %{"tuple" => [":k3", 3]} - ] - ] - } - ] - } - ] - }) - - assert json_response(conn, 200) == %{ - "configs" => [ - %{ - "group" => ":pleroma", - "key" => ":key1", - "value" => [ - %{"tuple" => [":key1", 1]}, - %{"tuple" => [":key3", 3]}, - %{ - "tuple" => [ - ":key2", - [ - %{"tuple" => [":k1", 1]}, - %{"tuple" => [":k2", 1]}, - %{"tuple" => [":k3", 3]} - ] - ] - } - ], - "db" => [":key1", ":key3", ":key2"] - } - ] - } - end - - test "saving special atoms", %{conn: conn} do - conn = - post(conn, "/api/pleroma/admin/config", %{ - "configs" => [ - %{ - "group" => ":pleroma", - "key" => ":key1", - "value" => [ - %{ - "tuple" => [ - ":ssl_options", - [%{"tuple" => [":versions", [":tlsv1", ":tlsv1.1", ":tlsv1.2"]]}] - ] - } - ] - } - ] - }) - - assert json_response(conn, 200) == %{ - "configs" => [ - %{ - "group" => ":pleroma", - "key" => ":key1", - "value" => [ - %{ - "tuple" => [ - ":ssl_options", - [%{"tuple" => [":versions", [":tlsv1", ":tlsv1.1", ":tlsv1.2"]]}] - ] - } - ], - "db" => [":ssl_options"] - } - ] - } - - assert Application.get_env(:pleroma, :key1) == [ - ssl_options: [versions: [:tlsv1, :"tlsv1.1", :"tlsv1.2"]] - ] - end - - test "saving full setting if value is in full_key_update list", %{conn: conn} do - backends = Application.get_env(:logger, :backends) - on_exit(fn -> Application.put_env(:logger, :backends, backends) end) - - config = - insert(:config, - group: ":logger", - key: ":backends", - value: :erlang.term_to_binary([]) - ) - - Pleroma.Config.TransferTask.load_and_update_env([], false) - - assert Application.get_env(:logger, :backends) == [] - - conn = - post(conn, "/api/pleroma/admin/config", %{ - configs: [ - %{ - group: config.group, - key: config.key, - value: [":console"] - } - ] - }) - - assert json_response(conn, 200) == %{ - "configs" => [ - %{ - "group" => ":logger", - "key" => ":backends", - "value" => [ - ":console" - ], - "db" => [":backends"] - } - ] - } - - assert Application.get_env(:logger, :backends) == [ - :console - ] - end - - test "saving full setting if value is not keyword", %{conn: conn} do - config = - insert(:config, - group: ":tesla", - key: ":adapter", - value: :erlang.term_to_binary(Tesla.Adapter.Hackey) - ) - - conn = - post(conn, "/api/pleroma/admin/config", %{ - configs: [ - %{group: config.group, key: config.key, value: "Tesla.Adapter.Httpc"} - ] - }) - - assert json_response(conn, 200) == %{ - "configs" => [ - %{ - "group" => ":tesla", - "key" => ":adapter", - "value" => "Tesla.Adapter.Httpc", - "db" => [":adapter"] - } - ] - } - end - - test "update config setting & delete with fallback to default value", %{ - conn: conn, - admin: admin, - token: token - } do - ueberauth = Application.get_env(:ueberauth, Ueberauth) - config1 = insert(:config, key: ":keyaa1") - config2 = insert(:config, key: ":keyaa2") - - config3 = - insert(:config, - group: ":ueberauth", - key: "Ueberauth" - ) - - conn = - post(conn, "/api/pleroma/admin/config", %{ - configs: [ - %{group: config1.group, key: config1.key, value: "another_value"}, - %{group: config2.group, key: config2.key, value: "another_value"} - ] - }) - - assert json_response(conn, 200) == %{ - "configs" => [ - %{ - "group" => ":pleroma", - "key" => config1.key, - "value" => "another_value", - "db" => [":keyaa1"] - }, - %{ - "group" => ":pleroma", - "key" => config2.key, - "value" => "another_value", - "db" => [":keyaa2"] - } - ] - } - - assert Application.get_env(:pleroma, :keyaa1) == "another_value" - assert Application.get_env(:pleroma, :keyaa2) == "another_value" - assert Application.get_env(:ueberauth, Ueberauth) == ConfigDB.from_binary(config3.value) - - conn = - build_conn() - |> assign(:user, admin) - |> assign(:token, token) - |> post("/api/pleroma/admin/config", %{ - configs: [ - %{group: config2.group, key: config2.key, delete: true}, - %{ - group: ":ueberauth", - key: "Ueberauth", - delete: true - } - ] - }) - - assert json_response(conn, 200) == %{ - "configs" => [] - } - - assert Application.get_env(:ueberauth, Ueberauth) == ueberauth - refute Keyword.has_key?(Application.get_all_env(:pleroma), :keyaa2) - end - - test "common config example", %{conn: conn} do - conn = - post(conn, "/api/pleroma/admin/config", %{ - configs: [ - %{ - "group" => ":pleroma", - "key" => "Pleroma.Captcha.NotReal", - "value" => [ - %{"tuple" => [":enabled", false]}, - %{"tuple" => [":method", "Pleroma.Captcha.Kocaptcha"]}, - %{"tuple" => [":seconds_valid", 60]}, - %{"tuple" => [":path", ""]}, - %{"tuple" => [":key1", nil]}, - %{"tuple" => [":partial_chain", "&:hackney_connect.partial_chain/1"]}, - %{"tuple" => [":regex1", "~r/https:\/\/example.com/"]}, - %{"tuple" => [":regex2", "~r/https:\/\/example.com/u"]}, - %{"tuple" => [":regex3", "~r/https:\/\/example.com/i"]}, - %{"tuple" => [":regex4", "~r/https:\/\/example.com/s"]}, - %{"tuple" => [":name", "Pleroma"]} - ] - } - ] - }) - - assert Config.get([Pleroma.Captcha.NotReal, :name]) == "Pleroma" - - assert json_response(conn, 200) == %{ - "configs" => [ - %{ - "group" => ":pleroma", - "key" => "Pleroma.Captcha.NotReal", - "value" => [ - %{"tuple" => [":enabled", false]}, - %{"tuple" => [":method", "Pleroma.Captcha.Kocaptcha"]}, - %{"tuple" => [":seconds_valid", 60]}, - %{"tuple" => [":path", ""]}, - %{"tuple" => [":key1", nil]}, - %{"tuple" => [":partial_chain", "&:hackney_connect.partial_chain/1"]}, - %{"tuple" => [":regex1", "~r/https:\\/\\/example.com/"]}, - %{"tuple" => [":regex2", "~r/https:\\/\\/example.com/u"]}, - %{"tuple" => [":regex3", "~r/https:\\/\\/example.com/i"]}, - %{"tuple" => [":regex4", "~r/https:\\/\\/example.com/s"]}, - %{"tuple" => [":name", "Pleroma"]} - ], - "db" => [ - ":enabled", - ":method", - ":seconds_valid", - ":path", - ":key1", - ":partial_chain", - ":regex1", - ":regex2", - ":regex3", - ":regex4", - ":name" - ] - } - ] - } - end - - test "tuples with more than two values", %{conn: conn} do - conn = - post(conn, "/api/pleroma/admin/config", %{ - configs: [ - %{ - "group" => ":pleroma", - "key" => "Pleroma.Web.Endpoint.NotReal", - "value" => [ - %{ - "tuple" => [ - ":http", - [ - %{ - "tuple" => [ - ":key2", - [ - %{ - "tuple" => [ - ":_", - [ - %{ - "tuple" => [ - "/api/v1/streaming", - "Pleroma.Web.MastodonAPI.WebsocketHandler", - [] - ] - }, - %{ - "tuple" => [ - "/websocket", - "Phoenix.Endpoint.CowboyWebSocket", - %{ - "tuple" => [ - "Phoenix.Transports.WebSocket", - %{ - "tuple" => [ - "Pleroma.Web.Endpoint", - "Pleroma.Web.UserSocket", - [] - ] - } - ] - } - ] - }, - %{ - "tuple" => [ - ":_", - "Phoenix.Endpoint.Cowboy2Handler", - %{"tuple" => ["Pleroma.Web.Endpoint", []]} - ] - } - ] - ] - } - ] - ] - } - ] - ] - } - ] - } - ] - }) - - assert json_response(conn, 200) == %{ - "configs" => [ - %{ - "group" => ":pleroma", - "key" => "Pleroma.Web.Endpoint.NotReal", - "value" => [ - %{ - "tuple" => [ - ":http", - [ - %{ - "tuple" => [ - ":key2", - [ - %{ - "tuple" => [ - ":_", - [ - %{ - "tuple" => [ - "/api/v1/streaming", - "Pleroma.Web.MastodonAPI.WebsocketHandler", - [] - ] - }, - %{ - "tuple" => [ - "/websocket", - "Phoenix.Endpoint.CowboyWebSocket", - %{ - "tuple" => [ - "Phoenix.Transports.WebSocket", - %{ - "tuple" => [ - "Pleroma.Web.Endpoint", - "Pleroma.Web.UserSocket", - [] - ] - } - ] - } - ] - }, - %{ - "tuple" => [ - ":_", - "Phoenix.Endpoint.Cowboy2Handler", - %{"tuple" => ["Pleroma.Web.Endpoint", []]} - ] - } - ] - ] - } - ] - ] - } - ] - ] - } - ], - "db" => [":http"] - } - ] - } - end - - test "settings with nesting map", %{conn: conn} do - conn = - post(conn, "/api/pleroma/admin/config", %{ - configs: [ - %{ - "group" => ":pleroma", - "key" => ":key1", - "value" => [ - %{"tuple" => [":key2", "some_val"]}, - %{ - "tuple" => [ - ":key3", - %{ - ":max_options" => 20, - ":max_option_chars" => 200, - ":min_expiration" => 0, - ":max_expiration" => 31_536_000, - "nested" => %{ - ":max_options" => 20, - ":max_option_chars" => 200, - ":min_expiration" => 0, - ":max_expiration" => 31_536_000 - } - } - ] - } - ] - } - ] - }) - - assert json_response(conn, 200) == - %{ - "configs" => [ - %{ - "group" => ":pleroma", - "key" => ":key1", - "value" => [ - %{"tuple" => [":key2", "some_val"]}, - %{ - "tuple" => [ - ":key3", - %{ - ":max_expiration" => 31_536_000, - ":max_option_chars" => 200, - ":max_options" => 20, - ":min_expiration" => 0, - "nested" => %{ - ":max_expiration" => 31_536_000, - ":max_option_chars" => 200, - ":max_options" => 20, - ":min_expiration" => 0 - } - } - ] - } - ], - "db" => [":key2", ":key3"] - } - ] - } - end - - test "value as map", %{conn: conn} do - conn = - post(conn, "/api/pleroma/admin/config", %{ - configs: [ - %{ - "group" => ":pleroma", - "key" => ":key1", - "value" => %{"key" => "some_val"} - } - ] - }) - - assert json_response(conn, 200) == - %{ - "configs" => [ - %{ - "group" => ":pleroma", - "key" => ":key1", - "value" => %{"key" => "some_val"}, - "db" => [":key1"] - } - ] - } - end - - test "queues key as atom", %{conn: conn} do - conn = - post(conn, "/api/pleroma/admin/config", %{ - configs: [ - %{ - "group" => ":oban", - "key" => ":queues", - "value" => [ - %{"tuple" => [":federator_incoming", 50]}, - %{"tuple" => [":federator_outgoing", 50]}, - %{"tuple" => [":web_push", 50]}, - %{"tuple" => [":mailer", 10]}, - %{"tuple" => [":transmogrifier", 20]}, - %{"tuple" => [":scheduled_activities", 10]}, - %{"tuple" => [":background", 5]} - ] - } - ] - }) - - assert json_response(conn, 200) == %{ - "configs" => [ - %{ - "group" => ":oban", - "key" => ":queues", - "value" => [ - %{"tuple" => [":federator_incoming", 50]}, - %{"tuple" => [":federator_outgoing", 50]}, - %{"tuple" => [":web_push", 50]}, - %{"tuple" => [":mailer", 10]}, - %{"tuple" => [":transmogrifier", 20]}, - %{"tuple" => [":scheduled_activities", 10]}, - %{"tuple" => [":background", 5]} - ], - "db" => [ - ":federator_incoming", - ":federator_outgoing", - ":web_push", - ":mailer", - ":transmogrifier", - ":scheduled_activities", - ":background" - ] - } - ] - } - end - - test "delete part of settings by atom subkeys", %{conn: conn} do - config = - insert(:config, - key: ":keyaa1", - value: :erlang.term_to_binary(subkey1: "val1", subkey2: "val2", subkey3: "val3") - ) - - conn = - post(conn, "/api/pleroma/admin/config", %{ - configs: [ - %{ - group: config.group, - key: config.key, - subkeys: [":subkey1", ":subkey3"], - delete: true - } - ] - }) - - assert json_response(conn, 200) == %{ - "configs" => [ - %{ - "group" => ":pleroma", - "key" => ":keyaa1", - "value" => [%{"tuple" => [":subkey2", "val2"]}], - "db" => [":subkey2"] - } - ] - } - end - - test "proxy tuple localhost", %{conn: conn} do - conn = - post(conn, "/api/pleroma/admin/config", %{ - configs: [ - %{ - group: ":pleroma", - key: ":http", - value: [ - %{"tuple" => [":proxy_url", %{"tuple" => [":socks5", "localhost", 1234]}]} - ] - } - ] - }) - - assert %{ - "configs" => [ - %{ - "group" => ":pleroma", - "key" => ":http", - "value" => value, - "db" => db - } - ] - } = json_response(conn, 200) - - assert %{"tuple" => [":proxy_url", %{"tuple" => [":socks5", "localhost", 1234]}]} in value - assert ":proxy_url" in db - end - - test "proxy tuple domain", %{conn: conn} do - conn = - post(conn, "/api/pleroma/admin/config", %{ - configs: [ - %{ - group: ":pleroma", - key: ":http", - value: [ - %{"tuple" => [":proxy_url", %{"tuple" => [":socks5", "domain.com", 1234]}]} - ] - } - ] - }) - - assert %{ - "configs" => [ - %{ - "group" => ":pleroma", - "key" => ":http", - "value" => value, - "db" => db - } - ] - } = json_response(conn, 200) - - assert %{"tuple" => [":proxy_url", %{"tuple" => [":socks5", "domain.com", 1234]}]} in value - assert ":proxy_url" in db - end - - test "proxy tuple ip", %{conn: conn} do - conn = - post(conn, "/api/pleroma/admin/config", %{ - configs: [ - %{ - group: ":pleroma", - key: ":http", - value: [ - %{"tuple" => [":proxy_url", %{"tuple" => [":socks5", "127.0.0.1", 1234]}]} - ] - } - ] - }) - - assert %{ - "configs" => [ - %{ - "group" => ":pleroma", - "key" => ":http", - "value" => value, - "db" => db - } - ] - } = json_response(conn, 200) - - assert %{"tuple" => [":proxy_url", %{"tuple" => [":socks5", "127.0.0.1", 1234]}]} in value - assert ":proxy_url" in db - end - - @tag capture_log: true - test "doesn't set keys not in the whitelist", %{conn: conn} do - clear_config(:database_config_whitelist, [ - {:pleroma, :key1}, - {:pleroma, :key2}, - {:pleroma, Pleroma.Captcha.NotReal}, - {:not_real} - ]) - - post(conn, "/api/pleroma/admin/config", %{ - configs: [ - %{group: ":pleroma", key: ":key1", value: "value1"}, - %{group: ":pleroma", key: ":key2", value: "value2"}, - %{group: ":pleroma", key: ":key3", value: "value3"}, - %{group: ":pleroma", key: "Pleroma.Web.Endpoint.NotReal", value: "value4"}, - %{group: ":pleroma", key: "Pleroma.Captcha.NotReal", value: "value5"}, - %{group: ":not_real", key: ":anything", value: "value6"} - ] - }) - - assert Application.get_env(:pleroma, :key1) == "value1" - assert Application.get_env(:pleroma, :key2) == "value2" - assert Application.get_env(:pleroma, :key3) == nil - assert Application.get_env(:pleroma, Pleroma.Web.Endpoint.NotReal) == nil - assert Application.get_env(:pleroma, Pleroma.Captcha.NotReal) == "value5" - assert Application.get_env(:not_real, :anything) == "value6" - end - end - describe "GET /api/pleroma/admin/restart" do setup do: clear_config(:configurable_from_database, true) @@ -3254,14 +1599,14 @@ test "changes actor type from permitted list", %{conn: conn, user: user} do assert patch(conn, "/api/pleroma/admin/users/#{user.nickname}/credentials", %{ "actor_type" => "Application" }) - |> json_response(200) == %{"errors" => %{"actor_type" => "is invalid"}} + |> json_response(400) == %{"errors" => %{"actor_type" => "is invalid"}} end test "update non existing user", %{conn: conn} do assert patch(conn, "/api/pleroma/admin/users/non-existing/credentials", %{ "password" => "new_password" }) - |> json_response(200) == %{"error" => "Unable to update user."} + |> json_response(404) == %{"error" => "Not found"} end end @@ -3281,57 +1626,6 @@ test "sets password_reset_pending to true", %{conn: conn} do end end - describe "relays" do - test "POST /relay", %{conn: conn, admin: admin} do - conn = - post(conn, "/api/pleroma/admin/relay", %{ - relay_url: "http://mastodon.example.org/users/admin" - }) - - assert json_response(conn, 200) == "http://mastodon.example.org/users/admin" - - log_entry = Repo.one(ModerationLog) - - assert ModerationLog.get_log_entry_message(log_entry) == - "@#{admin.nickname} followed relay: http://mastodon.example.org/users/admin" - end - - test "GET /relay", %{conn: conn} do - relay_user = Pleroma.Web.ActivityPub.Relay.get_actor() - - ["http://mastodon.example.org/users/admin", "https://mstdn.io/users/mayuutann"] - |> Enum.each(fn ap_id -> - {:ok, user} = User.get_or_fetch_by_ap_id(ap_id) - User.follow(relay_user, user) - end) - - conn = get(conn, "/api/pleroma/admin/relay") - - assert json_response(conn, 200)["relays"] -- ["mastodon.example.org", "mstdn.io"] == [] - end - - test "DELETE /relay", %{conn: conn, admin: admin} do - post(conn, "/api/pleroma/admin/relay", %{ - relay_url: "http://mastodon.example.org/users/admin" - }) - - conn = - delete(conn, "/api/pleroma/admin/relay", %{ - relay_url: "http://mastodon.example.org/users/admin" - }) - - assert json_response(conn, 200) == "http://mastodon.example.org/users/admin" - - [log_entry_one, log_entry_two] = Repo.all(ModerationLog) - - assert ModerationLog.get_log_entry_message(log_entry_one) == - "@#{admin.nickname} followed relay: http://mastodon.example.org/users/admin" - - assert ModerationLog.get_log_entry_message(log_entry_two) == - "@#{admin.nickname} unfollowed relay: http://mastodon.example.org/users/admin" - end - end - describe "instances" do test "GET /instances/:instance/statuses", %{conn: conn} do user = insert(:user, local: false, nickname: "archaeme@archae.me") @@ -3421,116 +1715,6 @@ test "it resend emails for two users", %{conn: conn, admin: admin} do end end - describe "POST /reports/:id/notes" do - setup %{conn: conn, admin: admin} do - [reporter, target_user] = insert_pair(:user) - activity = insert(:note_activity, user: target_user) - - {:ok, %{id: report_id}} = - CommonAPI.report(reporter, %{ - account_id: target_user.id, - comment: "I feel offended", - status_ids: [activity.id] - }) - - post(conn, "/api/pleroma/admin/reports/#{report_id}/notes", %{ - content: "this is disgusting!" - }) - - post(conn, "/api/pleroma/admin/reports/#{report_id}/notes", %{ - content: "this is disgusting2!" - }) - - %{ - admin_id: admin.id, - report_id: report_id - } - end - - test "it creates report note", %{admin_id: admin_id, report_id: report_id} do - [note, _] = Repo.all(ReportNote) - - assert %{ - activity_id: ^report_id, - content: "this is disgusting!", - user_id: ^admin_id - } = note - end - - test "it returns reports with notes", %{conn: conn, admin: admin} do - conn = get(conn, "/api/pleroma/admin/reports") - - response = json_response(conn, 200) - notes = hd(response["reports"])["notes"] - [note, _] = notes - - assert note["user"]["nickname"] == admin.nickname - assert note["content"] == "this is disgusting!" - assert note["created_at"] - assert response["total"] == 1 - end - - test "it deletes the note", %{conn: conn, report_id: report_id} do - assert ReportNote |> Repo.all() |> length() == 2 - - [note, _] = Repo.all(ReportNote) - - delete(conn, "/api/pleroma/admin/reports/#{report_id}/notes/#{note.id}") - - assert ReportNote |> Repo.all() |> length() == 1 - end - end - - describe "GET /api/pleroma/admin/config/descriptions" do - test "structure", %{conn: conn} do - admin = insert(:user, is_admin: true) - - conn = - assign(conn, :user, admin) - |> get("/api/pleroma/admin/config/descriptions") - - assert [child | _others] = json_response(conn, 200) - - assert child["children"] - assert child["key"] - assert String.starts_with?(child["group"], ":") - assert child["description"] - end - - test "filters by database configuration whitelist", %{conn: conn} do - clear_config(:database_config_whitelist, [ - {:pleroma, :instance}, - {:pleroma, :activitypub}, - {:pleroma, Pleroma.Upload}, - {:esshd} - ]) - - admin = insert(:user, is_admin: true) - - conn = - assign(conn, :user, admin) - |> get("/api/pleroma/admin/config/descriptions") - - children = json_response(conn, 200) - - assert length(children) == 4 - - assert Enum.count(children, fn c -> c["group"] == ":pleroma" end) == 3 - - instance = Enum.find(children, fn c -> c["key"] == ":instance" end) - assert instance["children"] - - activitypub = Enum.find(children, fn c -> c["key"] == ":activitypub" end) - assert activitypub["children"] - - web_endpoint = Enum.find(children, fn c -> c["key"] == "Pleroma.Upload" end) - assert web_endpoint["children"] - - esshd = Enum.find(children, fn c -> c["group"] == ":esshd" end) - assert esshd["children"] - end - end - describe "/api/pleroma/admin/stats" do test "status visibility count", %{conn: conn} do admin = insert(:user, is_admin: true) @@ -3548,190 +1732,25 @@ test "status visibility count", %{conn: conn} do assert %{"direct" => 0, "private" => 0, "public" => 1, "unlisted" => 2} = response["status_visibility"] end - end - describe "POST /api/pleroma/admin/oauth_app" do - test "errors", %{conn: conn} do - response = conn |> post("/api/pleroma/admin/oauth_app", %{}) |> json_response(200) + test "by instance", %{conn: conn} do + admin = insert(:user, is_admin: true) + user1 = insert(:user) + instance2 = "instance2.tld" + user2 = insert(:user, %{ap_id: "https://#{instance2}/@actor"}) - assert response == %{"name" => "can't be blank", "redirect_uris" => "can't be blank"} - end - - test "success", %{conn: conn} do - base_url = Web.base_url() - app_name = "Trusted app" + CommonAPI.post(user1, %{visibility: "public", status: "hey"}) + CommonAPI.post(user2, %{visibility: "unlisted", status: "hey"}) + CommonAPI.post(user2, %{visibility: "private", status: "hey"}) response = conn - |> post("/api/pleroma/admin/oauth_app", %{ - name: app_name, - redirect_uris: base_url - }) + |> assign(:user, admin) + |> get("/api/pleroma/admin/stats", instance: instance2) |> json_response(200) - assert %{ - "client_id" => _, - "client_secret" => _, - "name" => ^app_name, - "redirect_uri" => ^base_url, - "trusted" => false - } = response - end - - test "with trusted", %{conn: conn} do - base_url = Web.base_url() - app_name = "Trusted app" - - response = - conn - |> post("/api/pleroma/admin/oauth_app", %{ - name: app_name, - redirect_uris: base_url, - trusted: true - }) - |> json_response(200) - - assert %{ - "client_id" => _, - "client_secret" => _, - "name" => ^app_name, - "redirect_uri" => ^base_url, - "trusted" => true - } = response - end - end - - describe "GET /api/pleroma/admin/oauth_app" do - setup do - app = insert(:oauth_app) - {:ok, app: app} - end - - test "list", %{conn: conn} do - response = - conn - |> get("/api/pleroma/admin/oauth_app") - |> json_response(200) - - assert %{"apps" => apps, "count" => count, "page_size" => _} = response - - assert length(apps) == count - end - - test "with page size", %{conn: conn} do - insert(:oauth_app) - page_size = 1 - - response = - conn - |> get("/api/pleroma/admin/oauth_app", %{page_size: to_string(page_size)}) - |> json_response(200) - - assert %{"apps" => apps, "count" => _, "page_size" => ^page_size} = response - - assert length(apps) == page_size - end - - test "search by client name", %{conn: conn, app: app} do - response = - conn - |> get("/api/pleroma/admin/oauth_app", %{name: app.client_name}) - |> json_response(200) - - assert %{"apps" => [returned], "count" => _, "page_size" => _} = response - - assert returned["client_id"] == app.client_id - assert returned["name"] == app.client_name - end - - test "search by client id", %{conn: conn, app: app} do - response = - conn - |> get("/api/pleroma/admin/oauth_app", %{client_id: app.client_id}) - |> json_response(200) - - assert %{"apps" => [returned], "count" => _, "page_size" => _} = response - - assert returned["client_id"] == app.client_id - assert returned["name"] == app.client_name - end - - test "only trusted", %{conn: conn} do - app = insert(:oauth_app, trusted: true) - - response = - conn - |> get("/api/pleroma/admin/oauth_app", %{trusted: true}) - |> json_response(200) - - assert %{"apps" => [returned], "count" => _, "page_size" => _} = response - - assert returned["client_id"] == app.client_id - assert returned["name"] == app.client_name - end - end - - describe "DELETE /api/pleroma/admin/oauth_app/:id" do - test "with id", %{conn: conn} do - app = insert(:oauth_app) - - response = - conn - |> delete("/api/pleroma/admin/oauth_app/" <> to_string(app.id)) - |> json_response(:no_content) - - assert response == "" - end - - test "with non existance id", %{conn: conn} do - response = - conn - |> delete("/api/pleroma/admin/oauth_app/0") - |> json_response(:bad_request) - - assert response == "" - end - end - - describe "PATCH /api/pleroma/admin/oauth_app/:id" do - test "with id", %{conn: conn} do - app = insert(:oauth_app) - - name = "another name" - url = "https://example.com" - scopes = ["admin"] - id = app.id - website = "http://website.com" - - response = - conn - |> patch("/api/pleroma/admin/oauth_app/" <> to_string(app.id), %{ - name: name, - trusted: true, - redirect_uris: url, - scopes: scopes, - website: website - }) - |> json_response(200) - - assert %{ - "client_id" => _, - "client_secret" => _, - "id" => ^id, - "name" => ^name, - "redirect_uri" => ^url, - "trusted" => true, - "website" => ^website - } = response - end - - test "without id", %{conn: conn} do - response = - conn - |> patch("/api/pleroma/admin/oauth_app/0") - |> json_response(:bad_request) - - assert response == "" + assert %{"direct" => 0, "private" => 1, "public" => 0, "unlisted" => 1} = + response["status_visibility"] end end end diff --git a/test/web/admin_api/controllers/config_controller_test.exs b/test/web/admin_api/controllers/config_controller_test.exs new file mode 100644 index 000000000..064ef9bc7 --- /dev/null +++ b/test/web/admin_api/controllers/config_controller_test.exs @@ -0,0 +1,1388 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.AdminAPI.ConfigControllerTest do + use Pleroma.Web.ConnCase, async: true + + import ExUnit.CaptureLog + import Pleroma.Factory + + alias Pleroma.Config + alias Pleroma.ConfigDB + + setup do + admin = insert(:user, is_admin: true) + token = insert(:oauth_admin_token, user: admin) + + conn = + build_conn() + |> assign(:user, admin) + |> assign(:token, token) + + {:ok, %{admin: admin, token: token, conn: conn}} + end + + describe "GET /api/pleroma/admin/config" do + setup do: clear_config(:configurable_from_database, true) + + test "when configuration from database is off", %{conn: conn} do + Config.put(:configurable_from_database, false) + conn = get(conn, "/api/pleroma/admin/config") + + assert json_response_and_validate_schema(conn, 400) == + %{ + "error" => "To use this endpoint you need to enable configuration from database." + } + end + + test "with settings only in db", %{conn: conn} do + config1 = insert(:config) + config2 = insert(:config) + + conn = get(conn, "/api/pleroma/admin/config?only_db=true") + + %{ + "configs" => [ + %{ + "group" => ":pleroma", + "key" => key1, + "value" => _ + }, + %{ + "group" => ":pleroma", + "key" => key2, + "value" => _ + } + ] + } = json_response_and_validate_schema(conn, 200) + + assert key1 == inspect(config1.key) + assert key2 == inspect(config2.key) + end + + test "db is added to settings that are in db", %{conn: conn} do + _config = insert(:config, key: ":instance", value: [name: "Some name"]) + + %{"configs" => configs} = + conn + |> get("/api/pleroma/admin/config") + |> json_response_and_validate_schema(200) + + [instance_config] = + Enum.filter(configs, fn %{"group" => group, "key" => key} -> + group == ":pleroma" and key == ":instance" + end) + + assert instance_config["db"] == [":name"] + end + + test "merged default setting with db settings", %{conn: conn} do + config1 = insert(:config) + config2 = insert(:config) + + config3 = + insert(:config, + value: [k1: :v1, k2: :v2] + ) + + %{"configs" => configs} = + conn + |> get("/api/pleroma/admin/config") + |> json_response_and_validate_schema(200) + + assert length(configs) > 3 + + saved_configs = [config1, config2, config3] + keys = Enum.map(saved_configs, &inspect(&1.key)) + + received_configs = + Enum.filter(configs, fn %{"group" => group, "key" => key} -> + group == ":pleroma" and key in keys + end) + + assert length(received_configs) == 3 + + db_keys = + config3.value + |> Keyword.keys() + |> ConfigDB.to_json_types() + + keys = Enum.map(saved_configs -- [config3], &inspect(&1.key)) + + values = Enum.map(saved_configs, &ConfigDB.to_json_types(&1.value)) + + mapset_keys = MapSet.new(keys ++ db_keys) + + Enum.each(received_configs, fn %{"value" => value, "db" => db} -> + db = MapSet.new(db) + assert MapSet.subset?(db, mapset_keys) + + assert value in values + end) + end + + test "subkeys with full update right merge", %{conn: conn} do + insert(:config, + key: ":emoji", + value: [groups: [a: 1, b: 2], key: [a: 1]] + ) + + insert(:config, + key: ":assets", + value: [mascots: [a: 1, b: 2], key: [a: 1]] + ) + + %{"configs" => configs} = + conn + |> get("/api/pleroma/admin/config") + |> json_response_and_validate_schema(200) + + vals = + Enum.filter(configs, fn %{"group" => group, "key" => key} -> + group == ":pleroma" and key in [":emoji", ":assets"] + end) + + emoji = Enum.find(vals, fn %{"key" => key} -> key == ":emoji" end) + assets = Enum.find(vals, fn %{"key" => key} -> key == ":assets" end) + + emoji_val = ConfigDB.to_elixir_types(emoji["value"]) + assets_val = ConfigDB.to_elixir_types(assets["value"]) + + assert emoji_val[:groups] == [a: 1, b: 2] + assert assets_val[:mascots] == [a: 1, b: 2] + end + end + + test "POST /api/pleroma/admin/config error", %{conn: conn} do + conn = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/config", %{"configs" => []}) + + assert json_response_and_validate_schema(conn, 400) == + %{"error" => "To use this endpoint you need to enable configuration from database."} + end + + describe "POST /api/pleroma/admin/config" do + setup do + http = Application.get_env(:pleroma, :http) + + on_exit(fn -> + Application.delete_env(:pleroma, :key1) + Application.delete_env(:pleroma, :key2) + Application.delete_env(:pleroma, :key3) + Application.delete_env(:pleroma, :key4) + Application.delete_env(:pleroma, :keyaa1) + Application.delete_env(:pleroma, :keyaa2) + Application.delete_env(:pleroma, Pleroma.Web.Endpoint.NotReal) + Application.delete_env(:pleroma, Pleroma.Captcha.NotReal) + Application.put_env(:pleroma, :http, http) + Application.put_env(:tesla, :adapter, Tesla.Mock) + Restarter.Pleroma.refresh() + end) + end + + setup do: clear_config(:configurable_from_database, true) + + @tag capture_log: true + test "create new config setting in db", %{conn: conn} do + ueberauth = Application.get_env(:ueberauth, Ueberauth) + on_exit(fn -> Application.put_env(:ueberauth, Ueberauth, ueberauth) end) + + conn = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/config", %{ + configs: [ + %{group: ":pleroma", key: ":key1", value: "value1"}, + %{ + group: ":ueberauth", + key: "Ueberauth", + value: [%{"tuple" => [":consumer_secret", "aaaa"]}] + }, + %{ + group: ":pleroma", + key: ":key2", + value: %{ + ":nested_1" => "nested_value1", + ":nested_2" => [ + %{":nested_22" => "nested_value222"}, + %{":nested_33" => %{":nested_44" => "nested_444"}} + ] + } + }, + %{ + group: ":pleroma", + key: ":key3", + value: [ + %{"nested_3" => ":nested_3", "nested_33" => "nested_33"}, + %{"nested_4" => true} + ] + }, + %{ + group: ":pleroma", + key: ":key4", + value: %{":nested_5" => ":upload", "endpoint" => "https://example.com"} + }, + %{ + group: ":idna", + key: ":key5", + value: %{"tuple" => ["string", "Pleroma.Captcha.NotReal", []]} + } + ] + }) + + assert json_response_and_validate_schema(conn, 200) == %{ + "configs" => [ + %{ + "group" => ":pleroma", + "key" => ":key1", + "value" => "value1", + "db" => [":key1"] + }, + %{ + "group" => ":ueberauth", + "key" => "Ueberauth", + "value" => [%{"tuple" => [":consumer_secret", "aaaa"]}], + "db" => [":consumer_secret"] + }, + %{ + "group" => ":pleroma", + "key" => ":key2", + "value" => %{ + ":nested_1" => "nested_value1", + ":nested_2" => [ + %{":nested_22" => "nested_value222"}, + %{":nested_33" => %{":nested_44" => "nested_444"}} + ] + }, + "db" => [":key2"] + }, + %{ + "group" => ":pleroma", + "key" => ":key3", + "value" => [ + %{"nested_3" => ":nested_3", "nested_33" => "nested_33"}, + %{"nested_4" => true} + ], + "db" => [":key3"] + }, + %{ + "group" => ":pleroma", + "key" => ":key4", + "value" => %{"endpoint" => "https://example.com", ":nested_5" => ":upload"}, + "db" => [":key4"] + }, + %{ + "group" => ":idna", + "key" => ":key5", + "value" => %{"tuple" => ["string", "Pleroma.Captcha.NotReal", []]}, + "db" => [":key5"] + } + ], + "need_reboot" => false + } + + assert Application.get_env(:pleroma, :key1) == "value1" + + assert Application.get_env(:pleroma, :key2) == %{ + nested_1: "nested_value1", + nested_2: [ + %{nested_22: "nested_value222"}, + %{nested_33: %{nested_44: "nested_444"}} + ] + } + + assert Application.get_env(:pleroma, :key3) == [ + %{"nested_3" => :nested_3, "nested_33" => "nested_33"}, + %{"nested_4" => true} + ] + + assert Application.get_env(:pleroma, :key4) == %{ + "endpoint" => "https://example.com", + nested_5: :upload + } + + assert Application.get_env(:idna, :key5) == {"string", Pleroma.Captcha.NotReal, []} + end + + test "save configs setting without explicit key", %{conn: conn} do + level = Application.get_env(:quack, :level) + meta = Application.get_env(:quack, :meta) + webhook_url = Application.get_env(:quack, :webhook_url) + + on_exit(fn -> + Application.put_env(:quack, :level, level) + Application.put_env(:quack, :meta, meta) + Application.put_env(:quack, :webhook_url, webhook_url) + end) + + conn = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/config", %{ + configs: [ + %{ + group: ":quack", + key: ":level", + value: ":info" + }, + %{ + group: ":quack", + key: ":meta", + value: [":none"] + }, + %{ + group: ":quack", + key: ":webhook_url", + value: "https://hooks.slack.com/services/KEY" + } + ] + }) + + assert json_response_and_validate_schema(conn, 200) == %{ + "configs" => [ + %{ + "group" => ":quack", + "key" => ":level", + "value" => ":info", + "db" => [":level"] + }, + %{ + "group" => ":quack", + "key" => ":meta", + "value" => [":none"], + "db" => [":meta"] + }, + %{ + "group" => ":quack", + "key" => ":webhook_url", + "value" => "https://hooks.slack.com/services/KEY", + "db" => [":webhook_url"] + } + ], + "need_reboot" => false + } + + assert Application.get_env(:quack, :level) == :info + assert Application.get_env(:quack, :meta) == [:none] + assert Application.get_env(:quack, :webhook_url) == "https://hooks.slack.com/services/KEY" + end + + test "saving config with partial update", %{conn: conn} do + insert(:config, key: ":key1", value: :erlang.term_to_binary(key1: 1, key2: 2)) + + conn = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/config", %{ + configs: [ + %{group: ":pleroma", key: ":key1", value: [%{"tuple" => [":key3", 3]}]} + ] + }) + + assert json_response_and_validate_schema(conn, 200) == %{ + "configs" => [ + %{ + "group" => ":pleroma", + "key" => ":key1", + "value" => [ + %{"tuple" => [":key1", 1]}, + %{"tuple" => [":key2", 2]}, + %{"tuple" => [":key3", 3]} + ], + "db" => [":key1", ":key2", ":key3"] + } + ], + "need_reboot" => false + } + end + + test "saving config which need pleroma reboot", %{conn: conn} do + chat = Config.get(:chat) + on_exit(fn -> Config.put(:chat, chat) end) + + assert conn + |> put_req_header("content-type", "application/json") + |> post( + "/api/pleroma/admin/config", + %{ + configs: [ + %{group: ":pleroma", key: ":chat", value: [%{"tuple" => [":enabled", true]}]} + ] + } + ) + |> json_response_and_validate_schema(200) == %{ + "configs" => [ + %{ + "db" => [":enabled"], + "group" => ":pleroma", + "key" => ":chat", + "value" => [%{"tuple" => [":enabled", true]}] + } + ], + "need_reboot" => true + } + + configs = + conn + |> get("/api/pleroma/admin/config") + |> json_response_and_validate_schema(200) + + assert configs["need_reboot"] + + capture_log(fn -> + assert conn |> get("/api/pleroma/admin/restart") |> json_response(200) == + %{} + end) =~ "pleroma restarted" + + configs = + conn + |> get("/api/pleroma/admin/config") + |> json_response_and_validate_schema(200) + + assert configs["need_reboot"] == false + end + + test "update setting which need reboot, don't change reboot flag until reboot", %{conn: conn} do + chat = Config.get(:chat) + on_exit(fn -> Config.put(:chat, chat) end) + + assert conn + |> put_req_header("content-type", "application/json") + |> post( + "/api/pleroma/admin/config", + %{ + configs: [ + %{group: ":pleroma", key: ":chat", value: [%{"tuple" => [":enabled", true]}]} + ] + } + ) + |> json_response_and_validate_schema(200) == %{ + "configs" => [ + %{ + "db" => [":enabled"], + "group" => ":pleroma", + "key" => ":chat", + "value" => [%{"tuple" => [":enabled", true]}] + } + ], + "need_reboot" => true + } + + assert conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/config", %{ + configs: [ + %{group: ":pleroma", key: ":key1", value: [%{"tuple" => [":key3", 3]}]} + ] + }) + |> json_response_and_validate_schema(200) == %{ + "configs" => [ + %{ + "group" => ":pleroma", + "key" => ":key1", + "value" => [ + %{"tuple" => [":key3", 3]} + ], + "db" => [":key3"] + } + ], + "need_reboot" => true + } + + capture_log(fn -> + assert conn |> get("/api/pleroma/admin/restart") |> json_response(200) == + %{} + end) =~ "pleroma restarted" + + configs = + conn + |> get("/api/pleroma/admin/config") + |> json_response_and_validate_schema(200) + + assert configs["need_reboot"] == false + end + + test "saving config with nested merge", %{conn: conn} do + insert(:config, key: :key1, value: [key1: 1, key2: [k1: 1, k2: 2]]) + + conn = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/config", %{ + configs: [ + %{ + group: ":pleroma", + key: ":key1", + value: [ + %{"tuple" => [":key3", 3]}, + %{ + "tuple" => [ + ":key2", + [ + %{"tuple" => [":k2", 1]}, + %{"tuple" => [":k3", 3]} + ] + ] + } + ] + } + ] + }) + + assert json_response_and_validate_schema(conn, 200) == %{ + "configs" => [ + %{ + "group" => ":pleroma", + "key" => ":key1", + "value" => [ + %{"tuple" => [":key1", 1]}, + %{"tuple" => [":key3", 3]}, + %{ + "tuple" => [ + ":key2", + [ + %{"tuple" => [":k1", 1]}, + %{"tuple" => [":k2", 1]}, + %{"tuple" => [":k3", 3]} + ] + ] + } + ], + "db" => [":key1", ":key3", ":key2"] + } + ], + "need_reboot" => false + } + end + + test "saving special atoms", %{conn: conn} do + conn = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/config", %{ + "configs" => [ + %{ + "group" => ":pleroma", + "key" => ":key1", + "value" => [ + %{ + "tuple" => [ + ":ssl_options", + [%{"tuple" => [":versions", [":tlsv1", ":tlsv1.1", ":tlsv1.2"]]}] + ] + } + ] + } + ] + }) + + assert json_response_and_validate_schema(conn, 200) == %{ + "configs" => [ + %{ + "group" => ":pleroma", + "key" => ":key1", + "value" => [ + %{ + "tuple" => [ + ":ssl_options", + [%{"tuple" => [":versions", [":tlsv1", ":tlsv1.1", ":tlsv1.2"]]}] + ] + } + ], + "db" => [":ssl_options"] + } + ], + "need_reboot" => false + } + + assert Application.get_env(:pleroma, :key1) == [ + ssl_options: [versions: [:tlsv1, :"tlsv1.1", :"tlsv1.2"]] + ] + end + + test "saving full setting if value is in full_key_update list", %{conn: conn} do + backends = Application.get_env(:logger, :backends) + on_exit(fn -> Application.put_env(:logger, :backends, backends) end) + + insert(:config, + group: :logger, + key: :backends, + value: [] + ) + + Pleroma.Config.TransferTask.load_and_update_env([], false) + + assert Application.get_env(:logger, :backends) == [] + + conn = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/config", %{ + configs: [ + %{ + group: ":logger", + key: ":backends", + value: [":console"] + } + ] + }) + + assert json_response_and_validate_schema(conn, 200) == %{ + "configs" => [ + %{ + "group" => ":logger", + "key" => ":backends", + "value" => [ + ":console" + ], + "db" => [":backends"] + } + ], + "need_reboot" => false + } + + assert Application.get_env(:logger, :backends) == [ + :console + ] + end + + test "saving full setting if value is not keyword", %{conn: conn} do + insert(:config, + group: :tesla, + key: :adapter, + value: Tesla.Adapter.Hackey + ) + + conn = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/config", %{ + configs: [ + %{group: ":tesla", key: ":adapter", value: "Tesla.Adapter.Httpc"} + ] + }) + + assert json_response_and_validate_schema(conn, 200) == %{ + "configs" => [ + %{ + "group" => ":tesla", + "key" => ":adapter", + "value" => "Tesla.Adapter.Httpc", + "db" => [":adapter"] + } + ], + "need_reboot" => false + } + end + + test "update config setting & delete with fallback to default value", %{ + conn: conn, + admin: admin, + token: token + } do + ueberauth = Application.get_env(:ueberauth, Ueberauth) + insert(:config, key: :keyaa1) + insert(:config, key: :keyaa2) + + config3 = + insert(:config, + group: :ueberauth, + key: Ueberauth + ) + + conn = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/config", %{ + configs: [ + %{group: ":pleroma", key: ":keyaa1", value: "another_value"}, + %{group: ":pleroma", key: ":keyaa2", value: "another_value"} + ] + }) + + assert json_response_and_validate_schema(conn, 200) == %{ + "configs" => [ + %{ + "group" => ":pleroma", + "key" => ":keyaa1", + "value" => "another_value", + "db" => [":keyaa1"] + }, + %{ + "group" => ":pleroma", + "key" => ":keyaa2", + "value" => "another_value", + "db" => [":keyaa2"] + } + ], + "need_reboot" => false + } + + assert Application.get_env(:pleroma, :keyaa1) == "another_value" + assert Application.get_env(:pleroma, :keyaa2) == "another_value" + assert Application.get_env(:ueberauth, Ueberauth) == config3.value + + conn = + build_conn() + |> assign(:user, admin) + |> assign(:token, token) + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/config", %{ + configs: [ + %{group: ":pleroma", key: ":keyaa2", delete: true}, + %{ + group: ":ueberauth", + key: "Ueberauth", + delete: true + } + ] + }) + + assert json_response_and_validate_schema(conn, 200) == %{ + "configs" => [], + "need_reboot" => false + } + + assert Application.get_env(:ueberauth, Ueberauth) == ueberauth + refute Keyword.has_key?(Application.get_all_env(:pleroma), :keyaa2) + end + + test "common config example", %{conn: conn} do + conn = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/config", %{ + configs: [ + %{ + "group" => ":pleroma", + "key" => "Pleroma.Captcha.NotReal", + "value" => [ + %{"tuple" => [":enabled", false]}, + %{"tuple" => [":method", "Pleroma.Captcha.Kocaptcha"]}, + %{"tuple" => [":seconds_valid", 60]}, + %{"tuple" => [":path", ""]}, + %{"tuple" => [":key1", nil]}, + %{"tuple" => [":partial_chain", "&:hackney_connect.partial_chain/1"]}, + %{"tuple" => [":regex1", "~r/https:\/\/example.com/"]}, + %{"tuple" => [":regex2", "~r/https:\/\/example.com/u"]}, + %{"tuple" => [":regex3", "~r/https:\/\/example.com/i"]}, + %{"tuple" => [":regex4", "~r/https:\/\/example.com/s"]}, + %{"tuple" => [":name", "Pleroma"]} + ] + } + ] + }) + + assert Config.get([Pleroma.Captcha.NotReal, :name]) == "Pleroma" + + assert json_response_and_validate_schema(conn, 200) == %{ + "configs" => [ + %{ + "group" => ":pleroma", + "key" => "Pleroma.Captcha.NotReal", + "value" => [ + %{"tuple" => [":enabled", false]}, + %{"tuple" => [":method", "Pleroma.Captcha.Kocaptcha"]}, + %{"tuple" => [":seconds_valid", 60]}, + %{"tuple" => [":path", ""]}, + %{"tuple" => [":key1", nil]}, + %{"tuple" => [":partial_chain", "&:hackney_connect.partial_chain/1"]}, + %{"tuple" => [":regex1", "~r/https:\\/\\/example.com/"]}, + %{"tuple" => [":regex2", "~r/https:\\/\\/example.com/u"]}, + %{"tuple" => [":regex3", "~r/https:\\/\\/example.com/i"]}, + %{"tuple" => [":regex4", "~r/https:\\/\\/example.com/s"]}, + %{"tuple" => [":name", "Pleroma"]} + ], + "db" => [ + ":enabled", + ":method", + ":seconds_valid", + ":path", + ":key1", + ":partial_chain", + ":regex1", + ":regex2", + ":regex3", + ":regex4", + ":name" + ] + } + ], + "need_reboot" => false + } + end + + test "tuples with more than two values", %{conn: conn} do + conn = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/config", %{ + configs: [ + %{ + "group" => ":pleroma", + "key" => "Pleroma.Web.Endpoint.NotReal", + "value" => [ + %{ + "tuple" => [ + ":http", + [ + %{ + "tuple" => [ + ":key2", + [ + %{ + "tuple" => [ + ":_", + [ + %{ + "tuple" => [ + "/api/v1/streaming", + "Pleroma.Web.MastodonAPI.WebsocketHandler", + [] + ] + }, + %{ + "tuple" => [ + "/websocket", + "Phoenix.Endpoint.CowboyWebSocket", + %{ + "tuple" => [ + "Phoenix.Transports.WebSocket", + %{ + "tuple" => [ + "Pleroma.Web.Endpoint", + "Pleroma.Web.UserSocket", + [] + ] + } + ] + } + ] + }, + %{ + "tuple" => [ + ":_", + "Phoenix.Endpoint.Cowboy2Handler", + %{"tuple" => ["Pleroma.Web.Endpoint", []]} + ] + } + ] + ] + } + ] + ] + } + ] + ] + } + ] + } + ] + }) + + assert json_response_and_validate_schema(conn, 200) == %{ + "configs" => [ + %{ + "group" => ":pleroma", + "key" => "Pleroma.Web.Endpoint.NotReal", + "value" => [ + %{ + "tuple" => [ + ":http", + [ + %{ + "tuple" => [ + ":key2", + [ + %{ + "tuple" => [ + ":_", + [ + %{ + "tuple" => [ + "/api/v1/streaming", + "Pleroma.Web.MastodonAPI.WebsocketHandler", + [] + ] + }, + %{ + "tuple" => [ + "/websocket", + "Phoenix.Endpoint.CowboyWebSocket", + %{ + "tuple" => [ + "Phoenix.Transports.WebSocket", + %{ + "tuple" => [ + "Pleroma.Web.Endpoint", + "Pleroma.Web.UserSocket", + [] + ] + } + ] + } + ] + }, + %{ + "tuple" => [ + ":_", + "Phoenix.Endpoint.Cowboy2Handler", + %{"tuple" => ["Pleroma.Web.Endpoint", []]} + ] + } + ] + ] + } + ] + ] + } + ] + ] + } + ], + "db" => [":http"] + } + ], + "need_reboot" => false + } + end + + test "settings with nesting map", %{conn: conn} do + conn = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/config", %{ + configs: [ + %{ + "group" => ":pleroma", + "key" => ":key1", + "value" => [ + %{"tuple" => [":key2", "some_val"]}, + %{ + "tuple" => [ + ":key3", + %{ + ":max_options" => 20, + ":max_option_chars" => 200, + ":min_expiration" => 0, + ":max_expiration" => 31_536_000, + "nested" => %{ + ":max_options" => 20, + ":max_option_chars" => 200, + ":min_expiration" => 0, + ":max_expiration" => 31_536_000 + } + } + ] + } + ] + } + ] + }) + + assert json_response_and_validate_schema(conn, 200) == + %{ + "configs" => [ + %{ + "group" => ":pleroma", + "key" => ":key1", + "value" => [ + %{"tuple" => [":key2", "some_val"]}, + %{ + "tuple" => [ + ":key3", + %{ + ":max_expiration" => 31_536_000, + ":max_option_chars" => 200, + ":max_options" => 20, + ":min_expiration" => 0, + "nested" => %{ + ":max_expiration" => 31_536_000, + ":max_option_chars" => 200, + ":max_options" => 20, + ":min_expiration" => 0 + } + } + ] + } + ], + "db" => [":key2", ":key3"] + } + ], + "need_reboot" => false + } + end + + test "value as map", %{conn: conn} do + conn = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/config", %{ + configs: [ + %{ + "group" => ":pleroma", + "key" => ":key1", + "value" => %{"key" => "some_val"} + } + ] + }) + + assert json_response_and_validate_schema(conn, 200) == + %{ + "configs" => [ + %{ + "group" => ":pleroma", + "key" => ":key1", + "value" => %{"key" => "some_val"}, + "db" => [":key1"] + } + ], + "need_reboot" => false + } + end + + test "queues key as atom", %{conn: conn} do + conn = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/config", %{ + configs: [ + %{ + "group" => ":oban", + "key" => ":queues", + "value" => [ + %{"tuple" => [":federator_incoming", 50]}, + %{"tuple" => [":federator_outgoing", 50]}, + %{"tuple" => [":web_push", 50]}, + %{"tuple" => [":mailer", 10]}, + %{"tuple" => [":transmogrifier", 20]}, + %{"tuple" => [":scheduled_activities", 10]}, + %{"tuple" => [":background", 5]} + ] + } + ] + }) + + assert json_response_and_validate_schema(conn, 200) == %{ + "configs" => [ + %{ + "group" => ":oban", + "key" => ":queues", + "value" => [ + %{"tuple" => [":federator_incoming", 50]}, + %{"tuple" => [":federator_outgoing", 50]}, + %{"tuple" => [":web_push", 50]}, + %{"tuple" => [":mailer", 10]}, + %{"tuple" => [":transmogrifier", 20]}, + %{"tuple" => [":scheduled_activities", 10]}, + %{"tuple" => [":background", 5]} + ], + "db" => [ + ":federator_incoming", + ":federator_outgoing", + ":web_push", + ":mailer", + ":transmogrifier", + ":scheduled_activities", + ":background" + ] + } + ], + "need_reboot" => false + } + end + + test "delete part of settings by atom subkeys", %{conn: conn} do + insert(:config, + key: :keyaa1, + value: [subkey1: "val1", subkey2: "val2", subkey3: "val3"] + ) + + conn = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/config", %{ + configs: [ + %{ + group: ":pleroma", + key: ":keyaa1", + subkeys: [":subkey1", ":subkey3"], + delete: true + } + ] + }) + + assert json_response_and_validate_schema(conn, 200) == %{ + "configs" => [ + %{ + "group" => ":pleroma", + "key" => ":keyaa1", + "value" => [%{"tuple" => [":subkey2", "val2"]}], + "db" => [":subkey2"] + } + ], + "need_reboot" => false + } + end + + test "proxy tuple localhost", %{conn: conn} do + conn = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/config", %{ + configs: [ + %{ + group: ":pleroma", + key: ":http", + value: [ + %{"tuple" => [":proxy_url", %{"tuple" => [":socks5", "localhost", 1234]}]} + ] + } + ] + }) + + assert %{ + "configs" => [ + %{ + "group" => ":pleroma", + "key" => ":http", + "value" => value, + "db" => db + } + ] + } = json_response_and_validate_schema(conn, 200) + + assert %{"tuple" => [":proxy_url", %{"tuple" => [":socks5", "localhost", 1234]}]} in value + assert ":proxy_url" in db + end + + test "proxy tuple domain", %{conn: conn} do + conn = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/config", %{ + configs: [ + %{ + group: ":pleroma", + key: ":http", + value: [ + %{"tuple" => [":proxy_url", %{"tuple" => [":socks5", "domain.com", 1234]}]} + ] + } + ] + }) + + assert %{ + "configs" => [ + %{ + "group" => ":pleroma", + "key" => ":http", + "value" => value, + "db" => db + } + ] + } = json_response_and_validate_schema(conn, 200) + + assert %{"tuple" => [":proxy_url", %{"tuple" => [":socks5", "domain.com", 1234]}]} in value + assert ":proxy_url" in db + end + + test "proxy tuple ip", %{conn: conn} do + conn = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/config", %{ + configs: [ + %{ + group: ":pleroma", + key: ":http", + value: [ + %{"tuple" => [":proxy_url", %{"tuple" => [":socks5", "127.0.0.1", 1234]}]} + ] + } + ] + }) + + assert %{ + "configs" => [ + %{ + "group" => ":pleroma", + "key" => ":http", + "value" => value, + "db" => db + } + ] + } = json_response_and_validate_schema(conn, 200) + + assert %{"tuple" => [":proxy_url", %{"tuple" => [":socks5", "127.0.0.1", 1234]}]} in value + assert ":proxy_url" in db + end + + @tag capture_log: true + test "doesn't set keys not in the whitelist", %{conn: conn} do + clear_config(:database_config_whitelist, [ + {:pleroma, :key1}, + {:pleroma, :key2}, + {:pleroma, Pleroma.Captcha.NotReal}, + {:not_real} + ]) + + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/config", %{ + configs: [ + %{group: ":pleroma", key: ":key1", value: "value1"}, + %{group: ":pleroma", key: ":key2", value: "value2"}, + %{group: ":pleroma", key: ":key3", value: "value3"}, + %{group: ":pleroma", key: "Pleroma.Web.Endpoint.NotReal", value: "value4"}, + %{group: ":pleroma", key: "Pleroma.Captcha.NotReal", value: "value5"}, + %{group: ":not_real", key: ":anything", value: "value6"} + ] + }) + + assert Application.get_env(:pleroma, :key1) == "value1" + assert Application.get_env(:pleroma, :key2) == "value2" + assert Application.get_env(:pleroma, :key3) == nil + assert Application.get_env(:pleroma, Pleroma.Web.Endpoint.NotReal) == nil + assert Application.get_env(:pleroma, Pleroma.Captcha.NotReal) == "value5" + assert Application.get_env(:not_real, :anything) == "value6" + end + + test "args for Pleroma.Upload.Filter.Mogrify with custom tuples", %{conn: conn} do + clear_config(Pleroma.Upload.Filter.Mogrify) + + assert conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/config", %{ + configs: [ + %{ + group: ":pleroma", + key: "Pleroma.Upload.Filter.Mogrify", + value: [ + %{"tuple" => [":args", ["auto-orient", "strip"]]} + ] + } + ] + }) + |> json_response_and_validate_schema(200) == %{ + "configs" => [ + %{ + "group" => ":pleroma", + "key" => "Pleroma.Upload.Filter.Mogrify", + "value" => [ + %{"tuple" => [":args", ["auto-orient", "strip"]]} + ], + "db" => [":args"] + } + ], + "need_reboot" => false + } + + assert Config.get(Pleroma.Upload.Filter.Mogrify) == [args: ["auto-orient", "strip"]] + + assert conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/config", %{ + configs: [ + %{ + group: ":pleroma", + key: "Pleroma.Upload.Filter.Mogrify", + value: [ + %{ + "tuple" => [ + ":args", + [ + "auto-orient", + "strip", + "{\"implode\", \"1\"}", + "{\"resize\", \"3840x1080>\"}" + ] + ] + } + ] + } + ] + }) + |> json_response(200) == %{ + "configs" => [ + %{ + "group" => ":pleroma", + "key" => "Pleroma.Upload.Filter.Mogrify", + "value" => [ + %{ + "tuple" => [ + ":args", + [ + "auto-orient", + "strip", + "{\"implode\", \"1\"}", + "{\"resize\", \"3840x1080>\"}" + ] + ] + } + ], + "db" => [":args"] + } + ], + "need_reboot" => false + } + + assert Config.get(Pleroma.Upload.Filter.Mogrify) == [ + args: ["auto-orient", "strip", {"implode", "1"}, {"resize", "3840x1080>"}] + ] + end + end + + describe "GET /api/pleroma/admin/config/descriptions" do + test "structure", %{conn: conn} do + admin = insert(:user, is_admin: true) + + conn = + assign(conn, :user, admin) + |> get("/api/pleroma/admin/config/descriptions") + + assert [child | _others] = json_response_and_validate_schema(conn, 200) + + assert child["children"] + assert child["key"] + assert String.starts_with?(child["group"], ":") + assert child["description"] + end + + test "filters by database configuration whitelist", %{conn: conn} do + clear_config(:database_config_whitelist, [ + {:pleroma, :instance}, + {:pleroma, :activitypub}, + {:pleroma, Pleroma.Upload}, + {:esshd} + ]) + + admin = insert(:user, is_admin: true) + + conn = + assign(conn, :user, admin) + |> get("/api/pleroma/admin/config/descriptions") + + children = json_response_and_validate_schema(conn, 200) + + assert length(children) == 4 + + assert Enum.count(children, fn c -> c["group"] == ":pleroma" end) == 3 + + instance = Enum.find(children, fn c -> c["key"] == ":instance" end) + assert instance["children"] + + activitypub = Enum.find(children, fn c -> c["key"] == ":activitypub" end) + assert activitypub["children"] + + web_endpoint = Enum.find(children, fn c -> c["key"] == "Pleroma.Upload" end) + assert web_endpoint["children"] + + esshd = Enum.find(children, fn c -> c["group"] == ":esshd" end) + assert esshd["children"] + end + end +end diff --git a/test/web/admin_api/controllers/invite_controller_test.exs b/test/web/admin_api/controllers/invite_controller_test.exs new file mode 100644 index 000000000..ab186c5e7 --- /dev/null +++ b/test/web/admin_api/controllers/invite_controller_test.exs @@ -0,0 +1,281 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.AdminAPI.InviteControllerTest do + use Pleroma.Web.ConnCase, async: true + + import Pleroma.Factory + + alias Pleroma.Config + alias Pleroma.Repo + alias Pleroma.UserInviteToken + + setup do + admin = insert(:user, is_admin: true) + token = insert(:oauth_admin_token, user: admin) + + conn = + build_conn() + |> assign(:user, admin) + |> assign(:token, token) + + {:ok, %{admin: admin, token: token, conn: conn}} + end + + describe "POST /api/pleroma/admin/users/email_invite, with valid config" do + setup do: clear_config([:instance, :registrations_open], false) + setup do: clear_config([:instance, :invites_enabled], true) + + test "sends invitation and returns 204", %{admin: admin, conn: conn} do + recipient_email = "foo@bar.com" + recipient_name = "J. D." + + conn = + conn + |> put_req_header("content-type", "application/json;charset=utf-8") + |> post("/api/pleroma/admin/users/email_invite", %{ + email: recipient_email, + name: recipient_name + }) + + assert json_response_and_validate_schema(conn, :no_content) + + token_record = List.last(Repo.all(Pleroma.UserInviteToken)) + assert token_record + refute token_record.used + + notify_email = Config.get([:instance, :notify_email]) + instance_name = Config.get([:instance, :name]) + + email = + Pleroma.Emails.UserEmail.user_invitation_email( + admin, + token_record, + recipient_email, + recipient_name + ) + + Swoosh.TestAssertions.assert_email_sent( + from: {instance_name, notify_email}, + to: {recipient_name, recipient_email}, + html_body: email.html_body + ) + end + + test "it returns 403 if requested by a non-admin" do + non_admin_user = insert(:user) + token = insert(:oauth_token, user: non_admin_user) + + conn = + build_conn() + |> assign(:user, non_admin_user) + |> assign(:token, token) + |> put_req_header("content-type", "application/json;charset=utf-8") + |> post("/api/pleroma/admin/users/email_invite", %{ + email: "foo@bar.com", + name: "JD" + }) + + assert json_response(conn, :forbidden) + end + + test "email with +", %{conn: conn, admin: admin} do + recipient_email = "foo+bar@baz.com" + + conn + |> put_req_header("content-type", "application/json;charset=utf-8") + |> post("/api/pleroma/admin/users/email_invite", %{email: recipient_email}) + |> json_response_and_validate_schema(:no_content) + + token_record = + Pleroma.UserInviteToken + |> Repo.all() + |> List.last() + + assert token_record + refute token_record.used + + notify_email = Config.get([:instance, :notify_email]) + instance_name = Config.get([:instance, :name]) + + email = + Pleroma.Emails.UserEmail.user_invitation_email( + admin, + token_record, + recipient_email + ) + + Swoosh.TestAssertions.assert_email_sent( + from: {instance_name, notify_email}, + to: recipient_email, + html_body: email.html_body + ) + end + end + + describe "POST /api/pleroma/admin/users/email_invite, with invalid config" do + setup do: clear_config([:instance, :registrations_open]) + setup do: clear_config([:instance, :invites_enabled]) + + test "it returns 500 if `invites_enabled` is not enabled", %{conn: conn} do + Config.put([:instance, :registrations_open], false) + Config.put([:instance, :invites_enabled], false) + + conn = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/users/email_invite", %{ + email: "foo@bar.com", + name: "JD" + }) + + assert json_response_and_validate_schema(conn, :bad_request) == + %{ + "error" => + "To send invites you need to set the `invites_enabled` option to true." + } + end + + test "it returns 500 if `registrations_open` is enabled", %{conn: conn} do + Config.put([:instance, :registrations_open], true) + Config.put([:instance, :invites_enabled], true) + + conn = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/users/email_invite", %{ + email: "foo@bar.com", + name: "JD" + }) + + assert json_response_and_validate_schema(conn, :bad_request) == + %{ + "error" => + "To send invites you need to set the `registrations_open` option to false." + } + end + end + + describe "POST /api/pleroma/admin/users/invite_token" do + test "without options", %{conn: conn} do + conn = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/users/invite_token") + + invite_json = json_response_and_validate_schema(conn, 200) + invite = UserInviteToken.find_by_token!(invite_json["token"]) + refute invite.used + refute invite.expires_at + refute invite.max_use + assert invite.invite_type == "one_time" + end + + test "with expires_at", %{conn: conn} do + conn = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/users/invite_token", %{ + "expires_at" => Date.to_string(Date.utc_today()) + }) + + invite_json = json_response_and_validate_schema(conn, 200) + invite = UserInviteToken.find_by_token!(invite_json["token"]) + + refute invite.used + assert invite.expires_at == Date.utc_today() + refute invite.max_use + assert invite.invite_type == "date_limited" + end + + test "with max_use", %{conn: conn} do + conn = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/users/invite_token", %{"max_use" => 150}) + + invite_json = json_response_and_validate_schema(conn, 200) + invite = UserInviteToken.find_by_token!(invite_json["token"]) + refute invite.used + refute invite.expires_at + assert invite.max_use == 150 + assert invite.invite_type == "reusable" + end + + test "with max use and expires_at", %{conn: conn} do + conn = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/users/invite_token", %{ + "max_use" => 150, + "expires_at" => Date.to_string(Date.utc_today()) + }) + + invite_json = json_response_and_validate_schema(conn, 200) + invite = UserInviteToken.find_by_token!(invite_json["token"]) + refute invite.used + assert invite.expires_at == Date.utc_today() + assert invite.max_use == 150 + assert invite.invite_type == "reusable_date_limited" + end + end + + describe "GET /api/pleroma/admin/users/invites" do + test "no invites", %{conn: conn} do + conn = get(conn, "/api/pleroma/admin/users/invites") + + assert json_response_and_validate_schema(conn, 200) == %{"invites" => []} + end + + test "with invite", %{conn: conn} do + {:ok, invite} = UserInviteToken.create_invite() + + conn = get(conn, "/api/pleroma/admin/users/invites") + + assert json_response_and_validate_schema(conn, 200) == %{ + "invites" => [ + %{ + "expires_at" => nil, + "id" => invite.id, + "invite_type" => "one_time", + "max_use" => nil, + "token" => invite.token, + "used" => false, + "uses" => 0 + } + ] + } + end + end + + describe "POST /api/pleroma/admin/users/revoke_invite" do + test "with token", %{conn: conn} do + {:ok, invite} = UserInviteToken.create_invite() + + conn = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/users/revoke_invite", %{"token" => invite.token}) + + assert json_response_and_validate_schema(conn, 200) == %{ + "expires_at" => nil, + "id" => invite.id, + "invite_type" => "one_time", + "max_use" => nil, + "token" => invite.token, + "used" => true, + "uses" => 0 + } + end + + test "with invalid token", %{conn: conn} do + conn = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/users/revoke_invite", %{"token" => "foo"}) + + assert json_response_and_validate_schema(conn, :not_found) == %{"error" => "Not found"} + end + end +end diff --git a/test/web/admin_api/controllers/media_proxy_cache_controller_test.exs b/test/web/admin_api/controllers/media_proxy_cache_controller_test.exs new file mode 100644 index 000000000..5ab6cb78a --- /dev/null +++ b/test/web/admin_api/controllers/media_proxy_cache_controller_test.exs @@ -0,0 +1,145 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.AdminAPI.MediaProxyCacheControllerTest do + use Pleroma.Web.ConnCase + + import Pleroma.Factory + import Mock + + alias Pleroma.Web.MediaProxy + + setup do: clear_config([:media_proxy]) + + setup do + on_exit(fn -> Cachex.clear(:banned_urls_cache) end) + end + + setup do + admin = insert(:user, is_admin: true) + token = insert(:oauth_admin_token, user: admin) + + conn = + build_conn() + |> assign(:user, admin) + |> assign(:token, token) + + Config.put([:media_proxy, :enabled], true) + Config.put([:media_proxy, :invalidation, :enabled], true) + Config.put([:media_proxy, :invalidation, :provider], MediaProxy.Invalidation.Script) + + {:ok, %{admin: admin, token: token, conn: conn}} + end + + describe "GET /api/pleroma/admin/media_proxy_caches" do + test "shows banned MediaProxy URLs", %{conn: conn} do + MediaProxy.put_in_banned_urls([ + "http://localhost:4001/media/a688346.jpg", + "http://localhost:4001/media/fb1f4d.jpg" + ]) + + MediaProxy.put_in_banned_urls("http://localhost:4001/media/gb1f44.jpg") + MediaProxy.put_in_banned_urls("http://localhost:4001/media/tb13f47.jpg") + MediaProxy.put_in_banned_urls("http://localhost:4001/media/wb1f46.jpg") + + response = + conn + |> get("/api/pleroma/admin/media_proxy_caches?page_size=2") + |> json_response_and_validate_schema(200) + + assert response["urls"] == [ + "http://localhost:4001/media/fb1f4d.jpg", + "http://localhost:4001/media/a688346.jpg" + ] + + response = + conn + |> get("/api/pleroma/admin/media_proxy_caches?page_size=2&page=2") + |> json_response_and_validate_schema(200) + + assert response["urls"] == [ + "http://localhost:4001/media/gb1f44.jpg", + "http://localhost:4001/media/tb13f47.jpg" + ] + + response = + conn + |> get("/api/pleroma/admin/media_proxy_caches?page_size=2&page=3") + |> json_response_and_validate_schema(200) + + assert response["urls"] == ["http://localhost:4001/media/wb1f46.jpg"] + end + end + + describe "POST /api/pleroma/admin/media_proxy_caches/delete" do + test "deleted MediaProxy URLs from banned", %{conn: conn} do + MediaProxy.put_in_banned_urls([ + "http://localhost:4001/media/a688346.jpg", + "http://localhost:4001/media/fb1f4d.jpg" + ]) + + response = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/media_proxy_caches/delete", %{ + urls: ["http://localhost:4001/media/a688346.jpg"] + }) + |> json_response_and_validate_schema(200) + + assert response["urls"] == ["http://localhost:4001/media/a688346.jpg"] + refute MediaProxy.in_banned_urls("http://localhost:4001/media/a688346.jpg") + assert MediaProxy.in_banned_urls("http://localhost:4001/media/fb1f4d.jpg") + end + end + + describe "POST /api/pleroma/admin/media_proxy_caches/purge" do + test "perform invalidates cache of MediaProxy", %{conn: conn} do + urls = [ + "http://example.com/media/a688346.jpg", + "http://example.com/media/fb1f4d.jpg" + ] + + with_mocks [ + {MediaProxy.Invalidation.Script, [], + [ + purge: fn _, _ -> {"ok", 0} end + ]} + ] do + response = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/media_proxy_caches/purge", %{urls: urls, ban: false}) + |> json_response_and_validate_schema(200) + + assert response["urls"] == urls + + refute MediaProxy.in_banned_urls("http://example.com/media/a688346.jpg") + refute MediaProxy.in_banned_urls("http://example.com/media/fb1f4d.jpg") + end + end + + test "perform invalidates cache of MediaProxy and adds url to banned", %{conn: conn} do + urls = [ + "http://example.com/media/a688346.jpg", + "http://example.com/media/fb1f4d.jpg" + ] + + with_mocks [{MediaProxy.Invalidation.Script, [], [purge: fn _, _ -> {"ok", 0} end]}] do + response = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/media_proxy_caches/purge", %{ + urls: urls, + ban: true + }) + |> json_response_and_validate_schema(200) + + assert response["urls"] == urls + + assert MediaProxy.in_banned_urls("http://example.com/media/a688346.jpg") + assert MediaProxy.in_banned_urls("http://example.com/media/fb1f4d.jpg") + end + end + end +end diff --git a/test/web/admin_api/controllers/oauth_app_controller_test.exs b/test/web/admin_api/controllers/oauth_app_controller_test.exs new file mode 100644 index 000000000..ed7c4172c --- /dev/null +++ b/test/web/admin_api/controllers/oauth_app_controller_test.exs @@ -0,0 +1,220 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.AdminAPI.OAuthAppControllerTest do + use Pleroma.Web.ConnCase, async: true + use Oban.Testing, repo: Pleroma.Repo + + import Pleroma.Factory + + alias Pleroma.Config + alias Pleroma.Web + + setup do + admin = insert(:user, is_admin: true) + token = insert(:oauth_admin_token, user: admin) + + conn = + build_conn() + |> assign(:user, admin) + |> assign(:token, token) + + {:ok, %{admin: admin, token: token, conn: conn}} + end + + describe "POST /api/pleroma/admin/oauth_app" do + test "errors", %{conn: conn} do + response = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/oauth_app", %{}) + |> json_response_and_validate_schema(400) + + assert %{ + "error" => "Missing field: name. Missing field: redirect_uris." + } = response + end + + test "success", %{conn: conn} do + base_url = Web.base_url() + app_name = "Trusted app" + + response = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/oauth_app", %{ + name: app_name, + redirect_uris: base_url + }) + |> json_response_and_validate_schema(200) + + assert %{ + "client_id" => _, + "client_secret" => _, + "name" => ^app_name, + "redirect_uri" => ^base_url, + "trusted" => false + } = response + end + + test "with trusted", %{conn: conn} do + base_url = Web.base_url() + app_name = "Trusted app" + + response = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/oauth_app", %{ + name: app_name, + redirect_uris: base_url, + trusted: true + }) + |> json_response_and_validate_schema(200) + + assert %{ + "client_id" => _, + "client_secret" => _, + "name" => ^app_name, + "redirect_uri" => ^base_url, + "trusted" => true + } = response + end + end + + describe "GET /api/pleroma/admin/oauth_app" do + setup do + app = insert(:oauth_app) + {:ok, app: app} + end + + test "list", %{conn: conn} do + response = + conn + |> get("/api/pleroma/admin/oauth_app") + |> json_response_and_validate_schema(200) + + assert %{"apps" => apps, "count" => count, "page_size" => _} = response + + assert length(apps) == count + end + + test "with page size", %{conn: conn} do + insert(:oauth_app) + page_size = 1 + + response = + conn + |> get("/api/pleroma/admin/oauth_app?page_size=#{page_size}") + |> json_response_and_validate_schema(200) + + assert %{"apps" => apps, "count" => _, "page_size" => ^page_size} = response + + assert length(apps) == page_size + end + + test "search by client name", %{conn: conn, app: app} do + response = + conn + |> get("/api/pleroma/admin/oauth_app?name=#{app.client_name}") + |> json_response_and_validate_schema(200) + + assert %{"apps" => [returned], "count" => _, "page_size" => _} = response + + assert returned["client_id"] == app.client_id + assert returned["name"] == app.client_name + end + + test "search by client id", %{conn: conn, app: app} do + response = + conn + |> get("/api/pleroma/admin/oauth_app?client_id=#{app.client_id}") + |> json_response_and_validate_schema(200) + + assert %{"apps" => [returned], "count" => _, "page_size" => _} = response + + assert returned["client_id"] == app.client_id + assert returned["name"] == app.client_name + end + + test "only trusted", %{conn: conn} do + app = insert(:oauth_app, trusted: true) + + response = + conn + |> get("/api/pleroma/admin/oauth_app?trusted=true") + |> json_response_and_validate_schema(200) + + assert %{"apps" => [returned], "count" => _, "page_size" => _} = response + + assert returned["client_id"] == app.client_id + assert returned["name"] == app.client_name + end + end + + describe "DELETE /api/pleroma/admin/oauth_app/:id" do + test "with id", %{conn: conn} do + app = insert(:oauth_app) + + response = + conn + |> delete("/api/pleroma/admin/oauth_app/" <> to_string(app.id)) + |> json_response_and_validate_schema(:no_content) + + assert response == "" + end + + test "with non existance id", %{conn: conn} do + response = + conn + |> delete("/api/pleroma/admin/oauth_app/0") + |> json_response_and_validate_schema(:bad_request) + + assert response == "" + end + end + + describe "PATCH /api/pleroma/admin/oauth_app/:id" do + test "with id", %{conn: conn} do + app = insert(:oauth_app) + + name = "another name" + url = "https://example.com" + scopes = ["admin"] + id = app.id + website = "http://website.com" + + response = + conn + |> put_req_header("content-type", "application/json") + |> patch("/api/pleroma/admin/oauth_app/#{id}", %{ + name: name, + trusted: true, + redirect_uris: url, + scopes: scopes, + website: website + }) + |> json_response_and_validate_schema(200) + + assert %{ + "client_id" => _, + "client_secret" => _, + "id" => ^id, + "name" => ^name, + "redirect_uri" => ^url, + "trusted" => true, + "website" => ^website + } = response + end + + test "without id", %{conn: conn} do + response = + conn + |> put_req_header("content-type", "application/json") + |> patch("/api/pleroma/admin/oauth_app/0") + |> json_response_and_validate_schema(:bad_request) + + assert response == "" + end + end +end diff --git a/test/web/admin_api/controllers/relay_controller_test.exs b/test/web/admin_api/controllers/relay_controller_test.exs new file mode 100644 index 000000000..64086adc5 --- /dev/null +++ b/test/web/admin_api/controllers/relay_controller_test.exs @@ -0,0 +1,92 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.AdminAPI.RelayControllerTest do + use Pleroma.Web.ConnCase + + import Pleroma.Factory + + alias Pleroma.Config + alias Pleroma.ModerationLog + alias Pleroma.Repo + alias Pleroma.User + + setup_all do + Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end) + + :ok + end + + setup do + admin = insert(:user, is_admin: true) + token = insert(:oauth_admin_token, user: admin) + + conn = + build_conn() + |> assign(:user, admin) + |> assign(:token, token) + + {:ok, %{admin: admin, token: token, conn: conn}} + end + + describe "relays" do + test "POST /relay", %{conn: conn, admin: admin} do + conn = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/relay", %{ + relay_url: "http://mastodon.example.org/users/admin" + }) + + assert json_response_and_validate_schema(conn, 200) == + "http://mastodon.example.org/users/admin" + + log_entry = Repo.one(ModerationLog) + + assert ModerationLog.get_log_entry_message(log_entry) == + "@#{admin.nickname} followed relay: http://mastodon.example.org/users/admin" + end + + test "GET /relay", %{conn: conn} do + relay_user = Pleroma.Web.ActivityPub.Relay.get_actor() + + ["http://mastodon.example.org/users/admin", "https://mstdn.io/users/mayuutann"] + |> Enum.each(fn ap_id -> + {:ok, user} = User.get_or_fetch_by_ap_id(ap_id) + User.follow(relay_user, user) + end) + + conn = get(conn, "/api/pleroma/admin/relay") + + assert json_response_and_validate_schema(conn, 200)["relays"] -- + ["mastodon.example.org", "mstdn.io"] == [] + end + + test "DELETE /relay", %{conn: conn, admin: admin} do + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/relay", %{ + relay_url: "http://mastodon.example.org/users/admin" + }) + + conn = + conn + |> put_req_header("content-type", "application/json") + |> delete("/api/pleroma/admin/relay", %{ + relay_url: "http://mastodon.example.org/users/admin" + }) + + assert json_response_and_validate_schema(conn, 200) == + "http://mastodon.example.org/users/admin" + + [log_entry_one, log_entry_two] = Repo.all(ModerationLog) + + assert ModerationLog.get_log_entry_message(log_entry_one) == + "@#{admin.nickname} followed relay: http://mastodon.example.org/users/admin" + + assert ModerationLog.get_log_entry_message(log_entry_two) == + "@#{admin.nickname} unfollowed relay: http://mastodon.example.org/users/admin" + end + end +end diff --git a/test/web/admin_api/controllers/report_controller_test.exs b/test/web/admin_api/controllers/report_controller_test.exs new file mode 100644 index 000000000..940bce340 --- /dev/null +++ b/test/web/admin_api/controllers/report_controller_test.exs @@ -0,0 +1,374 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.AdminAPI.ReportControllerTest do + use Pleroma.Web.ConnCase + + import Pleroma.Factory + + alias Pleroma.Activity + alias Pleroma.Config + alias Pleroma.ModerationLog + alias Pleroma.Repo + alias Pleroma.ReportNote + alias Pleroma.Web.CommonAPI + + setup do + admin = insert(:user, is_admin: true) + token = insert(:oauth_admin_token, user: admin) + + conn = + build_conn() + |> assign(:user, admin) + |> assign(:token, token) + + {:ok, %{admin: admin, token: token, conn: conn}} + end + + describe "GET /api/pleroma/admin/reports/:id" do + test "returns report by its id", %{conn: conn} do + [reporter, target_user] = insert_pair(:user) + activity = insert(:note_activity, user: target_user) + + {:ok, %{id: report_id}} = + CommonAPI.report(reporter, %{ + account_id: target_user.id, + comment: "I feel offended", + status_ids: [activity.id] + }) + + response = + conn + |> get("/api/pleroma/admin/reports/#{report_id}") + |> json_response_and_validate_schema(:ok) + + assert response["id"] == report_id + end + + test "returns 404 when report id is invalid", %{conn: conn} do + conn = get(conn, "/api/pleroma/admin/reports/test") + + assert json_response_and_validate_schema(conn, :not_found) == %{"error" => "Not found"} + end + end + + describe "PATCH /api/pleroma/admin/reports" do + setup do + [reporter, target_user] = insert_pair(:user) + activity = insert(:note_activity, user: target_user) + + {:ok, %{id: report_id}} = + CommonAPI.report(reporter, %{ + account_id: target_user.id, + comment: "I feel offended", + status_ids: [activity.id] + }) + + {:ok, %{id: second_report_id}} = + CommonAPI.report(reporter, %{ + account_id: target_user.id, + comment: "I feel very offended", + status_ids: [activity.id] + }) + + %{ + id: report_id, + second_report_id: second_report_id + } + end + + test "requires admin:write:reports scope", %{conn: conn, id: id, admin: admin} do + read_token = insert(:oauth_token, user: admin, scopes: ["admin:read"]) + write_token = insert(:oauth_token, user: admin, scopes: ["admin:write:reports"]) + + response = + conn + |> assign(:token, read_token) + |> put_req_header("content-type", "application/json") + |> patch("/api/pleroma/admin/reports", %{ + "reports" => [%{"state" => "resolved", "id" => id}] + }) + |> json_response_and_validate_schema(403) + + assert response == %{ + "error" => "Insufficient permissions: admin:write:reports." + } + + conn + |> assign(:token, write_token) + |> put_req_header("content-type", "application/json") + |> patch("/api/pleroma/admin/reports", %{ + "reports" => [%{"state" => "resolved", "id" => id}] + }) + |> json_response_and_validate_schema(:no_content) + end + + test "mark report as resolved", %{conn: conn, id: id, admin: admin} do + conn + |> put_req_header("content-type", "application/json") + |> patch("/api/pleroma/admin/reports", %{ + "reports" => [ + %{"state" => "resolved", "id" => id} + ] + }) + |> json_response_and_validate_schema(:no_content) + + activity = Activity.get_by_id(id) + assert activity.data["state"] == "resolved" + + log_entry = Repo.one(ModerationLog) + + assert ModerationLog.get_log_entry_message(log_entry) == + "@#{admin.nickname} updated report ##{id} with 'resolved' state" + end + + test "closes report", %{conn: conn, id: id, admin: admin} do + conn + |> put_req_header("content-type", "application/json") + |> patch("/api/pleroma/admin/reports", %{ + "reports" => [ + %{"state" => "closed", "id" => id} + ] + }) + |> json_response_and_validate_schema(:no_content) + + activity = Activity.get_by_id(id) + assert activity.data["state"] == "closed" + + log_entry = Repo.one(ModerationLog) + + assert ModerationLog.get_log_entry_message(log_entry) == + "@#{admin.nickname} updated report ##{id} with 'closed' state" + end + + test "returns 400 when state is unknown", %{conn: conn, id: id} do + conn = + conn + |> put_req_header("content-type", "application/json") + |> patch("/api/pleroma/admin/reports", %{ + "reports" => [ + %{"state" => "test", "id" => id} + ] + }) + + assert "Unsupported state" = + hd(json_response_and_validate_schema(conn, :bad_request))["error"] + end + + test "returns 404 when report is not exist", %{conn: conn} do + conn = + conn + |> put_req_header("content-type", "application/json") + |> patch("/api/pleroma/admin/reports", %{ + "reports" => [ + %{"state" => "closed", "id" => "test"} + ] + }) + + assert hd(json_response_and_validate_schema(conn, :bad_request))["error"] == "not_found" + end + + test "updates state of multiple reports", %{ + conn: conn, + id: id, + admin: admin, + second_report_id: second_report_id + } do + conn + |> put_req_header("content-type", "application/json") + |> patch("/api/pleroma/admin/reports", %{ + "reports" => [ + %{"state" => "resolved", "id" => id}, + %{"state" => "closed", "id" => second_report_id} + ] + }) + |> json_response_and_validate_schema(:no_content) + + activity = Activity.get_by_id(id) + second_activity = Activity.get_by_id(second_report_id) + assert activity.data["state"] == "resolved" + assert second_activity.data["state"] == "closed" + + [first_log_entry, second_log_entry] = Repo.all(ModerationLog) + + assert ModerationLog.get_log_entry_message(first_log_entry) == + "@#{admin.nickname} updated report ##{id} with 'resolved' state" + + assert ModerationLog.get_log_entry_message(second_log_entry) == + "@#{admin.nickname} updated report ##{second_report_id} with 'closed' state" + end + end + + describe "GET /api/pleroma/admin/reports" do + test "returns empty response when no reports created", %{conn: conn} do + response = + conn + |> get("/api/pleroma/admin/reports") + |> json_response_and_validate_schema(:ok) + + assert Enum.empty?(response["reports"]) + assert response["total"] == 0 + end + + test "returns reports", %{conn: conn} do + [reporter, target_user] = insert_pair(:user) + activity = insert(:note_activity, user: target_user) + + {:ok, %{id: report_id}} = + CommonAPI.report(reporter, %{ + account_id: target_user.id, + comment: "I feel offended", + status_ids: [activity.id] + }) + + response = + conn + |> get("/api/pleroma/admin/reports") + |> json_response_and_validate_schema(:ok) + + [report] = response["reports"] + + assert length(response["reports"]) == 1 + assert report["id"] == report_id + + assert response["total"] == 1 + end + + test "returns reports with specified state", %{conn: conn} do + [reporter, target_user] = insert_pair(:user) + activity = insert(:note_activity, user: target_user) + + {:ok, %{id: first_report_id}} = + CommonAPI.report(reporter, %{ + account_id: target_user.id, + comment: "I feel offended", + status_ids: [activity.id] + }) + + {:ok, %{id: second_report_id}} = + CommonAPI.report(reporter, %{ + account_id: target_user.id, + comment: "I don't like this user" + }) + + CommonAPI.update_report_state(second_report_id, "closed") + + response = + conn + |> get("/api/pleroma/admin/reports?state=open") + |> json_response_and_validate_schema(:ok) + + assert [open_report] = response["reports"] + + assert length(response["reports"]) == 1 + assert open_report["id"] == first_report_id + + assert response["total"] == 1 + + response = + conn + |> get("/api/pleroma/admin/reports?state=closed") + |> json_response_and_validate_schema(:ok) + + assert [closed_report] = response["reports"] + + assert length(response["reports"]) == 1 + assert closed_report["id"] == second_report_id + + assert response["total"] == 1 + + assert %{"total" => 0, "reports" => []} == + conn + |> get("/api/pleroma/admin/reports?state=resolved", %{ + "" => "" + }) + |> json_response_and_validate_schema(:ok) + end + + test "returns 403 when requested by a non-admin" do + user = insert(:user) + token = insert(:oauth_token, user: user) + + conn = + build_conn() + |> assign(:user, user) + |> assign(:token, token) + |> get("/api/pleroma/admin/reports") + + assert json_response(conn, :forbidden) == + %{"error" => "User is not an admin or OAuth admin scope is not granted."} + end + + test "returns 403 when requested by anonymous" do + conn = get(build_conn(), "/api/pleroma/admin/reports") + + assert json_response(conn, :forbidden) == %{ + "error" => "Invalid credentials." + } + end + end + + describe "POST /api/pleroma/admin/reports/:id/notes" do + setup %{conn: conn, admin: admin} do + [reporter, target_user] = insert_pair(:user) + activity = insert(:note_activity, user: target_user) + + {:ok, %{id: report_id}} = + CommonAPI.report(reporter, %{ + account_id: target_user.id, + comment: "I feel offended", + status_ids: [activity.id] + }) + + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/reports/#{report_id}/notes", %{ + content: "this is disgusting!" + }) + + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/reports/#{report_id}/notes", %{ + content: "this is disgusting2!" + }) + + %{ + admin_id: admin.id, + report_id: report_id + } + end + + test "it creates report note", %{admin_id: admin_id, report_id: report_id} do + assert [note, _] = Repo.all(ReportNote) + + assert %{ + activity_id: ^report_id, + content: "this is disgusting!", + user_id: ^admin_id + } = note + end + + test "it returns reports with notes", %{conn: conn, admin: admin} do + conn = get(conn, "/api/pleroma/admin/reports") + + response = json_response_and_validate_schema(conn, 200) + notes = hd(response["reports"])["notes"] + [note, _] = notes + + assert note["user"]["nickname"] == admin.nickname + assert note["content"] == "this is disgusting!" + assert note["created_at"] + assert response["total"] == 1 + end + + test "it deletes the note", %{conn: conn, report_id: report_id} do + assert ReportNote |> Repo.all() |> length() == 2 + assert [note, _] = Repo.all(ReportNote) + + delete(conn, "/api/pleroma/admin/reports/#{report_id}/notes/#{note.id}") + + assert ReportNote |> Repo.all() |> length() == 1 + end + end +end diff --git a/test/web/admin_api/controllers/status_controller_test.exs b/test/web/admin_api/controllers/status_controller_test.exs index 124d8dc2e..eff78fb0a 100644 --- a/test/web/admin_api/controllers/status_controller_test.exs +++ b/test/web/admin_api/controllers/status_controller_test.exs @@ -42,6 +42,14 @@ test "shows activity", %{conn: conn} do |> json_response_and_validate_schema(200) assert response["id"] == activity.id + + account = response["account"] + actor = User.get_by_ap_id(activity.actor) + + assert account["id"] == actor.id + assert account["nickname"] == actor.nickname + assert account["deactivated"] == actor.deactivated + assert account["confirmation_pending"] == actor.confirmation_pending end end diff --git a/test/web/common_api/common_api_test.exs b/test/web/common_api/common_api_test.exs index 2291f76dd..fc3bb845d 100644 --- a/test/web/common_api/common_api_test.exs +++ b/test/web/common_api/common_api_test.exs @@ -5,7 +5,9 @@ defmodule Pleroma.Web.CommonAPITest do use Pleroma.DataCase alias Pleroma.Activity + alias Pleroma.Chat alias Pleroma.Conversation.Participation + alias Pleroma.Notification alias Pleroma.Object alias Pleroma.User alias Pleroma.Web.ActivityPub.ActivityPub @@ -23,6 +25,196 @@ defmodule Pleroma.Web.CommonAPITest do setup do: clear_config([:instance, :limit]) setup do: clear_config([:instance, :max_pinned_statuses]) + describe "blocking" do + setup do + blocker = insert(:user) + blocked = insert(:user) + User.follow(blocker, blocked) + User.follow(blocked, blocker) + %{blocker: blocker, blocked: blocked} + end + + test "it blocks and federates", %{blocker: blocker, blocked: blocked} do + clear_config([:instance, :federating], true) + + with_mock Pleroma.Web.Federator, + publish: fn _ -> nil end do + assert {:ok, block} = CommonAPI.block(blocker, blocked) + + assert block.local + assert User.blocks?(blocker, blocked) + refute User.following?(blocker, blocked) + refute User.following?(blocked, blocker) + + assert called(Pleroma.Web.Federator.publish(block)) + end + end + + test "it blocks and does not federate if outgoing blocks are disabled", %{ + blocker: blocker, + blocked: blocked + } do + clear_config([:instance, :federating], true) + clear_config([:activitypub, :outgoing_blocks], false) + + with_mock Pleroma.Web.Federator, + publish: fn _ -> nil end do + assert {:ok, block} = CommonAPI.block(blocker, blocked) + + assert block.local + assert User.blocks?(blocker, blocked) + refute User.following?(blocker, blocked) + refute User.following?(blocked, blocker) + + refute called(Pleroma.Web.Federator.publish(block)) + end + end + end + + describe "posting chat messages" do + setup do: clear_config([:instance, :chat_limit]) + + test "it posts a chat message without content but with an attachment" do + author = insert(:user) + recipient = insert(:user) + + file = %Plug.Upload{ + content_type: "image/jpg", + path: Path.absname("test/fixtures/image.jpg"), + filename: "an_image.jpg" + } + + {:ok, upload} = ActivityPub.upload(file, actor: author.ap_id) + + with_mocks([ + { + Pleroma.Web.Streamer, + [], + [ + stream: fn _, _ -> + nil + end + ] + }, + { + Pleroma.Web.Push, + [], + [ + send: fn _ -> nil end + ] + } + ]) do + {:ok, activity} = + CommonAPI.post_chat_message( + author, + recipient, + nil, + media_id: upload.id + ) + + notification = + Notification.for_user_and_activity(recipient, activity) + |> Repo.preload(:activity) + + assert called(Pleroma.Web.Push.send(notification)) + assert called(Pleroma.Web.Streamer.stream(["user", "user:notification"], notification)) + assert called(Pleroma.Web.Streamer.stream(["user", "user:pleroma_chat"], :_)) + + assert activity + end + end + + test "it adds html newlines" do + author = insert(:user) + recipient = insert(:user) + + other_user = insert(:user) + + {:ok, activity} = + CommonAPI.post_chat_message( + author, + recipient, + "uguu\nuguuu" + ) + + assert other_user.ap_id not in activity.recipients + + object = Object.normalize(activity, false) + + assert object.data["content"] == "uguu
    uguuu" + end + + test "it linkifies" do + author = insert(:user) + recipient = insert(:user) + + other_user = insert(:user) + + {:ok, activity} = + CommonAPI.post_chat_message( + author, + recipient, + "https://example.org is the site of @#{other_user.nickname} #2hu" + ) + + assert other_user.ap_id not in activity.recipients + + object = Object.normalize(activity, false) + + assert object.data["content"] == + "https://example.org is the site of @#{other_user.nickname} #2hu" + end + + test "it posts a chat message" do + author = insert(:user) + recipient = insert(:user) + + {:ok, activity} = + CommonAPI.post_chat_message( + author, + recipient, + "a test message :firefox:" + ) + + assert activity.data["type"] == "Create" + assert activity.local + object = Object.normalize(activity) + + assert object.data["type"] == "ChatMessage" + assert object.data["to"] == [recipient.ap_id] + + assert object.data["content"] == + "a test message <script>alert('uuu')</script> :firefox:" + + assert object.data["emoji"] == %{ + "firefox" => "http://localhost:4001/emoji/Firefox.gif" + } + + assert Chat.get(author.id, recipient.ap_id) + assert Chat.get(recipient.id, author.ap_id) + + assert :ok == Pleroma.Web.Federator.perform(:publish, activity) + end + + test "it reject messages over the local limit" do + Pleroma.Config.put([:instance, :chat_limit], 2) + + author = insert(:user) + recipient = insert(:user) + + {:error, message} = + CommonAPI.post_chat_message( + author, + recipient, + "123" + ) + + assert message == :content_too_long + end + end + describe "unblocking" do test "it works even without an existing block activity" do blocked = insert(:user) diff --git a/test/web/fallback_test.exs b/test/web/fallback_test.exs index 3919ef93a..a65865860 100644 --- a/test/web/fallback_test.exs +++ b/test/web/fallback_test.exs @@ -6,22 +6,56 @@ defmodule Pleroma.Web.FallbackTest do use Pleroma.Web.ConnCase import Pleroma.Factory - test "GET /registration/:token", %{conn: conn} do - assert conn - |> get("/registration/foo") - |> html_response(200) =~ "" + describe "neither preloaded data nor metadata attached to" do + test "GET /registration/:token", %{conn: conn} do + response = get(conn, "/registration/foo") + + assert html_response(response, 200) =~ "" + end + + test "GET /*path", %{conn: conn} do + assert conn + |> get("/foo") + |> html_response(200) =~ "" + end end - test "GET /:maybe_nickname_or_id", %{conn: conn} do - user = insert(:user) + describe "preloaded data and metadata attached to" do + test "GET /:maybe_nickname_or_id", %{conn: conn} do + user = insert(:user) + user_missing = get(conn, "/foo") + user_present = get(conn, "/#{user.nickname}") - assert conn - |> get("/foo") - |> html_response(200) =~ "" + assert(html_response(user_missing, 200) =~ "") + refute html_response(user_present, 200) =~ "" + assert html_response(user_present, 200) =~ "initial-results" + end - refute conn - |> get("/" <> user.nickname) - |> html_response(200) =~ "" + test "GET /*path", %{conn: conn} do + assert conn + |> get("/foo") + |> html_response(200) =~ "" + + refute conn + |> get("/foo/bar") + |> html_response(200) =~ "" + end + end + + describe "preloaded data is attached to" do + test "GET /main/public", %{conn: conn} do + public_page = get(conn, "/main/public") + + refute html_response(public_page, 200) =~ "" + assert html_response(public_page, 200) =~ "initial-results" + end + + test "GET /main/all", %{conn: conn} do + public_page = get(conn, "/main/all") + + refute html_response(public_page, 200) =~ "" + assert html_response(public_page, 200) =~ "initial-results" + end end test "GET /api*path", %{conn: conn} do @@ -34,16 +68,6 @@ test "GET /pleroma/admin -> /pleroma/admin/", %{conn: conn} do assert redirected_to(get(conn, "/pleroma/admin")) =~ "/pleroma/admin/" end - test "GET /*path", %{conn: conn} do - assert conn - |> get("/foo") - |> html_response(200) =~ "" - - assert conn - |> get("/foo/bar") - |> html_response(200) =~ "" - end - test "OPTIONS /*path", %{conn: conn} do assert conn |> options("/foo") diff --git a/test/web/federator_test.exs b/test/web/federator_test.exs index de90aa6e0..592fdccd1 100644 --- a/test/web/federator_test.exs +++ b/test/web/federator_test.exs @@ -23,7 +23,7 @@ defmodule Pleroma.Web.FederatorTest do setup_all do: clear_config([:instance, :federating], true) setup do: clear_config([:instance, :allow_relay]) - setup do: clear_config([:instance, :rewrite_policy]) + setup do: clear_config([:mrf, :policies]) setup do: clear_config([:mrf_keyword]) describe "Publish an activity" do @@ -158,7 +158,7 @@ test "it does not crash if MRF rejects the post" do Pleroma.Config.put([:mrf_keyword, :reject], ["lain"]) Pleroma.Config.put( - [:instance, :rewrite_policy], + [:mrf, :policies], Pleroma.Web.ActivityPub.MRF.KeywordPolicy ) diff --git a/test/web/mastodon_api/controllers/account_controller/update_credentials_test.exs b/test/web/mastodon_api/controllers/account_controller/update_credentials_test.exs index 696228203..31f0edf97 100644 --- a/test/web/mastodon_api/controllers/account_controller/update_credentials_test.exs +++ b/test/web/mastodon_api/controllers/account_controller/update_credentials_test.exs @@ -8,6 +8,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController.UpdateCredentialsTest do use Pleroma.Web.ConnCase + import Mock import Pleroma.Factory setup do: clear_config([:instance, :max_account_fields]) @@ -52,33 +53,39 @@ test "sets user settings in a generic way", %{conn: conn} do user = Repo.get(User, user_data["id"]) - res_conn = - conn - |> assign(:user, user) - |> patch("/api/v1/accounts/update_credentials", %{ - "pleroma_settings_store" => %{ - masto_fe: %{ - theme: "blub" + clear_config([:instance, :federating], true) + + with_mock Pleroma.Web.Federator, + publish: fn _activity -> :ok end do + res_conn = + conn + |> assign(:user, user) + |> patch("/api/v1/accounts/update_credentials", %{ + "pleroma_settings_store" => %{ + masto_fe: %{ + theme: "blub" + } } - } - }) + }) - assert user_data = json_response_and_validate_schema(res_conn, 200) + assert user_data = json_response_and_validate_schema(res_conn, 200) - assert user_data["pleroma"]["settings_store"] == - %{ - "pleroma_fe" => %{"theme" => "bla"}, - "masto_fe" => %{"theme" => "blub"} - } + assert user_data["pleroma"]["settings_store"] == + %{ + "pleroma_fe" => %{"theme" => "bla"}, + "masto_fe" => %{"theme" => "blub"} + } + + assert_called(Pleroma.Web.Federator.publish(:_)) + end end test "updates the user's bio", %{conn: conn} do user2 = insert(:user) - conn = - patch(conn, "/api/v1/accounts/update_credentials", %{ - "note" => "I drink #cofe with @#{user2.nickname}\n\nsuya.." - }) + raw_bio = "I drink #cofe with @#{user2.nickname}\n\nsuya.." + + conn = patch(conn, "/api/v1/accounts/update_credentials", %{"note" => raw_bio}) assert user_data = json_response_and_validate_schema(conn, 200) @@ -86,6 +93,12 @@ test "updates the user's bio", %{conn: conn} do ~s(I drink #cofe with @#{user2.nickname}

    suya..) + + assert user_data["source"]["note"] == raw_bio + + user = Repo.get(User, user_data["id"]) + + assert user.raw_bio == raw_bio end test "updates the user's locking status", %{conn: conn} do @@ -203,10 +216,20 @@ test "updates the user's avatar", %{user: user, conn: conn} do filename: "an_image.jpg" } - conn = patch(conn, "/api/v1/accounts/update_credentials", %{"avatar" => new_avatar}) + res = + conn + |> patch("/api/v1/accounts/update_credentials", %{"avatar" => new_avatar}) - assert user_response = json_response_and_validate_schema(conn, 200) + assert user_response = json_response_and_validate_schema(res, 200) assert user_response["avatar"] != User.avatar_url(user) + + # Also removes it + res = + conn + |> patch("/api/v1/accounts/update_credentials", %{"avatar" => nil}) + + assert user_response = json_response_and_validate_schema(res, 200) + assert user_response["avatar"] == User.avatar_url(user) end test "updates the user's banner", %{user: user, conn: conn} do @@ -216,10 +239,21 @@ test "updates the user's banner", %{user: user, conn: conn} do filename: "an_image.jpg" } - conn = patch(conn, "/api/v1/accounts/update_credentials", %{"header" => new_header}) + res = + conn + |> patch("/api/v1/accounts/update_credentials", %{"header" => new_header}) - assert user_response = json_response_and_validate_schema(conn, 200) + assert user_response = json_response_and_validate_schema(res, 200) assert user_response["header"] != User.banner_url(user) + + # Also removes it + + res = + conn + |> patch("/api/v1/accounts/update_credentials", %{"header" => nil}) + + assert user_response = json_response_and_validate_schema(res, 200) + assert user_response["header"] == User.banner_url(user) end test "updates the user's background", %{conn: conn} do @@ -229,13 +263,25 @@ test "updates the user's background", %{conn: conn} do filename: "an_image.jpg" } - conn = - patch(conn, "/api/v1/accounts/update_credentials", %{ + res = + conn + |> patch("/api/v1/accounts/update_credentials", %{ "pleroma_background_image" => new_header }) - assert user_response = json_response_and_validate_schema(conn, 200) + assert user_response = json_response_and_validate_schema(res, 200) assert user_response["pleroma"]["background_image"] + + # Also removes it + + res = + conn + |> patch("/api/v1/accounts/update_credentials", %{ + "pleroma_background_image" => nil + }) + + assert user_response = json_response_and_validate_schema(res, 200) + refute user_response["pleroma"]["background_image"] end test "requires 'write:accounts' permission" do @@ -387,4 +433,71 @@ test "update fields when invalid request", %{conn: conn} do |> json_response_and_validate_schema(403) end end + + describe "Mark account as bot" do + setup do: oauth_access(["write:accounts"]) + setup :request_content_type + + test "changing actor_type to Service makes account a bot", %{conn: conn} do + account = + conn + |> patch("/api/v1/accounts/update_credentials", %{actor_type: "Service"}) + |> json_response_and_validate_schema(200) + + assert account["bot"] + assert account["source"]["pleroma"]["actor_type"] == "Service" + end + + test "changing actor_type to Person makes account a human", %{conn: conn} do + account = + conn + |> patch("/api/v1/accounts/update_credentials", %{actor_type: "Person"}) + |> json_response_and_validate_schema(200) + + refute account["bot"] + assert account["source"]["pleroma"]["actor_type"] == "Person" + end + + test "changing actor_type to Application causes error", %{conn: conn} do + response = + conn + |> patch("/api/v1/accounts/update_credentials", %{actor_type: "Application"}) + |> json_response_and_validate_schema(403) + + assert %{"error" => "Invalid request"} == response + end + + test "changing bot field to true changes actor_type to Service", %{conn: conn} do + account = + conn + |> patch("/api/v1/accounts/update_credentials", %{bot: "true"}) + |> json_response_and_validate_schema(200) + + assert account["bot"] + assert account["source"]["pleroma"]["actor_type"] == "Service" + end + + test "changing bot field to false changes actor_type to Person", %{conn: conn} do + account = + conn + |> patch("/api/v1/accounts/update_credentials", %{bot: "false"}) + |> json_response_and_validate_schema(200) + + refute account["bot"] + assert account["source"]["pleroma"]["actor_type"] == "Person" + end + + test "actor_type field has a higher priority than bot", %{conn: conn} do + account = + conn + |> patch("/api/v1/accounts/update_credentials", %{ + actor_type: "Person", + bot: "true" + }) + |> json_response_and_validate_schema(200) + + refute account["bot"] + assert account["source"]["pleroma"]["actor_type"] == "Person" + end + end end diff --git a/test/web/mastodon_api/controllers/account_controller_test.exs b/test/web/mastodon_api/controllers/account_controller_test.exs index 1ce97378d..260ad2306 100644 --- a/test/web/mastodon_api/controllers/account_controller_test.exs +++ b/test/web/mastodon_api/controllers/account_controller_test.exs @@ -127,6 +127,15 @@ test "returns 404 for internal.fetch actor", %{conn: conn} do |> get("/api/v1/accounts/internal.fetch") |> json_response_and_validate_schema(404) end + + test "returns 404 for deactivated user", %{conn: conn} do + user = insert(:user, deactivated: true) + + assert %{"error" => "Can't find user"} = + conn + |> get("/api/v1/accounts/#{user.id}") + |> json_response_and_validate_schema(:not_found) + end end defp local_and_remote_users do @@ -143,15 +152,15 @@ defp local_and_remote_users do setup do: clear_config([:restrict_unauthenticated, :profiles, :remote], true) test "if user is unauthenticated", %{conn: conn, local: local, remote: remote} do - assert %{"error" => "Can't find user"} == + assert %{"error" => "This API requires an authenticated user"} == conn |> get("/api/v1/accounts/#{local.id}") - |> json_response_and_validate_schema(:not_found) + |> json_response_and_validate_schema(:unauthorized) - assert %{"error" => "Can't find user"} == + assert %{"error" => "This API requires an authenticated user"} == conn |> get("/api/v1/accounts/#{remote.id}") - |> json_response_and_validate_schema(:not_found) + |> json_response_and_validate_schema(:unauthorized) end test "if user is authenticated", %{local: local, remote: remote} do @@ -173,8 +182,8 @@ test "if user is authenticated", %{local: local, remote: remote} do test "if user is unauthenticated", %{conn: conn, local: local, remote: remote} do res_conn = get(conn, "/api/v1/accounts/#{local.id}") - assert json_response_and_validate_schema(res_conn, :not_found) == %{ - "error" => "Can't find user" + assert json_response_and_validate_schema(res_conn, :unauthorized) == %{ + "error" => "This API requires an authenticated user" } res_conn = get(conn, "/api/v1/accounts/#{remote.id}") @@ -203,8 +212,8 @@ test "if user is unauthenticated", %{conn: conn, local: local, remote: remote} d res_conn = get(conn, "/api/v1/accounts/#{remote.id}") - assert json_response_and_validate_schema(res_conn, :not_found) == %{ - "error" => "Can't find user" + assert json_response_and_validate_schema(res_conn, :unauthorized) == %{ + "error" => "This API requires an authenticated user" } end @@ -249,6 +258,24 @@ test "works with announces that are just addressed to public", %{conn: conn} do assert id == announce.id end + test "deactivated user", %{conn: conn} do + user = insert(:user, deactivated: true) + + assert %{"error" => "Can't find user"} == + conn + |> get("/api/v1/accounts/#{user.id}/statuses") + |> json_response_and_validate_schema(:not_found) + end + + test "returns 404 when user is invisible", %{conn: conn} do + user = insert(:user, %{invisible: true}) + + assert %{"error" => "Can't find user"} = + conn + |> get("/api/v1/accounts/#{user.id}") + |> json_response_and_validate_schema(404) + end + test "respects blocks", %{user: user_one, conn: conn} do user_two = insert(:user) user_three = insert(:user) @@ -350,9 +377,10 @@ test "unimplemented pinned statuses feature", %{conn: conn} do assert json_response_and_validate_schema(conn, 200) == [] end - test "gets an users media", %{conn: conn} do + test "gets an users media, excludes reblogs", %{conn: conn} do note = insert(:note_activity) user = User.get_cached_by_ap_id(note.data["actor"]) + other_user = insert(:user) file = %Plug.Upload{ content_type: "image/jpg", @@ -364,6 +392,13 @@ test "gets an users media", %{conn: conn} do {:ok, %{id: image_post_id}} = CommonAPI.post(user, %{status: "cofe", media_ids: [media_id]}) + {:ok, %{id: media_id}} = ActivityPub.upload(file, actor: other_user.ap_id) + + {:ok, %{id: other_image_post_id}} = + CommonAPI.post(other_user, %{status: "cofe2", media_ids: [media_id]}) + + {:ok, _announce} = CommonAPI.repeat(other_image_post_id, user) + conn = get(conn, "/api/v1/accounts/#{user.id}/statuses?only_media=true") assert [%{"id" => ^image_post_id}] = json_response_and_validate_schema(conn, 200) @@ -422,15 +457,15 @@ defp local_and_remote_activities(%{local: local, remote: remote}) do setup do: clear_config([:restrict_unauthenticated, :profiles, :remote], true) test "if user is unauthenticated", %{conn: conn, local: local, remote: remote} do - assert %{"error" => "Can't find user"} == + assert %{"error" => "This API requires an authenticated user"} == conn |> get("/api/v1/accounts/#{local.id}/statuses") - |> json_response_and_validate_schema(:not_found) + |> json_response_and_validate_schema(:unauthorized) - assert %{"error" => "Can't find user"} == + assert %{"error" => "This API requires an authenticated user"} == conn |> get("/api/v1/accounts/#{remote.id}/statuses") - |> json_response_and_validate_schema(:not_found) + |> json_response_and_validate_schema(:unauthorized) end test "if user is authenticated", %{local: local, remote: remote} do @@ -451,10 +486,10 @@ test "if user is authenticated", %{local: local, remote: remote} do setup do: clear_config([:restrict_unauthenticated, :profiles, :local], true) test "if user is unauthenticated", %{conn: conn, local: local, remote: remote} do - assert %{"error" => "Can't find user"} == + assert %{"error" => "This API requires an authenticated user"} == conn |> get("/api/v1/accounts/#{local.id}/statuses") - |> json_response_and_validate_schema(:not_found) + |> json_response_and_validate_schema(:unauthorized) res_conn = get(conn, "/api/v1/accounts/#{remote.id}/statuses") assert length(json_response_and_validate_schema(res_conn, 200)) == 1 @@ -481,10 +516,10 @@ test "if user is unauthenticated", %{conn: conn, local: local, remote: remote} d res_conn = get(conn, "/api/v1/accounts/#{local.id}/statuses") assert length(json_response_and_validate_schema(res_conn, 200)) == 1 - assert %{"error" => "Can't find user"} == + assert %{"error" => "This API requires an authenticated user"} == conn |> get("/api/v1/accounts/#{remote.id}/statuses") - |> json_response_and_validate_schema(:not_found) + |> json_response_and_validate_schema(:unauthorized) end test "if user is authenticated", %{local: local, remote: remote} do @@ -745,7 +780,6 @@ test "with notifications", %{conn: conn} do assert %{"id" => _id, "muting" => true, "muting_notifications" => true} = conn - |> put_req_header("content-type", "application/json") |> post("/api/v1/accounts/#{other_user.id}/mute") |> json_response_and_validate_schema(200) diff --git a/test/web/mastodon_api/controllers/conversation_controller_test.exs b/test/web/mastodon_api/controllers/conversation_controller_test.exs index 693ba51e5..3e21e6bf1 100644 --- a/test/web/mastodon_api/controllers/conversation_controller_test.exs +++ b/test/web/mastodon_api/controllers/conversation_controller_test.exs @@ -12,84 +12,88 @@ defmodule Pleroma.Web.MastodonAPI.ConversationControllerTest do setup do: oauth_access(["read:statuses"]) - test "returns a list of conversations", %{user: user_one, conn: conn} do - user_two = insert(:user) - user_three = insert(:user) + describe "returns a list of conversations" do + setup(%{user: user_one, conn: conn}) do + user_two = insert(:user) + user_three = insert(:user) - {:ok, user_two} = User.follow(user_two, user_one) + {:ok, user_two} = User.follow(user_two, user_one) - assert User.get_cached_by_id(user_two.id).unread_conversation_count == 0 + {:ok, %{user: user_one, user_two: user_two, user_three: user_three, conn: conn}} + end - {:ok, direct} = - CommonAPI.post(user_one, %{ - status: "Hi @#{user_two.nickname}, @#{user_three.nickname}!", - visibility: "direct" - }) + test "returns correct conversations", %{ + user: user_one, + user_two: user_two, + user_three: user_three, + conn: conn + } do + assert User.get_cached_by_id(user_two.id).unread_conversation_count == 0 + {:ok, direct} = create_direct_message(user_one, [user_two, user_three]) - assert User.get_cached_by_id(user_two.id).unread_conversation_count == 1 + assert User.get_cached_by_id(user_two.id).unread_conversation_count == 1 - {:ok, _follower_only} = - CommonAPI.post(user_one, %{ - status: "Hi @#{user_two.nickname}!", - visibility: "private" - }) + {:ok, _follower_only} = + CommonAPI.post(user_one, %{ + status: "Hi @#{user_two.nickname}!", + visibility: "private" + }) - res_conn = get(conn, "/api/v1/conversations") + res_conn = get(conn, "/api/v1/conversations") - assert response = json_response_and_validate_schema(res_conn, 200) + assert response = json_response_and_validate_schema(res_conn, 200) - assert [ - %{ - "id" => res_id, - "accounts" => res_accounts, - "last_status" => res_last_status, - "unread" => unread - } - ] = response + assert [ + %{ + "id" => res_id, + "accounts" => res_accounts, + "last_status" => res_last_status, + "unread" => unread + } + ] = response - account_ids = Enum.map(res_accounts, & &1["id"]) - assert length(res_accounts) == 2 - assert user_two.id in account_ids - assert user_three.id in account_ids - assert is_binary(res_id) - assert unread == false - assert res_last_status["id"] == direct.id - assert User.get_cached_by_id(user_one.id).unread_conversation_count == 0 + account_ids = Enum.map(res_accounts, & &1["id"]) + assert length(res_accounts) == 2 + assert user_two.id in account_ids + assert user_three.id in account_ids + assert is_binary(res_id) + assert unread == false + assert res_last_status["id"] == direct.id + assert User.get_cached_by_id(user_one.id).unread_conversation_count == 0 + end + + test "observes limit params", %{ + user: user_one, + user_two: user_two, + user_three: user_three, + conn: conn + } do + {:ok, _} = create_direct_message(user_one, [user_two, user_three]) + {:ok, _} = create_direct_message(user_two, [user_one, user_three]) + {:ok, _} = create_direct_message(user_three, [user_two, user_one]) + + res_conn = get(conn, "/api/v1/conversations?limit=1") + + assert response = json_response_and_validate_schema(res_conn, 200) + + assert Enum.count(response) == 1 + + res_conn = get(conn, "/api/v1/conversations?limit=2") + + assert response = json_response_and_validate_schema(res_conn, 200) + + assert Enum.count(response) == 2 + end end test "filters conversations by recipients", %{user: user_one, conn: conn} do user_two = insert(:user) user_three = insert(:user) - - {:ok, direct1} = - CommonAPI.post(user_one, %{ - status: "Hi @#{user_two.nickname}!", - visibility: "direct" - }) - - {:ok, _direct2} = - CommonAPI.post(user_one, %{ - status: "Hi @#{user_three.nickname}!", - visibility: "direct" - }) - - {:ok, direct3} = - CommonAPI.post(user_one, %{ - status: "Hi @#{user_two.nickname}, @#{user_three.nickname}!", - visibility: "direct" - }) - - {:ok, _direct4} = - CommonAPI.post(user_two, %{ - status: "Hi @#{user_three.nickname}!", - visibility: "direct" - }) - - {:ok, direct5} = - CommonAPI.post(user_two, %{ - status: "Hi @#{user_one.nickname}!", - visibility: "direct" - }) + {:ok, direct1} = create_direct_message(user_one, [user_two]) + {:ok, _direct2} = create_direct_message(user_one, [user_three]) + {:ok, direct3} = create_direct_message(user_one, [user_two, user_three]) + {:ok, _direct4} = create_direct_message(user_two, [user_three]) + {:ok, direct5} = create_direct_message(user_two, [user_one]) assert [conversation1, conversation2] = conn @@ -109,12 +113,7 @@ test "filters conversations by recipients", %{user: user_one, conn: conn} do test "updates the last_status on reply", %{user: user_one, conn: conn} do user_two = insert(:user) - - {:ok, direct} = - CommonAPI.post(user_one, %{ - status: "Hi @#{user_two.nickname}", - visibility: "direct" - }) + {:ok, direct} = create_direct_message(user_one, [user_two]) {:ok, direct_reply} = CommonAPI.post(user_two, %{ @@ -133,12 +132,7 @@ test "updates the last_status on reply", %{user: user_one, conn: conn} do test "the user marks a conversation as read", %{user: user_one, conn: conn} do user_two = insert(:user) - - {:ok, direct} = - CommonAPI.post(user_one, %{ - status: "Hi @#{user_two.nickname}", - visibility: "direct" - }) + {:ok, direct} = create_direct_message(user_one, [user_two]) assert User.get_cached_by_id(user_one.id).unread_conversation_count == 0 assert User.get_cached_by_id(user_two.id).unread_conversation_count == 1 @@ -194,15 +188,22 @@ test "the user marks a conversation as read", %{user: user_one, conn: conn} do test "(vanilla) Mastodon frontend behaviour", %{user: user_one, conn: conn} do user_two = insert(:user) - - {:ok, direct} = - CommonAPI.post(user_one, %{ - status: "Hi @#{user_two.nickname}!", - visibility: "direct" - }) + {:ok, direct} = create_direct_message(user_one, [user_two]) res_conn = get(conn, "/api/v1/statuses/#{direct.id}/context") assert %{"ancestors" => [], "descendants" => []} == json_response(res_conn, 200) end + + defp create_direct_message(sender, recips) do + hellos = + recips + |> Enum.map(fn s -> "@#{s.nickname}" end) + |> Enum.join(", ") + + CommonAPI.post(sender, %{ + status: "Hi #{hellos}!", + visibility: "direct" + }) + end end diff --git a/test/web/mastodon_api/controllers/notification_controller_test.exs b/test/web/mastodon_api/controllers/notification_controller_test.exs index e278d61f5..70ef0e8b5 100644 --- a/test/web/mastodon_api/controllers/notification_controller_test.exs +++ b/test/web/mastodon_api/controllers/notification_controller_test.exs @@ -54,6 +54,27 @@ test "list of notifications" do assert response == expected_response end + test "by default, does not contain pleroma:chat_mention" do + %{user: user, conn: conn} = oauth_access(["read:notifications"]) + other_user = insert(:user) + + {:ok, _activity} = CommonAPI.post_chat_message(other_user, user, "hey") + + result = + conn + |> get("/api/v1/notifications") + |> json_response_and_validate_schema(200) + + assert [] == result + + result = + conn + |> get("/api/v1/notifications?include_types[]=pleroma:chat_mention") + |> json_response_and_validate_schema(200) + + assert [_] = result + end + test "getting a single notification" do %{user: user, conn: conn} = oauth_access(["read:notifications"]) other_user = insert(:user) @@ -292,6 +313,33 @@ test "filters notifications for Announce activities" do assert public_activity.id in activity_ids refute unlisted_activity.id in activity_ids end + + test "doesn't return less than the requested amount of records when the user's reply is liked" do + user = insert(:user) + %{user: other_user, conn: conn} = oauth_access(["read:notifications"]) + + {:ok, mention} = + CommonAPI.post(user, %{status: "@#{other_user.nickname}", visibility: "public"}) + + {:ok, activity} = CommonAPI.post(user, %{status: ".", visibility: "public"}) + + {:ok, reply} = + CommonAPI.post(other_user, %{ + status: ".", + visibility: "public", + in_reply_to_status_id: activity.id + }) + + {:ok, _favorite} = CommonAPI.favorite(user, reply.id) + + activity_ids = + conn + |> get("/api/v1/notifications?exclude_visibilities[]=direct&limit=2") + |> json_response_and_validate_schema(200) + |> Enum.map(& &1["status"]["id"]) + + assert [reply.id, mention.id] == activity_ids + end end test "filters notifications using exclude_types" do diff --git a/test/web/mastodon_api/controllers/search_controller_test.exs b/test/web/mastodon_api/controllers/search_controller_test.exs index 7d0cafccc..826f37fbc 100644 --- a/test/web/mastodon_api/controllers/search_controller_test.exs +++ b/test/web/mastodon_api/controllers/search_controller_test.exs @@ -71,10 +71,102 @@ test "search", %{conn: conn} do get(conn, "/api/v2/search?q=天子") |> json_response_and_validate_schema(200) + assert results["hashtags"] == [ + %{"name" => "天子", "url" => "#{Web.base_url()}/tag/天子"} + ] + [status] = results["statuses"] assert status["id"] == to_string(activity.id) end + test "constructs hashtags from search query", %{conn: conn} do + results = + conn + |> get("/api/v2/search?#{URI.encode_query(%{q: "some text with #explicit #hashtags"})}") + |> json_response_and_validate_schema(200) + + assert results["hashtags"] == [ + %{"name" => "explicit", "url" => "#{Web.base_url()}/tag/explicit"}, + %{"name" => "hashtags", "url" => "#{Web.base_url()}/tag/hashtags"} + ] + + results = + conn + |> get("/api/v2/search?#{URI.encode_query(%{q: "john doe JOHN DOE"})}") + |> json_response_and_validate_schema(200) + + assert results["hashtags"] == [ + %{"name" => "john", "url" => "#{Web.base_url()}/tag/john"}, + %{"name" => "doe", "url" => "#{Web.base_url()}/tag/doe"}, + %{"name" => "JohnDoe", "url" => "#{Web.base_url()}/tag/JohnDoe"} + ] + + results = + conn + |> get("/api/v2/search?#{URI.encode_query(%{q: "accident-prone"})}") + |> json_response_and_validate_schema(200) + + assert results["hashtags"] == [ + %{"name" => "accident", "url" => "#{Web.base_url()}/tag/accident"}, + %{"name" => "prone", "url" => "#{Web.base_url()}/tag/prone"}, + %{"name" => "AccidentProne", "url" => "#{Web.base_url()}/tag/AccidentProne"} + ] + + results = + conn + |> get("/api/v2/search?#{URI.encode_query(%{q: "https://shpposter.club/users/shpuld"})}") + |> json_response_and_validate_schema(200) + + assert results["hashtags"] == [ + %{"name" => "shpuld", "url" => "#{Web.base_url()}/tag/shpuld"} + ] + + results = + conn + |> get( + "/api/v2/search?#{ + URI.encode_query(%{ + q: + "https://www.washingtonpost.com/sports/2020/06/10/" <> + "nascar-ban-display-confederate-flag-all-events-properties/" + }) + }" + ) + |> json_response_and_validate_schema(200) + + assert results["hashtags"] == [ + %{"name" => "nascar", "url" => "#{Web.base_url()}/tag/nascar"}, + %{"name" => "ban", "url" => "#{Web.base_url()}/tag/ban"}, + %{"name" => "display", "url" => "#{Web.base_url()}/tag/display"}, + %{"name" => "confederate", "url" => "#{Web.base_url()}/tag/confederate"}, + %{"name" => "flag", "url" => "#{Web.base_url()}/tag/flag"}, + %{"name" => "all", "url" => "#{Web.base_url()}/tag/all"}, + %{"name" => "events", "url" => "#{Web.base_url()}/tag/events"}, + %{"name" => "properties", "url" => "#{Web.base_url()}/tag/properties"}, + %{ + "name" => "NascarBanDisplayConfederateFlagAllEventsProperties", + "url" => + "#{Web.base_url()}/tag/NascarBanDisplayConfederateFlagAllEventsProperties" + } + ] + end + + test "supports pagination of hashtags search results", %{conn: conn} do + results = + conn + |> get( + "/api/v2/search?#{ + URI.encode_query(%{q: "#some #text #with #hashtags", limit: 2, offset: 1}) + }" + ) + |> json_response_and_validate_schema(200) + + assert results["hashtags"] == [ + %{"name" => "text", "url" => "#{Web.base_url()}/tag/text"}, + %{"name" => "with", "url" => "#{Web.base_url()}/tag/with"} + ] + end + test "excludes a blocked users from search results", %{conn: conn} do user = insert(:user) user_smith = insert(:user, %{nickname: "Agent", name: "I love 2hu"}) @@ -179,7 +271,7 @@ test "search", %{conn: conn} do [account | _] = results["accounts"] assert account["id"] == to_string(user_three.id) - assert results["hashtags"] == [] + assert results["hashtags"] == ["2hu"] [status] = results["statuses"] assert status["id"] == to_string(activity.id) diff --git a/test/web/mastodon_api/controllers/status_controller_test.exs b/test/web/mastodon_api/controllers/status_controller_test.exs index 700c82e4f..a98e939e8 100644 --- a/test/web/mastodon_api/controllers/status_controller_test.exs +++ b/test/web/mastodon_api/controllers/status_controller_test.exs @@ -1541,14 +1541,49 @@ test "context" do } = response end + test "favorites paginate correctly" do + %{user: user, conn: conn} = oauth_access(["read:favourites"]) + other_user = insert(:user) + {:ok, first_post} = CommonAPI.post(other_user, %{status: "bla"}) + {:ok, second_post} = CommonAPI.post(other_user, %{status: "bla"}) + {:ok, third_post} = CommonAPI.post(other_user, %{status: "bla"}) + + {:ok, _first_favorite} = CommonAPI.favorite(user, third_post.id) + {:ok, _second_favorite} = CommonAPI.favorite(user, first_post.id) + {:ok, third_favorite} = CommonAPI.favorite(user, second_post.id) + + result = + conn + |> get("/api/v1/favourites?limit=1") + + assert [%{"id" => post_id}] = json_response_and_validate_schema(result, 200) + assert post_id == second_post.id + + # Using the header for pagination works correctly + [next, _] = get_resp_header(result, "link") |> hd() |> String.split(", ") + [_, max_id] = Regex.run(~r/max_id=([^&]+)/, next) + + assert max_id == third_favorite.id + + result = + conn + |> get("/api/v1/favourites?max_id=#{max_id}") + + assert [%{"id" => first_post_id}, %{"id" => third_post_id}] = + json_response_and_validate_schema(result, 200) + + assert first_post_id == first_post.id + assert third_post_id == third_post.id + end + test "returns the favorites of a user" do %{user: user, conn: conn} = oauth_access(["read:favourites"]) other_user = insert(:user) {:ok, _} = CommonAPI.post(other_user, %{status: "bla"}) - {:ok, activity} = CommonAPI.post(other_user, %{status: "traps are happy"}) + {:ok, activity} = CommonAPI.post(other_user, %{status: "trees are happy"}) - {:ok, _} = CommonAPI.favorite(user, activity.id) + {:ok, last_like} = CommonAPI.favorite(user, activity.id) first_conn = get(conn, "/api/v1/favourites") @@ -1566,9 +1601,7 @@ test "returns the favorites of a user" do {:ok, _} = CommonAPI.favorite(user, second_activity.id) - last_like = status["id"] - - second_conn = get(conn, "/api/v1/favourites?since_id=#{last_like}") + second_conn = get(conn, "/api/v1/favourites?since_id=#{last_like.id}") assert [second_status] = json_response_and_validate_schema(second_conn, 200) assert second_status["id"] == to_string(second_activity.id) diff --git a/test/web/mastodon_api/controllers/subscription_controller_test.exs b/test/web/mastodon_api/controllers/subscription_controller_test.exs index 4aa260663..d36bb1ae8 100644 --- a/test/web/mastodon_api/controllers/subscription_controller_test.exs +++ b/test/web/mastodon_api/controllers/subscription_controller_test.exs @@ -58,7 +58,9 @@ test "successful creation", %{conn: conn} do result = conn |> post("/api/v1/push/subscription", %{ - "data" => %{"alerts" => %{"mention" => true, "test" => true}}, + "data" => %{ + "alerts" => %{"mention" => true, "test" => true, "pleroma:chat_mention" => true} + }, "subscription" => @sub }) |> json_response_and_validate_schema(200) @@ -66,7 +68,7 @@ test "successful creation", %{conn: conn} do [subscription] = Pleroma.Repo.all(Subscription) assert %{ - "alerts" => %{"mention" => true}, + "alerts" => %{"mention" => true, "pleroma:chat_mention" => true}, "endpoint" => subscription.endpoint, "id" => to_string(subscription.id), "server_key" => @server_key diff --git a/test/web/mastodon_api/controllers/timeline_controller_test.exs b/test/web/mastodon_api/controllers/timeline_controller_test.exs index 2375ac8e8..f069390c1 100644 --- a/test/web/mastodon_api/controllers/timeline_controller_test.exs +++ b/test/web/mastodon_api/controllers/timeline_controller_test.exs @@ -60,9 +60,9 @@ test "the home timeline when the direct messages are excluded", %{user: user, co describe "public" do @tag capture_log: true test "the public timeline", %{conn: conn} do - following = insert(:user) + user = insert(:user) - {:ok, _activity} = CommonAPI.post(following, %{status: "test"}) + {:ok, activity} = CommonAPI.post(user, %{status: "test"}) _activity = insert(:note_activity, local: false) @@ -77,6 +77,13 @@ test "the public timeline", %{conn: conn} do conn = get(build_conn(), "/api/v1/timelines/public?local=1") assert [%{"content" => "test"}] = json_response_and_validate_schema(conn, :ok) + + # does not contain repeats + {:ok, _} = CommonAPI.repeat(activity.id, user) + + conn = get(build_conn(), "/api/v1/timelines/public?local=true") + + assert [_] = json_response_and_validate_schema(conn, :ok) end test "the public timeline includes only public statuses for an authenticated user" do @@ -90,6 +97,49 @@ test "the public timeline includes only public statuses for an authenticated use res_conn = get(conn, "/api/v1/timelines/public") assert length(json_response_and_validate_schema(res_conn, 200)) == 1 end + + test "doesn't return replies if follower is posting with blocked user" do + %{conn: conn, user: blocker} = oauth_access(["read:statuses"]) + [blockee, friend] = insert_list(2, :user) + {:ok, blocker} = User.follow(blocker, friend) + {:ok, _} = User.block(blocker, blockee) + + conn = assign(conn, :user, blocker) + + {:ok, %{id: activity_id} = activity} = CommonAPI.post(friend, %{status: "hey!"}) + + {:ok, reply_from_blockee} = + CommonAPI.post(blockee, %{status: "heya", in_reply_to_status_id: activity}) + + {:ok, _reply_from_friend} = + CommonAPI.post(friend, %{status: "status", in_reply_to_status_id: reply_from_blockee}) + + res_conn = get(conn, "/api/v1/timelines/public") + [%{"id" => ^activity_id}] = json_response_and_validate_schema(res_conn, 200) + end + + test "doesn't return replies if follow is posting with users from blocked domain" do + %{conn: conn, user: blocker} = oauth_access(["read:statuses"]) + friend = insert(:user) + blockee = insert(:user, ap_id: "https://example.com/users/blocked") + {:ok, blocker} = User.follow(blocker, friend) + {:ok, blocker} = User.block_domain(blocker, "example.com") + + conn = assign(conn, :user, blocker) + + {:ok, %{id: activity_id} = activity} = CommonAPI.post(friend, %{status: "hey!"}) + + {:ok, reply_from_blockee} = + CommonAPI.post(blockee, %{status: "heya", in_reply_to_status_id: activity}) + + {:ok, _reply_from_friend} = + CommonAPI.post(friend, %{status: "status", in_reply_to_status_id: reply_from_blockee}) + + res_conn = get(conn, "/api/v1/timelines/public") + + activities = json_response_and_validate_schema(res_conn, 200) + [%{"id" => ^activity_id}] = activities + end end defp local_and_remote_activities do diff --git a/test/web/mastodon_api/views/account_view_test.exs b/test/web/mastodon_api/views/account_view_test.exs index f91333e5c..80b1f734c 100644 --- a/test/web/mastodon_api/views/account_view_test.exs +++ b/test/web/mastodon_api/views/account_view_test.exs @@ -33,7 +33,8 @@ test "Represent a user account" do bio: "valid html. a
    b
    c
    d
    f '&<>\"", inserted_at: ~N[2017-08-15 15:47:06.597036], - emoji: %{"karjalanpiirakka" => "/file.png"} + emoji: %{"karjalanpiirakka" => "/file.png"}, + raw_bio: "valid html. a\nb\nc\nd\nf '&<>\"" }) expected = %{ @@ -72,6 +73,7 @@ test "Represent a user account" do fields: [] }, pleroma: %{ + ap_id: user.ap_id, background_image: "https://example.com/images/asuka_hospital.png", confirmation_pending: false, tags: [], @@ -148,6 +150,7 @@ test "Represent a Service(bot) account" do fields: [] }, pleroma: %{ + ap_id: user.ap_id, background_image: nil, confirmation_pending: false, tags: [], diff --git a/test/web/mastodon_api/views/conversation_view_test.exs b/test/web/mastodon_api/views/conversation_view_test.exs index 6f84366f8..2e8203c9b 100644 --- a/test/web/mastodon_api/views/conversation_view_test.exs +++ b/test/web/mastodon_api/views/conversation_view_test.exs @@ -15,8 +15,17 @@ test "represents a Mastodon Conversation entity" do user = insert(:user) other_user = insert(:user) + {:ok, parent} = CommonAPI.post(user, %{status: "parent"}) + {:ok, activity} = - CommonAPI.post(user, %{status: "hey @#{other_user.nickname}", visibility: "direct"}) + CommonAPI.post(user, %{ + status: "hey @#{other_user.nickname}", + visibility: "direct", + in_reply_to_id: parent.id + }) + + {:ok, _reply_activity} = + CommonAPI.post(user, %{status: "hu", visibility: "public", in_reply_to_id: parent.id}) [participation] = Participation.for_user_with_last_activity_id(user) diff --git a/test/web/mastodon_api/views/notification_view_test.exs b/test/web/mastodon_api/views/notification_view_test.exs index f15be1df1..8e0e58538 100644 --- a/test/web/mastodon_api/views/notification_view_test.exs +++ b/test/web/mastodon_api/views/notification_view_test.exs @@ -6,7 +6,10 @@ defmodule Pleroma.Web.MastodonAPI.NotificationViewTest do use Pleroma.DataCase alias Pleroma.Activity + alias Pleroma.Chat + alias Pleroma.Chat.MessageReference alias Pleroma.Notification + alias Pleroma.Object alias Pleroma.Repo alias Pleroma.User alias Pleroma.Web.CommonAPI @@ -14,6 +17,7 @@ defmodule Pleroma.Web.MastodonAPI.NotificationViewTest do alias Pleroma.Web.MastodonAPI.AccountView alias Pleroma.Web.MastodonAPI.NotificationView alias Pleroma.Web.MastodonAPI.StatusView + alias Pleroma.Web.PleromaAPI.Chat.MessageReferenceView import Pleroma.Factory defp test_notifications_rendering(notifications, user, expected_result) do @@ -31,6 +35,30 @@ defp test_notifications_rendering(notifications, user, expected_result) do assert expected_result == result end + test "ChatMessage notification" do + user = insert(:user) + recipient = insert(:user) + {:ok, activity} = CommonAPI.post_chat_message(user, recipient, "what's up my dude") + + {:ok, [notification]} = Notification.create_notifications(activity) + + object = Object.normalize(activity) + chat = Chat.get(recipient.id, user.ap_id) + + cm_ref = MessageReference.for_chat_and_object(chat, object) + + expected = %{ + id: to_string(notification.id), + pleroma: %{is_seen: false, is_muted: false}, + type: "pleroma:chat_mention", + account: AccountView.render("show.json", %{user: user, for: recipient}), + chat_message: MessageReferenceView.render("show.json", %{chat_message_reference: cm_ref}), + created_at: Utils.to_masto_date(notification.inserted_at) + } + + test_notifications_rendering([notification], recipient, [expected]) + end + test "Mention notification" do user = insert(:user) mentioned_user = insert(:user) @@ -40,7 +68,7 @@ test "Mention notification" do expected = %{ id: to_string(notification.id), - pleroma: %{is_seen: false}, + pleroma: %{is_seen: false, is_muted: false}, type: "mention", account: AccountView.render("show.json", %{ @@ -64,7 +92,7 @@ test "Favourite notification" do expected = %{ id: to_string(notification.id), - pleroma: %{is_seen: false}, + pleroma: %{is_seen: false, is_muted: false}, type: "favourite", account: AccountView.render("show.json", %{user: another_user, for: user}), status: StatusView.render("show.json", %{activity: create_activity, for: user}), @@ -84,7 +112,7 @@ test "Reblog notification" do expected = %{ id: to_string(notification.id), - pleroma: %{is_seen: false}, + pleroma: %{is_seen: false, is_muted: false}, type: "reblog", account: AccountView.render("show.json", %{user: another_user, for: user}), status: StatusView.render("show.json", %{activity: reblog_activity, for: user}), @@ -102,7 +130,7 @@ test "Follow notification" do expected = %{ id: to_string(notification.id), - pleroma: %{is_seen: false}, + pleroma: %{is_seen: false, is_muted: false}, type: "follow", account: AccountView.render("show.json", %{user: follower, for: followed}), created_at: Utils.to_masto_date(notification.inserted_at) @@ -111,9 +139,7 @@ test "Follow notification" do test_notifications_rendering([notification], followed, [expected]) User.perform(:delete, follower) - notification = Notification |> Repo.one() |> Repo.preload(:activity) - - test_notifications_rendering([notification], followed, []) + refute Repo.one(Notification) end @tag capture_log: true @@ -145,7 +171,7 @@ test "Move notification" do expected = %{ id: to_string(notification.id), - pleroma: %{is_seen: false}, + pleroma: %{is_seen: false, is_muted: false}, type: "move", account: AccountView.render("show.json", %{user: old_user, for: follower}), target: AccountView.render("show.json", %{user: new_user, for: follower}), @@ -170,7 +196,7 @@ test "EmojiReact notification" do expected = %{ id: to_string(notification.id), - pleroma: %{is_seen: false}, + pleroma: %{is_seen: false, is_muted: false}, type: "pleroma:emoji_reaction", emoji: "☕", account: AccountView.render("show.json", %{user: other_user, for: user}), @@ -180,4 +206,26 @@ test "EmojiReact notification" do test_notifications_rendering([notification], user, [expected]) end + + test "muted notification" do + user = insert(:user) + another_user = insert(:user) + + {:ok, _} = Pleroma.UserRelationship.create_mute(user, another_user) + {:ok, create_activity} = CommonAPI.post(user, %{status: "hey"}) + {:ok, favorite_activity} = CommonAPI.favorite(another_user, create_activity.id) + {:ok, [notification]} = Notification.create_notifications(favorite_activity) + create_activity = Activity.get_by_id(create_activity.id) + + expected = %{ + id: to_string(notification.id), + pleroma: %{is_seen: false, is_muted: true}, + type: "favourite", + account: AccountView.render("show.json", %{user: another_user, for: user}), + status: StatusView.render("show.json", %{activity: create_activity, for: user}), + created_at: Utils.to_masto_date(notification.inserted_at) + } + + test_notifications_rendering([notification], user, [expected]) + end end diff --git a/test/web/mastodon_api/views/status_view_test.exs b/test/web/mastodon_api/views/status_view_test.exs index 5cbadf0fc..f90a0c273 100644 --- a/test/web/mastodon_api/views/status_view_test.exs +++ b/test/web/mastodon_api/views/status_view_test.exs @@ -226,7 +226,8 @@ test "a note activity" do expires_at: nil, direct_conversation_id: nil, thread_muted: false, - emoji_reactions: [] + emoji_reactions: [], + parent_visible: false } } @@ -620,4 +621,20 @@ test "visibility/list" do assert status.visibility == "list" end + + test "has a field for parent visibility" do + user = insert(:user) + poster = insert(:user) + + {:ok, invisible} = CommonAPI.post(poster, %{status: "hey", visibility: "private"}) + + {:ok, visible} = + CommonAPI.post(poster, %{status: "hey", visibility: "private", in_reply_to_id: invisible.id}) + + status = StatusView.render("show.json", activity: visible, for: user) + refute status.pleroma.parent_visible + + status = StatusView.render("show.json", activity: visible, for: poster) + assert status.pleroma.parent_visible + end end diff --git a/test/web/media_proxy/invalidation_test.exs b/test/web/media_proxy/invalidation_test.exs new file mode 100644 index 000000000..926ae74ca --- /dev/null +++ b/test/web/media_proxy/invalidation_test.exs @@ -0,0 +1,64 @@ +defmodule Pleroma.Web.MediaProxy.InvalidationTest do + use ExUnit.Case + use Pleroma.Tests.Helpers + + alias Pleroma.Config + alias Pleroma.Web.MediaProxy.Invalidation + + import ExUnit.CaptureLog + import Mock + import Tesla.Mock + + setup do: clear_config([:media_proxy]) + + setup do + on_exit(fn -> Cachex.clear(:banned_urls_cache) end) + end + + describe "Invalidation.Http" do + test "perform request to clear cache" do + Config.put([:media_proxy, :enabled], false) + Config.put([:media_proxy, :invalidation, :enabled], true) + Config.put([:media_proxy, :invalidation, :provider], Invalidation.Http) + + Config.put([Invalidation.Http], method: :purge, headers: [{"x-refresh", 1}]) + image_url = "http://example.com/media/example.jpg" + Pleroma.Web.MediaProxy.put_in_banned_urls(image_url) + + mock(fn + %{ + method: :purge, + url: "http://example.com/media/example.jpg", + headers: [{"x-refresh", 1}] + } -> + %Tesla.Env{status: 200} + end) + + assert capture_log(fn -> + assert Pleroma.Web.MediaProxy.in_banned_urls(image_url) + assert Invalidation.purge([image_url]) == {:ok, [image_url]} + assert Pleroma.Web.MediaProxy.in_banned_urls(image_url) + end) =~ "Running cache purge: [\"#{image_url}\"]" + end + end + + describe "Invalidation.Script" do + test "run script to clear cache" do + Config.put([:media_proxy, :enabled], false) + Config.put([:media_proxy, :invalidation, :enabled], true) + Config.put([:media_proxy, :invalidation, :provider], Invalidation.Script) + Config.put([Invalidation.Script], script_path: "purge-nginx") + + image_url = "http://example.com/media/example.jpg" + Pleroma.Web.MediaProxy.put_in_banned_urls(image_url) + + with_mocks [{System, [], [cmd: fn _, _ -> {"ok", 0} end]}] do + assert capture_log(fn -> + assert Pleroma.Web.MediaProxy.in_banned_urls(image_url) + assert Invalidation.purge([image_url]) == {:ok, [image_url]} + assert Pleroma.Web.MediaProxy.in_banned_urls(image_url) + end) =~ "Running cache purge: [\"#{image_url}\"]" + end + end + end +end diff --git a/test/web/media_proxy/invalidations/http_test.exs b/test/web/media_proxy/invalidations/http_test.exs index 8a3b4141c..a1bef5237 100644 --- a/test/web/media_proxy/invalidations/http_test.exs +++ b/test/web/media_proxy/invalidations/http_test.exs @@ -5,6 +5,10 @@ defmodule Pleroma.Web.MediaProxy.Invalidation.HttpTest do import ExUnit.CaptureLog import Tesla.Mock + setup do + on_exit(fn -> Cachex.clear(:banned_urls_cache) end) + end + test "logs hasn't error message when request is valid" do mock(fn %{method: :purge, url: "http://example.com/media/example.jpg"} -> @@ -14,8 +18,8 @@ test "logs hasn't error message when request is valid" do refute capture_log(fn -> assert Invalidation.Http.purge( ["http://example.com/media/example.jpg"], - %{} - ) == {:ok, "success"} + [] + ) == {:ok, ["http://example.com/media/example.jpg"]} end) =~ "Error while cache purge" end @@ -28,8 +32,8 @@ test "it write error message in logs when request invalid" do assert capture_log(fn -> assert Invalidation.Http.purge( ["http://example.com/media/example1.jpg"], - %{} - ) == {:ok, "success"} + [] + ) == {:ok, ["http://example.com/media/example1.jpg"]} end) =~ "Error while cache purge: url - http://example.com/media/example1.jpg" end end diff --git a/test/web/media_proxy/invalidations/script_test.exs b/test/web/media_proxy/invalidations/script_test.exs index 1358963ab..51833ab18 100644 --- a/test/web/media_proxy/invalidations/script_test.exs +++ b/test/web/media_proxy/invalidations/script_test.exs @@ -4,17 +4,23 @@ defmodule Pleroma.Web.MediaProxy.Invalidation.ScriptTest do import ExUnit.CaptureLog + setup do + on_exit(fn -> Cachex.clear(:banned_urls_cache) end) + end + test "it logger error when script not found" do assert capture_log(fn -> assert Invalidation.Script.purge( ["http://example.com/media/example.jpg"], - %{script_path: "./example"} - ) == {:error, "\"%ErlangError{original: :enoent}\""} - end) =~ "Error while cache purge: \"%ErlangError{original: :enoent}\"" + script_path: "./example" + ) == {:error, "%ErlangError{original: :enoent}"} + end) =~ "Error while cache purge: %ErlangError{original: :enoent}" - assert Invalidation.Script.purge( - ["http://example.com/media/example.jpg"], - %{} - ) == {:error, "not found script path"} + capture_log(fn -> + assert Invalidation.Script.purge( + ["http://example.com/media/example.jpg"], + [] + ) == {:error, "\"not found script path\""} + end) end end diff --git a/test/web/media_proxy/media_proxy_controller_test.exs b/test/web/media_proxy/media_proxy_controller_test.exs index da79d38a5..d61cef83b 100644 --- a/test/web/media_proxy/media_proxy_controller_test.exs +++ b/test/web/media_proxy/media_proxy_controller_test.exs @@ -10,6 +10,10 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyControllerTest do setup do: clear_config(:media_proxy) setup do: clear_config([Pleroma.Web.Endpoint, :secret_key_base]) + setup do + on_exit(fn -> Cachex.clear(:banned_urls_cache) end) + end + test "it returns 404 when MediaProxy disabled", %{conn: conn} do Config.put([:media_proxy, :enabled], false) @@ -66,4 +70,16 @@ test "it performs ReverseProxy.call when signature valid", %{conn: conn} do assert %Plug.Conn{status: :success} = get(conn, url) end end + + test "it returns 404 when url contains in banned_urls cache", %{conn: conn} do + Config.put([:media_proxy, :enabled], true) + Config.put([Pleroma.Web.Endpoint, :secret_key_base], "00000000000") + url = Pleroma.Web.MediaProxy.encode_url("https://google.fn/test.png") + Pleroma.Web.MediaProxy.put_in_banned_urls("https://google.fn/test.png") + + with_mock Pleroma.ReverseProxy, + call: fn _conn, _url, _opts -> %Plug.Conn{status: :success} end do + assert %Plug.Conn{status: 404, resp_body: "Not Found"} = get(conn, url) + end + end end diff --git a/test/web/node_info_test.exs b/test/web/node_info_test.exs index 9bcc07b37..06b33607f 100644 --- a/test/web/node_info_test.exs +++ b/test/web/node_info_test.exs @@ -67,10 +67,10 @@ test "returns software.repository field in nodeinfo 2.1", %{conn: conn} do end test "returns fieldsLimits field", %{conn: conn} do - Config.put([:instance, :max_account_fields], 10) - Config.put([:instance, :max_remote_account_fields], 15) - Config.put([:instance, :account_field_name_length], 255) - Config.put([:instance, :account_field_value_length], 2048) + clear_config([:instance, :max_account_fields], 10) + clear_config([:instance, :max_remote_account_fields], 15) + clear_config([:instance, :account_field_name_length], 255) + clear_config([:instance, :account_field_value_length], 2048) response = conn @@ -84,8 +84,7 @@ test "returns fieldsLimits field", %{conn: conn} do end test "it returns the safe_dm_mentions feature if enabled", %{conn: conn} do - option = Config.get([:instance, :safe_dm_mentions]) - Config.put([:instance, :safe_dm_mentions], true) + clear_config([:instance, :safe_dm_mentions], true) response = conn @@ -102,8 +101,6 @@ test "it returns the safe_dm_mentions feature if enabled", %{conn: conn} do |> json_response(:ok) refute "safe_dm_mentions" in response["metadata"]["features"] - - Config.put([:instance, :safe_dm_mentions], option) end describe "`metadata/federation/enabled`" do @@ -145,7 +142,8 @@ test "it shows default features flags", %{conn: conn} do "shareable_emoji_packs", "multifetch", "pleroma_emoji_reactions", - "pleroma:api/v1/notifications:include_types_filter" + "pleroma:api/v1/notifications:include_types_filter", + "pleroma_chat_messages" ] assert MapSet.subset?( @@ -155,14 +153,11 @@ test "it shows default features flags", %{conn: conn} do end test "it shows MRF transparency data if enabled", %{conn: conn} do - config = Config.get([:instance, :rewrite_policy]) - Config.put([:instance, :rewrite_policy], [Pleroma.Web.ActivityPub.MRF.SimplePolicy]) - - option = Config.get([:instance, :mrf_transparency]) - Config.put([:instance, :mrf_transparency], true) + clear_config([:mrf, :policies], [Pleroma.Web.ActivityPub.MRF.SimplePolicy]) + clear_config([:mrf, :transparency], true) simple_config = %{"reject" => ["example.com"]} - Config.put(:mrf_simple, simple_config) + clear_config(:mrf_simple, simple_config) response = conn @@ -170,26 +165,17 @@ test "it shows MRF transparency data if enabled", %{conn: conn} do |> json_response(:ok) assert response["metadata"]["federation"]["mrf_simple"] == simple_config - - Config.put([:instance, :rewrite_policy], config) - Config.put([:instance, :mrf_transparency], option) - Config.put(:mrf_simple, %{}) end test "it performs exclusions from MRF transparency data if configured", %{conn: conn} do - config = Config.get([:instance, :rewrite_policy]) - Config.put([:instance, :rewrite_policy], [Pleroma.Web.ActivityPub.MRF.SimplePolicy]) - - option = Config.get([:instance, :mrf_transparency]) - Config.put([:instance, :mrf_transparency], true) - - exclusions = Config.get([:instance, :mrf_transparency_exclusions]) - Config.put([:instance, :mrf_transparency_exclusions], ["other.site"]) + clear_config([:mrf, :policies], [Pleroma.Web.ActivityPub.MRF.SimplePolicy]) + clear_config([:mrf, :transparency], true) + clear_config([:mrf, :transparency_exclusions], ["other.site"]) simple_config = %{"reject" => ["example.com", "other.site"]} - expected_config = %{"reject" => ["example.com"]} + clear_config(:mrf_simple, simple_config) - Config.put(:mrf_simple, simple_config) + expected_config = %{"reject" => ["example.com"]} response = conn @@ -198,10 +184,5 @@ test "it performs exclusions from MRF transparency data if configured", %{conn: assert response["metadata"]["federation"]["mrf_simple"] == expected_config assert response["metadata"]["federation"]["exclusions"] == true - - Config.put([:instance, :rewrite_policy], config) - Config.put([:instance, :mrf_transparency], option) - Config.put([:instance, :mrf_transparency_exclusions], exclusions) - Config.put(:mrf_simple, %{}) end end diff --git a/test/web/pleroma_api/controllers/chat_controller_test.exs b/test/web/pleroma_api/controllers/chat_controller_test.exs new file mode 100644 index 000000000..82e16741d --- /dev/null +++ b/test/web/pleroma_api/controllers/chat_controller_test.exs @@ -0,0 +1,336 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only +defmodule Pleroma.Web.PleromaAPI.ChatControllerTest do + use Pleroma.Web.ConnCase, async: true + + alias Pleroma.Chat + alias Pleroma.Chat.MessageReference + alias Pleroma.Object + alias Pleroma.User + alias Pleroma.Web.ActivityPub.ActivityPub + alias Pleroma.Web.CommonAPI + + import Pleroma.Factory + + describe "POST /api/v1/pleroma/chats/:id/messages/:message_id/read" do + setup do: oauth_access(["write:chats"]) + + test "it marks one message as read", %{conn: conn, user: user} do + other_user = insert(:user) + + {:ok, create} = CommonAPI.post_chat_message(other_user, user, "sup") + {:ok, _create} = CommonAPI.post_chat_message(other_user, user, "sup part 2") + {:ok, chat} = Chat.get_or_create(user.id, other_user.ap_id) + object = Object.normalize(create, false) + cm_ref = MessageReference.for_chat_and_object(chat, object) + + assert cm_ref.unread == true + + result = + conn + |> post("/api/v1/pleroma/chats/#{chat.id}/messages/#{cm_ref.id}/read") + |> json_response_and_validate_schema(200) + + assert result["unread"] == false + + cm_ref = MessageReference.for_chat_and_object(chat, object) + + assert cm_ref.unread == false + end + end + + describe "POST /api/v1/pleroma/chats/:id/read" do + setup do: oauth_access(["write:chats"]) + + test "given a `last_read_id`, it marks everything until then as read", %{ + conn: conn, + user: user + } do + other_user = insert(:user) + + {:ok, create} = CommonAPI.post_chat_message(other_user, user, "sup") + {:ok, _create} = CommonAPI.post_chat_message(other_user, user, "sup part 2") + {:ok, chat} = Chat.get_or_create(user.id, other_user.ap_id) + object = Object.normalize(create, false) + cm_ref = MessageReference.for_chat_and_object(chat, object) + + assert cm_ref.unread == true + + result = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/v1/pleroma/chats/#{chat.id}/read", %{"last_read_id" => cm_ref.id}) + |> json_response_and_validate_schema(200) + + assert result["unread"] == 1 + + cm_ref = MessageReference.for_chat_and_object(chat, object) + + assert cm_ref.unread == false + end + end + + describe "POST /api/v1/pleroma/chats/:id/messages" do + setup do: oauth_access(["write:chats"]) + + test "it posts a message to the chat", %{conn: conn, user: user} do + other_user = insert(:user) + + {:ok, chat} = Chat.get_or_create(user.id, other_user.ap_id) + + result = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/v1/pleroma/chats/#{chat.id}/messages", %{"content" => "Hallo!!"}) + |> json_response_and_validate_schema(200) + + assert result["content"] == "Hallo!!" + assert result["chat_id"] == chat.id |> to_string() + end + + test "it fails if there is no content", %{conn: conn, user: user} do + other_user = insert(:user) + + {:ok, chat} = Chat.get_or_create(user.id, other_user.ap_id) + + result = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/v1/pleroma/chats/#{chat.id}/messages") + |> json_response_and_validate_schema(400) + + assert result + end + + test "it works with an attachment", %{conn: conn, user: user} do + file = %Plug.Upload{ + content_type: "image/jpg", + path: Path.absname("test/fixtures/image.jpg"), + filename: "an_image.jpg" + } + + {:ok, upload} = ActivityPub.upload(file, actor: user.ap_id) + + other_user = insert(:user) + + {:ok, chat} = Chat.get_or_create(user.id, other_user.ap_id) + + result = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/v1/pleroma/chats/#{chat.id}/messages", %{ + "media_id" => to_string(upload.id) + }) + |> json_response_and_validate_schema(200) + + assert result["attachment"] + end + end + + describe "DELETE /api/v1/pleroma/chats/:id/messages/:message_id" do + setup do: oauth_access(["write:chats"]) + + test "it deletes a message from the chat", %{conn: conn, user: user} do + recipient = insert(:user) + + {:ok, message} = + CommonAPI.post_chat_message(user, recipient, "Hello darkness my old friend") + + {:ok, other_message} = CommonAPI.post_chat_message(recipient, user, "nico nico ni") + + object = Object.normalize(message, false) + + chat = Chat.get(user.id, recipient.ap_id) + + cm_ref = MessageReference.for_chat_and_object(chat, object) + + # Deleting your own message removes the message and the reference + result = + conn + |> put_req_header("content-type", "application/json") + |> delete("/api/v1/pleroma/chats/#{chat.id}/messages/#{cm_ref.id}") + |> json_response_and_validate_schema(200) + + assert result["id"] == cm_ref.id + refute MessageReference.get_by_id(cm_ref.id) + assert %{data: %{"type" => "Tombstone"}} = Object.get_by_id(object.id) + + # Deleting other people's messages just removes the reference + object = Object.normalize(other_message, false) + cm_ref = MessageReference.for_chat_and_object(chat, object) + + result = + conn + |> put_req_header("content-type", "application/json") + |> delete("/api/v1/pleroma/chats/#{chat.id}/messages/#{cm_ref.id}") + |> json_response_and_validate_schema(200) + + assert result["id"] == cm_ref.id + refute MessageReference.get_by_id(cm_ref.id) + assert Object.get_by_id(object.id) + end + end + + describe "GET /api/v1/pleroma/chats/:id/messages" do + setup do: oauth_access(["read:chats"]) + + test "it paginates", %{conn: conn, user: user} do + recipient = insert(:user) + + Enum.each(1..30, fn _ -> + {:ok, _} = CommonAPI.post_chat_message(user, recipient, "hey") + end) + + chat = Chat.get(user.id, recipient.ap_id) + + result = + conn + |> get("/api/v1/pleroma/chats/#{chat.id}/messages") + |> json_response_and_validate_schema(200) + + assert length(result) == 20 + + result = + conn + |> get("/api/v1/pleroma/chats/#{chat.id}/messages?max_id=#{List.last(result)["id"]}") + |> json_response_and_validate_schema(200) + + assert length(result) == 10 + end + + test "it returns the messages for a given chat", %{conn: conn, user: user} do + other_user = insert(:user) + third_user = insert(:user) + + {:ok, _} = CommonAPI.post_chat_message(user, other_user, "hey") + {:ok, _} = CommonAPI.post_chat_message(user, third_user, "hey") + {:ok, _} = CommonAPI.post_chat_message(user, other_user, "how are you?") + {:ok, _} = CommonAPI.post_chat_message(other_user, user, "fine, how about you?") + + chat = Chat.get(user.id, other_user.ap_id) + + result = + conn + |> get("/api/v1/pleroma/chats/#{chat.id}/messages") + |> json_response_and_validate_schema(200) + + result + |> Enum.each(fn message -> + assert message["chat_id"] == chat.id |> to_string() + end) + + assert length(result) == 3 + + # Trying to get the chat of a different user + result = + conn + |> assign(:user, other_user) + |> get("/api/v1/pleroma/chats/#{chat.id}/messages") + + assert result |> json_response(404) + end + end + + describe "POST /api/v1/pleroma/chats/by-account-id/:id" do + setup do: oauth_access(["write:chats"]) + + test "it creates or returns a chat", %{conn: conn} do + other_user = insert(:user) + + result = + conn + |> post("/api/v1/pleroma/chats/by-account-id/#{other_user.id}") + |> json_response_and_validate_schema(200) + + assert result["id"] + end + end + + describe "GET /api/v1/pleroma/chats/:id" do + setup do: oauth_access(["read:chats"]) + + test "it returns a chat", %{conn: conn, user: user} do + other_user = insert(:user) + + {:ok, chat} = Chat.get_or_create(user.id, other_user.ap_id) + + result = + conn + |> get("/api/v1/pleroma/chats/#{chat.id}") + |> json_response_and_validate_schema(200) + + assert result["id"] == to_string(chat.id) + end + end + + describe "GET /api/v1/pleroma/chats" do + setup do: oauth_access(["read:chats"]) + + test "it does not return chats with users you blocked", %{conn: conn, user: user} do + recipient = insert(:user) + + {:ok, _} = Chat.get_or_create(user.id, recipient.ap_id) + + result = + conn + |> get("/api/v1/pleroma/chats") + |> json_response_and_validate_schema(200) + + assert length(result) == 1 + + User.block(user, recipient) + + result = + conn + |> get("/api/v1/pleroma/chats") + |> json_response_and_validate_schema(200) + + assert length(result) == 0 + end + + test "it returns all chats", %{conn: conn, user: user} do + Enum.each(1..30, fn _ -> + recipient = insert(:user) + {:ok, _} = Chat.get_or_create(user.id, recipient.ap_id) + end) + + result = + conn + |> get("/api/v1/pleroma/chats") + |> json_response_and_validate_schema(200) + + assert length(result) == 30 + end + + test "it return a list of chats the current user is participating in, in descending order of updates", + %{conn: conn, user: user} do + har = insert(:user) + jafnhar = insert(:user) + tridi = insert(:user) + + {:ok, chat_1} = Chat.get_or_create(user.id, har.ap_id) + :timer.sleep(1000) + {:ok, _chat_2} = Chat.get_or_create(user.id, jafnhar.ap_id) + :timer.sleep(1000) + {:ok, chat_3} = Chat.get_or_create(user.id, tridi.ap_id) + :timer.sleep(1000) + + # bump the second one + {:ok, chat_2} = Chat.bump_or_create(user.id, jafnhar.ap_id) + + result = + conn + |> get("/api/v1/pleroma/chats") + |> json_response_and_validate_schema(200) + + ids = Enum.map(result, & &1["id"]) + + assert ids == [ + chat_2.id |> to_string(), + chat_3.id |> to_string(), + chat_1.id |> to_string() + ] + end + end +end diff --git a/test/web/pleroma_api/controllers/emoji_pack_controller_test.exs b/test/web/pleroma_api/controllers/emoji_pack_controller_test.exs index ee3d281a0..df58a5eb6 100644 --- a/test/web/pleroma_api/controllers/emoji_pack_controller_test.exs +++ b/test/web/pleroma_api/controllers/emoji_pack_controller_test.exs @@ -30,15 +30,55 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do test "GET /api/pleroma/emoji/packs", %{conn: conn} do resp = conn |> get("/api/pleroma/emoji/packs") |> json_response_and_validate_schema(200) - shared = resp["test_pack"] - assert shared["files"] == %{"blank" => "blank.png"} + assert resp["count"] == 3 + + assert resp["packs"] + |> Map.keys() + |> length() == 3 + + shared = resp["packs"]["test_pack"] + assert shared["files"] == %{"blank" => "blank.png", "blank2" => "blank2.png"} assert Map.has_key?(shared["pack"], "download-sha256") assert shared["pack"]["can-download"] assert shared["pack"]["share-files"] - non_shared = resp["test_pack_nonshared"] + non_shared = resp["packs"]["test_pack_nonshared"] assert non_shared["pack"]["share-files"] == false assert non_shared["pack"]["can-download"] == false + + resp = + conn + |> get("/api/pleroma/emoji/packs?page_size=1") + |> json_response_and_validate_schema(200) + + assert resp["count"] == 3 + + packs = Map.keys(resp["packs"]) + + assert length(packs) == 1 + + [pack1] = packs + + resp = + conn + |> get("/api/pleroma/emoji/packs?page_size=1&page=2") + |> json_response_and_validate_schema(200) + + assert resp["count"] == 3 + packs = Map.keys(resp["packs"]) + assert length(packs) == 1 + [pack2] = packs + + resp = + conn + |> get("/api/pleroma/emoji/packs?page_size=1&page=3") + |> json_response_and_validate_schema(200) + + assert resp["count"] == 3 + packs = Map.keys(resp["packs"]) + assert length(packs) == 1 + [pack3] = packs + assert [pack1, pack2, pack3] |> Enum.uniq() |> length() == 3 end describe "GET /api/pleroma/emoji/packs/remote" do @@ -332,7 +372,7 @@ test "for a pack with a fallback source", ctx do Map.put( new_data, "fallback-src-sha256", - "74409E2674DAA06C072729C6C8426C4CB3B7E0B85ED77792DB7A436E11D76DAF" + "1967BB4E42BCC34BCC12D57BE7811D3B7BE52F965BCE45C87BD377B9499CE11D" ) assert ctx[:admin_conn] @@ -398,7 +438,7 @@ test "don't rewrite old emoji", %{admin_conn: admin_conn} do assert admin_conn |> put_req_header("content-type", "multipart/form-data") |> post("/api/pleroma/emoji/packs/test_pack/files", %{ - shortcode: "blank2", + shortcode: "blank3", filename: "dir/blank.png", file: %Plug.Upload{ filename: "blank.png", @@ -407,7 +447,8 @@ test "don't rewrite old emoji", %{admin_conn: admin_conn} do }) |> json_response_and_validate_schema(200) == %{ "blank" => "blank.png", - "blank2" => "dir/blank.png" + "blank2" => "blank2.png", + "blank3" => "dir/blank.png" } assert File.exists?("#{@emoji_path}/test_pack/dir/blank.png") @@ -431,7 +472,7 @@ test "rewrite old emoji with force option", %{admin_conn: admin_conn} do assert admin_conn |> put_req_header("content-type", "multipart/form-data") |> post("/api/pleroma/emoji/packs/test_pack/files", %{ - shortcode: "blank2", + shortcode: "blank3", filename: "dir/blank.png", file: %Plug.Upload{ filename: "blank.png", @@ -440,7 +481,8 @@ test "rewrite old emoji with force option", %{admin_conn: admin_conn} do }) |> json_response_and_validate_schema(200) == %{ "blank" => "blank.png", - "blank2" => "dir/blank.png" + "blank2" => "blank2.png", + "blank3" => "dir/blank.png" } assert File.exists?("#{@emoji_path}/test_pack/dir/blank.png") @@ -448,14 +490,15 @@ test "rewrite old emoji with force option", %{admin_conn: admin_conn} do assert admin_conn |> put_req_header("content-type", "multipart/form-data") |> patch("/api/pleroma/emoji/packs/test_pack/files", %{ - shortcode: "blank2", - new_shortcode: "blank3", + shortcode: "blank3", + new_shortcode: "blank4", new_filename: "dir_2/blank_3.png", force: true }) |> json_response_and_validate_schema(200) == %{ "blank" => "blank.png", - "blank3" => "dir_2/blank_3.png" + "blank2" => "blank2.png", + "blank4" => "dir_2/blank_3.png" } assert File.exists?("#{@emoji_path}/test_pack/dir_2/blank_3.png") @@ -481,7 +524,7 @@ test "add file with not loaded pack", %{admin_conn: admin_conn} do assert admin_conn |> put_req_header("content-type", "multipart/form-data") |> post("/api/pleroma/emoji/packs/not_loaded/files", %{ - shortcode: "blank2", + shortcode: "blank3", filename: "dir/blank.png", file: %Plug.Upload{ filename: "blank.png", @@ -535,7 +578,8 @@ test "new with shortcode as file with update", %{admin_conn: admin_conn} do }) |> json_response_and_validate_schema(200) == %{ "blank" => "blank.png", - "blank4" => "dir/blank.png" + "blank4" => "dir/blank.png", + "blank2" => "blank2.png" } assert File.exists?("#{@emoji_path}/test_pack/dir/blank.png") @@ -549,7 +593,8 @@ test "new with shortcode as file with update", %{admin_conn: admin_conn} do }) |> json_response_and_validate_schema(200) == %{ "blank3" => "dir_2/blank_3.png", - "blank" => "blank.png" + "blank" => "blank.png", + "blank2" => "blank2.png" } refute File.exists?("#{@emoji_path}/test_pack/dir/") @@ -557,7 +602,10 @@ test "new with shortcode as file with update", %{admin_conn: admin_conn} do assert admin_conn |> delete("/api/pleroma/emoji/packs/test_pack/files?shortcode=blank3") - |> json_response_and_validate_schema(200) == %{"blank" => "blank.png"} + |> json_response_and_validate_schema(200) == %{ + "blank" => "blank.png", + "blank2" => "blank2.png" + } refute File.exists?("#{@emoji_path}/test_pack/dir_2/") @@ -581,7 +629,8 @@ test "new with shortcode from url", %{admin_conn: admin_conn} do }) |> json_response_and_validate_schema(200) == %{ "blank_url" => "blank_url.png", - "blank" => "blank.png" + "blank" => "blank.png", + "blank2" => "blank2.png" } assert File.exists?("#{@emoji_path}/test_pack/blank_url.png") @@ -602,15 +651,16 @@ test "new without shortcode", %{admin_conn: admin_conn} do }) |> json_response_and_validate_schema(200) == %{ "shortcode" => "shortcode.png", - "blank" => "blank.png" + "blank" => "blank.png", + "blank2" => "blank2.png" } end test "remove non existing shortcode in pack.json", %{admin_conn: admin_conn} do assert admin_conn - |> delete("/api/pleroma/emoji/packs/test_pack/files?shortcode=blank2") + |> delete("/api/pleroma/emoji/packs/test_pack/files?shortcode=blank3") |> json_response_and_validate_schema(:bad_request) == %{ - "error" => "Emoji \"blank2\" does not exist" + "error" => "Emoji \"blank3\" does not exist" } end @@ -618,12 +668,12 @@ test "update non existing emoji", %{admin_conn: admin_conn} do assert admin_conn |> put_req_header("content-type", "multipart/form-data") |> patch("/api/pleroma/emoji/packs/test_pack/files", %{ - shortcode: "blank2", - new_shortcode: "blank3", + shortcode: "blank3", + new_shortcode: "blank4", new_filename: "dir_2/blank_3.png" }) |> json_response_and_validate_schema(:bad_request) == %{ - "error" => "Emoji \"blank2\" does not exist" + "error" => "Emoji \"blank3\" does not exist" } end @@ -651,7 +701,8 @@ test "creating and deleting a pack", %{admin_conn: admin_conn} do assert Jason.decode!(File.read!("#{@emoji_path}/test_created/pack.json")) == %{ "pack" => %{}, - "files" => %{} + "files" => %{}, + "files_count" => 0 } assert admin_conn @@ -709,14 +760,14 @@ test "filesystem import", %{admin_conn: admin_conn, conn: conn} do resp = conn |> get("/api/pleroma/emoji/packs") |> json_response_and_validate_schema(200) - refute Map.has_key?(resp, "test_pack_for_import") + refute Map.has_key?(resp["packs"], "test_pack_for_import") assert admin_conn |> get("/api/pleroma/emoji/packs/import") |> json_response_and_validate_schema(200) == ["test_pack_for_import"] resp = conn |> get("/api/pleroma/emoji/packs") |> json_response_and_validate_schema(200) - assert resp["test_pack_for_import"]["files"] == %{"blank" => "blank.png"} + assert resp["packs"]["test_pack_for_import"]["files"] == %{"blank" => "blank.png"} File.rm!("#{@emoji_path}/test_pack_for_import/pack.json") refute File.exists?("#{@emoji_path}/test_pack_for_import/pack.json") @@ -736,7 +787,7 @@ test "filesystem import", %{admin_conn: admin_conn, conn: conn} do resp = conn |> get("/api/pleroma/emoji/packs") |> json_response_and_validate_schema(200) - assert resp["test_pack_for_import"]["files"] == %{ + assert resp["packs"]["test_pack_for_import"]["files"] == %{ "blank" => "blank.png", "blank2" => "blank.png", "foo" => "blank.png" @@ -746,7 +797,8 @@ test "filesystem import", %{admin_conn: admin_conn, conn: conn} do describe "GET /api/pleroma/emoji/packs/:name" do test "shows pack.json", %{conn: conn} do assert %{ - "files" => %{"blank" => "blank.png"}, + "files" => files, + "files_count" => 2, "pack" => %{ "can-download" => true, "description" => "Test description", @@ -759,6 +811,28 @@ test "shows pack.json", %{conn: conn} do conn |> get("/api/pleroma/emoji/packs/test_pack") |> json_response_and_validate_schema(200) + + assert files == %{"blank" => "blank.png", "blank2" => "blank2.png"} + + assert %{ + "files" => files, + "files_count" => 2 + } = + conn + |> get("/api/pleroma/emoji/packs/test_pack?page_size=1") + |> json_response_and_validate_schema(200) + + assert files |> Map.keys() |> length() == 1 + + assert %{ + "files" => files, + "files_count" => 2 + } = + conn + |> get("/api/pleroma/emoji/packs/test_pack?page_size=1&page=2") + |> json_response_and_validate_schema(200) + + assert files |> Map.keys() |> length() == 1 end test "non existing pack", %{conn: conn} do diff --git a/test/web/pleroma_api/views/chat/message_reference_view_test.exs b/test/web/pleroma_api/views/chat/message_reference_view_test.exs new file mode 100644 index 000000000..e5b165255 --- /dev/null +++ b/test/web/pleroma_api/views/chat/message_reference_view_test.exs @@ -0,0 +1,61 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.PleromaAPI.Chat.MessageReferenceViewTest do + use Pleroma.DataCase + + alias Pleroma.Chat + alias Pleroma.Chat.MessageReference + alias Pleroma.Object + alias Pleroma.Web.ActivityPub.ActivityPub + alias Pleroma.Web.CommonAPI + alias Pleroma.Web.PleromaAPI.Chat.MessageReferenceView + + import Pleroma.Factory + + test "it displays a chat message" do + user = insert(:user) + recipient = insert(:user) + + file = %Plug.Upload{ + content_type: "image/jpg", + path: Path.absname("test/fixtures/image.jpg"), + filename: "an_image.jpg" + } + + {:ok, upload} = ActivityPub.upload(file, actor: user.ap_id) + {:ok, activity} = CommonAPI.post_chat_message(user, recipient, "kippis :firefox:") + + chat = Chat.get(user.id, recipient.ap_id) + + object = Object.normalize(activity) + + cm_ref = MessageReference.for_chat_and_object(chat, object) + + chat_message = MessageReferenceView.render("show.json", chat_message_reference: cm_ref) + + assert chat_message[:id] == cm_ref.id + assert chat_message[:content] == "kippis :firefox:" + assert chat_message[:account_id] == user.id + assert chat_message[:chat_id] + assert chat_message[:created_at] + assert chat_message[:unread] == false + assert match?([%{shortcode: "firefox"}], chat_message[:emojis]) + + {:ok, activity} = CommonAPI.post_chat_message(recipient, user, "gkgkgk", media_id: upload.id) + + object = Object.normalize(activity) + + cm_ref = MessageReference.for_chat_and_object(chat, object) + + chat_message_two = MessageReferenceView.render("show.json", chat_message_reference: cm_ref) + + assert chat_message_two[:id] == cm_ref.id + assert chat_message_two[:content] == "gkgkgk" + assert chat_message_two[:account_id] == recipient.id + assert chat_message_two[:chat_id] == chat_message[:chat_id] + assert chat_message_two[:attachment] + assert chat_message_two[:unread] == true + end +end diff --git a/test/web/pleroma_api/views/chat_view_test.exs b/test/web/pleroma_api/views/chat_view_test.exs new file mode 100644 index 000000000..14eecb1bd --- /dev/null +++ b/test/web/pleroma_api/views/chat_view_test.exs @@ -0,0 +1,48 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.PleromaAPI.ChatViewTest do + use Pleroma.DataCase + + alias Pleroma.Chat + alias Pleroma.Chat.MessageReference + alias Pleroma.Object + alias Pleroma.Web.CommonAPI + alias Pleroma.Web.CommonAPI.Utils + alias Pleroma.Web.MastodonAPI.AccountView + alias Pleroma.Web.PleromaAPI.Chat.MessageReferenceView + alias Pleroma.Web.PleromaAPI.ChatView + + import Pleroma.Factory + + test "it represents a chat" do + user = insert(:user) + recipient = insert(:user) + + {:ok, chat} = Chat.get_or_create(user.id, recipient.ap_id) + + represented_chat = ChatView.render("show.json", chat: chat) + + assert represented_chat == %{ + id: "#{chat.id}", + account: AccountView.render("show.json", user: recipient), + unread: 0, + last_message: nil, + updated_at: Utils.to_masto_date(chat.updated_at) + } + + {:ok, chat_message_creation} = CommonAPI.post_chat_message(user, recipient, "hello") + + chat_message = Object.normalize(chat_message_creation, false) + + {:ok, chat} = Chat.get_or_create(user.id, recipient.ap_id) + + represented_chat = ChatView.render("show.json", chat: chat) + + cm_ref = MessageReference.for_chat_and_object(chat, chat_message) + + assert represented_chat[:last_message] == + MessageReferenceView.render("show.json", chat_message_reference: cm_ref) + end +end diff --git a/test/web/preload/instance_test.exs b/test/web/preload/instance_test.exs new file mode 100644 index 000000000..a46f28312 --- /dev/null +++ b/test/web/preload/instance_test.exs @@ -0,0 +1,48 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.Preload.Providers.InstanceTest do + use Pleroma.DataCase + alias Pleroma.Web.Preload.Providers.Instance + + setup do: {:ok, Instance.generate_terms(nil)} + + test "it renders the info", %{"/api/v1/instance" => info} do + assert %{ + description: description, + email: "admin@example.com", + registrations: true + } = info + + assert String.equivalent?(description, "Pleroma: An efficient and flexible fediverse server") + end + + test "it renders the panel", %{"/instance/panel.html" => panel} do + assert String.contains?( + panel, + "

    Welcome to Pleroma!

    " + ) + end + + test "it works with overrides" do + clear_config([:instance, :static_dir], "test/fixtures/preload_static") + + %{"/instance/panel.html" => panel} = Instance.generate_terms(nil) + + assert String.contains?( + panel, + "HEY!" + ) + end + + test "it renders the node_info", %{"/nodeinfo/2.0.json" => nodeinfo} do + %{ + metadata: metadata, + version: "2.0" + } = nodeinfo + + assert metadata.private == false + assert metadata.suggestions == %{enabled: false} + end +end diff --git a/test/web/preload/status_net_test.exs b/test/web/preload/status_net_test.exs new file mode 100644 index 000000000..df7acdb11 --- /dev/null +++ b/test/web/preload/status_net_test.exs @@ -0,0 +1,15 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.Preload.Providers.StatusNetTest do + use Pleroma.DataCase + alias Pleroma.Web.Preload.Providers.StatusNet + + setup do: {:ok, StatusNet.generate_terms(nil)} + + test "it renders the info", %{"/api/statusnet/config.json" => info} do + assert {:ok, res} = Jason.decode(info) + assert res["site"] + end +end diff --git a/test/web/preload/timeline_test.exs b/test/web/preload/timeline_test.exs new file mode 100644 index 000000000..fea95a6a4 --- /dev/null +++ b/test/web/preload/timeline_test.exs @@ -0,0 +1,74 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.Preload.Providers.TimelineTest do + use Pleroma.DataCase + import Pleroma.Factory + + alias Pleroma.Web.CommonAPI + alias Pleroma.Web.Preload.Providers.Timelines + + @public_url "/api/v1/timelines/public" + + describe "unauthenticated timeliness when restricted" do + setup do + svd_config = Pleroma.Config.get([:restrict_unauthenticated, :timelines]) + Pleroma.Config.put([:restrict_unauthenticated, :timelines], %{local: true, federated: true}) + + on_exit(fn -> + Pleroma.Config.put([:restrict_unauthenticated, :timelines], svd_config) + end) + + :ok + end + + test "return nothing" do + tl_data = Timelines.generate_terms(%{}) + + refute Map.has_key?(tl_data, "/api/v1/timelines/public") + end + end + + describe "unauthenticated timeliness when unrestricted" do + setup do + svd_config = Pleroma.Config.get([:restrict_unauthenticated, :timelines]) + + Pleroma.Config.put([:restrict_unauthenticated, :timelines], %{ + local: false, + federated: false + }) + + on_exit(fn -> + Pleroma.Config.put([:restrict_unauthenticated, :timelines], svd_config) + end) + + {:ok, user: insert(:user)} + end + + test "returns the timeline when not restricted" do + assert Timelines.generate_terms(%{}) + |> Map.has_key?(@public_url) + end + + test "returns public items", %{user: user} do + {:ok, _} = CommonAPI.post(user, %{status: "it's post 1!"}) + {:ok, _} = CommonAPI.post(user, %{status: "it's post 2!"}) + {:ok, _} = CommonAPI.post(user, %{status: "it's post 3!"}) + + assert Timelines.generate_terms(%{}) + |> Map.fetch!(@public_url) + |> Enum.count() == 3 + end + + test "does not return non-public items", %{user: user} do + {:ok, _} = CommonAPI.post(user, %{status: "it's post 1!", visibility: "unlisted"}) + {:ok, _} = CommonAPI.post(user, %{status: "it's post 2!", visibility: "direct"}) + {:ok, _} = CommonAPI.post(user, %{status: "it's post 3!"}) + + assert Timelines.generate_terms(%{}) + |> Map.fetch!(@public_url) + |> Enum.count() == 1 + end + end +end diff --git a/test/web/preload/user_test.exs b/test/web/preload/user_test.exs new file mode 100644 index 000000000..83f065e27 --- /dev/null +++ b/test/web/preload/user_test.exs @@ -0,0 +1,33 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.Preload.Providers.UserTest do + use Pleroma.DataCase + import Pleroma.Factory + alias Pleroma.Web.Preload.Providers.User + + describe "returns empty when user doesn't exist" do + test "nil user specified" do + assert User.generate_terms(%{user: nil}) == %{} + end + + test "missing user specified" do + assert User.generate_terms(%{user: :not_a_user}) == %{} + end + end + + describe "specified user exists" do + setup do + user = insert(:user) + + terms = User.generate_terms(%{user: user}) + %{terms: terms, user: user} + end + + test "account is rendered", %{terms: terms, user: user} do + account = terms["/api/v1/accounts/#{user.id}"] + assert %{acct: user, username: user} = account + end + end +end diff --git a/test/web/push/impl_test.exs b/test/web/push/impl_test.exs index a826b24c9..b48952b29 100644 --- a/test/web/push/impl_test.exs +++ b/test/web/push/impl_test.exs @@ -5,8 +5,10 @@ defmodule Pleroma.Web.Push.ImplTest do use Pleroma.DataCase + alias Pleroma.Notification alias Pleroma.Object alias Pleroma.User + alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.CommonAPI alias Pleroma.Web.Push.Impl alias Pleroma.Web.Push.Subscription @@ -60,7 +62,8 @@ test "performs sending notifications" do notif = insert(:notification, user: user, - activity: activity + activity: activity, + type: "mention" ) assert Impl.perform(notif) == {:ok, [:ok, :ok]} @@ -126,7 +129,7 @@ test "renders title and body for create activity" do ) == "@Bob: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce sagittis fini..." - assert Impl.format_title(%{activity: activity}) == + assert Impl.format_title(%{activity: activity, type: "mention"}) == "New Mention" end @@ -136,9 +139,10 @@ test "renders title and body for follow activity" do {:ok, _, _, activity} = CommonAPI.follow(user, other_user) object = Object.normalize(activity, false) - assert Impl.format_body(%{activity: activity}, user, object) == "@Bob has followed you" + assert Impl.format_body(%{activity: activity, type: "follow"}, user, object) == + "@Bob has followed you" - assert Impl.format_title(%{activity: activity}) == + assert Impl.format_title(%{activity: activity, type: "follow"}) == "New Follower" end @@ -157,7 +161,7 @@ test "renders title and body for announce activity" do assert Impl.format_body(%{activity: announce_activity}, user, object) == "@#{user.nickname} repeated: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce sagittis fini..." - assert Impl.format_title(%{activity: announce_activity}) == + assert Impl.format_title(%{activity: announce_activity, type: "reblog"}) == "New Repeat" end @@ -173,9 +177,10 @@ test "renders title and body for like activity" do {:ok, activity} = CommonAPI.favorite(user, activity.id) object = Object.normalize(activity) - assert Impl.format_body(%{activity: activity}, user, object) == "@Bob has favorited your post" + assert Impl.format_body(%{activity: activity, type: "favourite"}, user, object) == + "@Bob has favorited your post" - assert Impl.format_title(%{activity: activity}) == + assert Impl.format_title(%{activity: activity, type: "favourite"}) == "New Favorite" end @@ -193,6 +198,46 @@ test "renders title for create activity with direct visibility" do end describe "build_content/3" do + test "builds content for chat messages" do + user = insert(:user) + recipient = insert(:user) + + {:ok, chat} = CommonAPI.post_chat_message(user, recipient, "hey") + object = Object.normalize(chat, false) + [notification] = Notification.for_user(recipient) + + res = Impl.build_content(notification, user, object) + + assert res == %{ + body: "@#{user.nickname}: hey", + title: "New Chat Message" + } + end + + test "builds content for chat messages with no content" do + user = insert(:user) + recipient = insert(:user) + + file = %Plug.Upload{ + content_type: "image/jpg", + path: Path.absname("test/fixtures/image.jpg"), + filename: "an_image.jpg" + } + + {:ok, upload} = ActivityPub.upload(file, actor: user.ap_id) + + {:ok, chat} = CommonAPI.post_chat_message(user, recipient, nil, media_id: upload.id) + object = Object.normalize(chat, false) + [notification] = Notification.for_user(recipient) + + res = Impl.build_content(notification, user, object) + + assert res == %{ + body: "@#{user.nickname}: (Attachment)", + title: "New Chat Message" + } + end + test "hides details for notifications when privacy option enabled" do user = insert(:user, nickname: "Bob") user2 = insert(:user, nickname: "Rob", notification_settings: %{privacy_option: true}) @@ -218,7 +263,7 @@ test "hides details for notifications when privacy option enabled" do status: "Lorem ipsum dolor sit amet, consectetur :firefox: adipiscing elit. Fusce sagittis finibus turpis." }) - notif = insert(:notification, user: user2, activity: activity) + notif = insert(:notification, user: user2, activity: activity, type: "mention") actor = User.get_cached_by_ap_id(notif.activity.data["actor"]) object = Object.normalize(activity) @@ -281,7 +326,7 @@ test "returns regular content for notifications with privacy option disabled" do {:ok, activity} = CommonAPI.favorite(user, activity.id) - notif = insert(:notification, user: user2, activity: activity) + notif = insert(:notification, user: user2, activity: activity, type: "favourite") actor = User.get_cached_by_ap_id(notif.activity.data["actor"]) object = Object.normalize(activity) diff --git a/test/web/rich_media/parser_test.exs b/test/web/rich_media/parser_test.exs index e54a13bc8..420a612c6 100644 --- a/test/web/rich_media/parser_test.exs +++ b/test/web/rich_media/parser_test.exs @@ -60,19 +60,19 @@ test "returns error when no metadata present" do test "doesn't just add a title" do assert Pleroma.Web.RichMedia.Parser.parse("http://example.com/non-ogp") == {:error, - "Found metadata was invalid or incomplete: %{url: \"http://example.com/non-ogp\"}"} + "Found metadata was invalid or incomplete: %{\"url\" => \"http://example.com/non-ogp\"}"} end test "parses ogp" do assert Pleroma.Web.RichMedia.Parser.parse("http://example.com/ogp") == {:ok, %{ - image: "http://ia.media-imdb.com/images/rock.jpg", - title: "The Rock", - description: + "image" => "http://ia.media-imdb.com/images/rock.jpg", + "title" => "The Rock", + "description" => "Directed by Michael Bay. With Sean Connery, Nicolas Cage, Ed Harris, John Spencer.", - type: "video.movie", - url: "http://example.com/ogp" + "type" => "video.movie", + "url" => "http://example.com/ogp" }} end @@ -80,12 +80,12 @@ test "falls back to when ogp:title is missing" do assert Pleroma.Web.RichMedia.Parser.parse("http://example.com/ogp-missing-title") == {:ok, %{ - image: "http://ia.media-imdb.com/images/rock.jpg", - title: "The Rock (1996)", - description: + "image" => "http://ia.media-imdb.com/images/rock.jpg", + "title" => "The Rock (1996)", + "description" => "Directed by Michael Bay. With Sean Connery, Nicolas Cage, Ed Harris, John Spencer.", - type: "video.movie", - url: "http://example.com/ogp-missing-title" + "type" => "video.movie", + "url" => "http://example.com/ogp-missing-title" }} end @@ -93,12 +93,12 @@ test "parses twitter card" do assert Pleroma.Web.RichMedia.Parser.parse("http://example.com/twitter-card") == {:ok, %{ - card: "summary", - site: "@flickr", - image: "https://farm6.staticflickr.com/5510/14338202952_93595258ff_z.jpg", - title: "Small Island Developing States Photo Submission", - description: "View the album on Flickr.", - url: "http://example.com/twitter-card" + "card" => "summary", + "site" => "@flickr", + "image" => "https://farm6.staticflickr.com/5510/14338202952_93595258ff_z.jpg", + "title" => "Small Island Developing States Photo Submission", + "description" => "View the album on Flickr.", + "url" => "http://example.com/twitter-card" }} end @@ -106,27 +106,28 @@ test "parses OEmbed" do assert Pleroma.Web.RichMedia.Parser.parse("http://example.com/oembed") == {:ok, %{ - author_name: "‮‭‬bees‬", - author_url: "https://www.flickr.com/photos/bees/", - cache_age: 3600, - flickr_type: "photo", - height: "768", - html: + "author_name" => "‮‭‬bees‬", + "author_url" => "https://www.flickr.com/photos/bees/", + "cache_age" => 3600, + "flickr_type" => "photo", + "height" => "768", + "html" => "<a data-flickr-embed=\"true\" href=\"https://www.flickr.com/photos/bees/2362225867/\" title=\"Bacon Lollys by ‮‭‬bees‬, on Flickr\"><img src=\"https://farm4.staticflickr.com/3040/2362225867_4a87ab8baf_b.jpg\" width=\"1024\" height=\"768\" alt=\"Bacon Lollys\"></a><script async src=\"https://embedr.flickr.com/assets/client-code.js\" charset=\"utf-8\"></script>", - license: "All Rights Reserved", - license_id: 0, - provider_name: "Flickr", - provider_url: "https://www.flickr.com/", - thumbnail_height: 150, - thumbnail_url: "https://farm4.staticflickr.com/3040/2362225867_4a87ab8baf_q.jpg", - thumbnail_width: 150, - title: "Bacon Lollys", - type: "photo", - url: "http://example.com/oembed", - version: "1.0", - web_page: "https://www.flickr.com/photos/bees/2362225867/", - web_page_short_url: "https://flic.kr/p/4AK2sc", - width: "1024" + "license" => "All Rights Reserved", + "license_id" => 0, + "provider_name" => "Flickr", + "provider_url" => "https://www.flickr.com/", + "thumbnail_height" => 150, + "thumbnail_url" => + "https://farm4.staticflickr.com/3040/2362225867_4a87ab8baf_q.jpg", + "thumbnail_width" => 150, + "title" => "Bacon Lollys", + "type" => "photo", + "url" => "http://example.com/oembed", + "version" => "1.0", + "web_page" => "https://www.flickr.com/photos/bees/2362225867/", + "web_page_short_url" => "https://flic.kr/p/4AK2sc", + "width" => "1024" }} end diff --git a/test/web/rich_media/parsers/twitter_card_test.exs b/test/web/rich_media/parsers/twitter_card_test.exs index 87c767c15..219f005a2 100644 --- a/test/web/rich_media/parsers/twitter_card_test.exs +++ b/test/web/rich_media/parsers/twitter_card_test.exs @@ -7,8 +7,7 @@ defmodule Pleroma.Web.RichMedia.Parsers.TwitterCardTest do alias Pleroma.Web.RichMedia.Parsers.TwitterCard test "returns error when html not contains twitter card" do - assert TwitterCard.parse([{"html", [], [{"head", [], []}, {"body", [], []}]}], %{}) == - {:error, "No twitter card metadata found"} + assert TwitterCard.parse([{"html", [], [{"head", [], []}, {"body", [], []}]}], %{}) == %{} end test "parses twitter card with only name attributes" do @@ -17,15 +16,21 @@ test "parses twitter card with only name attributes" do |> Floki.parse_document!() assert TwitterCard.parse(html, %{}) == - {:ok, - %{ - "app:id:googleplay": "com.nytimes.android", - "app:name:googleplay": "NYTimes", - "app:url:googleplay": "nytimes://reader/id/100000006583622", - site: nil, - title: - "She Was Arrested at 14. Then Her Photo Went to a Facial Recognition Database. - The New York Times" - }} + %{ + "app:id:googleplay" => "com.nytimes.android", + "app:name:googleplay" => "NYTimes", + "app:url:googleplay" => "nytimes://reader/id/100000006583622", + "site" => nil, + "description" => + "With little oversight, the N.Y.P.D. has been using powerful surveillance technology on photos of children and teenagers.", + "image" => + "https://static01.nyt.com/images/2019/08/01/nyregion/01nypd-juveniles-promo/01nypd-juveniles-promo-facebookJumbo.jpg", + "type" => "article", + "url" => + "https://www.nytimes.com/2019/08/01/nyregion/nypd-facial-recognition-children-teenagers.html", + "title" => + "She Was Arrested at 14. Then Her Photo Went to a Facial Recognition Database." + } end test "parses twitter card with only property attributes" do @@ -34,19 +39,19 @@ test "parses twitter card with only property attributes" do |> Floki.parse_document!() assert TwitterCard.parse(html, %{}) == - {:ok, - %{ - card: "summary_large_image", - description: - "With little oversight, the N.Y.P.D. has been using powerful surveillance technology on photos of children and teenagers.", - image: - "https://static01.nyt.com/images/2019/08/01/nyregion/01nypd-juveniles-promo/01nypd-juveniles-promo-videoSixteenByNineJumbo1600.jpg", - "image:alt": "", - title: - "She Was Arrested at 14. Then Her Photo Went to a Facial Recognition Database.", - url: - "https://www.nytimes.com/2019/08/01/nyregion/nypd-facial-recognition-children-teenagers.html" - }} + %{ + "card" => "summary_large_image", + "description" => + "With little oversight, the N.Y.P.D. has been using powerful surveillance technology on photos of children and teenagers.", + "image" => + "https://static01.nyt.com/images/2019/08/01/nyregion/01nypd-juveniles-promo/01nypd-juveniles-promo-videoSixteenByNineJumbo1600.jpg", + "image:alt" => "", + "title" => + "She Was Arrested at 14. Then Her Photo Went to a Facial Recognition Database.", + "url" => + "https://www.nytimes.com/2019/08/01/nyregion/nypd-facial-recognition-children-teenagers.html", + "type" => "article" + } end test "parses twitter card with name & property attributes" do @@ -55,23 +60,23 @@ test "parses twitter card with name & property attributes" do |> Floki.parse_document!() assert TwitterCard.parse(html, %{}) == - {:ok, - %{ - "app:id:googleplay": "com.nytimes.android", - "app:name:googleplay": "NYTimes", - "app:url:googleplay": "nytimes://reader/id/100000006583622", - card: "summary_large_image", - description: - "With little oversight, the N.Y.P.D. has been using powerful surveillance technology on photos of children and teenagers.", - image: - "https://static01.nyt.com/images/2019/08/01/nyregion/01nypd-juveniles-promo/01nypd-juveniles-promo-videoSixteenByNineJumbo1600.jpg", - "image:alt": "", - site: nil, - title: - "She Was Arrested at 14. Then Her Photo Went to a Facial Recognition Database.", - url: - "https://www.nytimes.com/2019/08/01/nyregion/nypd-facial-recognition-children-teenagers.html" - }} + %{ + "app:id:googleplay" => "com.nytimes.android", + "app:name:googleplay" => "NYTimes", + "app:url:googleplay" => "nytimes://reader/id/100000006583622", + "card" => "summary_large_image", + "description" => + "With little oversight, the N.Y.P.D. has been using powerful surveillance technology on photos of children and teenagers.", + "image" => + "https://static01.nyt.com/images/2019/08/01/nyregion/01nypd-juveniles-promo/01nypd-juveniles-promo-videoSixteenByNineJumbo1600.jpg", + "image:alt" => "", + "site" => nil, + "title" => + "She Was Arrested at 14. Then Her Photo Went to a Facial Recognition Database.", + "url" => + "https://www.nytimes.com/2019/08/01/nyregion/nypd-facial-recognition-children-teenagers.html", + "type" => "article" + } end test "respect only first title tag on the page" do @@ -84,14 +89,17 @@ test "respect only first title tag on the page" do File.read!("test/fixtures/margaret-corbin-grave-west-point.html") |> Floki.parse_document!() assert TwitterCard.parse(html, %{}) == - {:ok, - %{ - site: "@atlasobscura", - title: - "The Missing Grave of Margaret Corbin, Revolutionary War Veteran - Atlas Obscura", - card: "summary_large_image", - image: image_path - }} + %{ + "site" => "@atlasobscura", + "title" => "The Missing Grave of Margaret Corbin, Revolutionary War Veteran", + "card" => "summary_large_image", + "image" => image_path, + "description" => + "She's the only woman veteran honored with a monument at West Point. But where was she buried?", + "site_name" => "Atlas Obscura", + "type" => "article", + "url" => "http://www.atlasobscura.com/articles/margaret-corbin-grave-west-point" + } end test "takes first founded title in html head if there is html markup error" do @@ -100,14 +108,20 @@ test "takes first founded title in html head if there is html markup error" do |> Floki.parse_document!() assert TwitterCard.parse(html, %{}) == - {:ok, - %{ - site: nil, - title: - "She Was Arrested at 14. Then Her Photo Went to a Facial Recognition Database. - The New York Times", - "app:id:googleplay": "com.nytimes.android", - "app:name:googleplay": "NYTimes", - "app:url:googleplay": "nytimes://reader/id/100000006583622" - }} + %{ + "site" => nil, + "title" => + "She Was Arrested at 14. Then Her Photo Went to a Facial Recognition Database.", + "app:id:googleplay" => "com.nytimes.android", + "app:name:googleplay" => "NYTimes", + "app:url:googleplay" => "nytimes://reader/id/100000006583622", + "description" => + "With little oversight, the N.Y.P.D. has been using powerful surveillance technology on photos of children and teenagers.", + "image" => + "https://static01.nyt.com/images/2019/08/01/nyregion/01nypd-juveniles-promo/01nypd-juveniles-promo-facebookJumbo.jpg", + "type" => "article", + "url" => + "https://www.nytimes.com/2019/08/01/nyregion/nypd-facial-recognition-children-teenagers.html" + } end end diff --git a/test/web/streamer/streamer_test.exs b/test/web/streamer/streamer_test.exs index 4cf640ce8..245f6e63f 100644 --- a/test/web/streamer/streamer_test.exs +++ b/test/web/streamer/streamer_test.exs @@ -7,11 +7,15 @@ defmodule Pleroma.Web.StreamerTest do import Pleroma.Factory + alias Pleroma.Chat + alias Pleroma.Chat.MessageReference alias Pleroma.Conversation.Participation alias Pleroma.List + alias Pleroma.Object alias Pleroma.User alias Pleroma.Web.CommonAPI alias Pleroma.Web.Streamer + alias Pleroma.Web.StreamerView @moduletag needs_streamer: true, capture_log: true @@ -124,7 +128,7 @@ test "it streams boosts of mastodon user in the 'user' stream", %{user: user} do |> Map.put("object", activity.data["object"]) |> Map.put("actor", user.ap_id) - {:ok, %Pleroma.Activity{data: data, local: false} = announce} = + {:ok, %Pleroma.Activity{data: _data, local: false} = announce} = Pleroma.Web.ActivityPub.Transmogrifier.handle_incoming(data) assert_receive {:render_with_user, Pleroma.Web.StreamerView, "update.json", ^announce} @@ -145,6 +149,57 @@ test "it sends notify to in the 'user:notification' stream", %{user: user, notif refute Streamer.filtered_by_user?(user, notify) end + test "it sends chat messages to the 'user:pleroma_chat' stream", %{user: user} do + other_user = insert(:user) + + {:ok, create_activity} = CommonAPI.post_chat_message(other_user, user, "hey cirno") + object = Object.normalize(create_activity, false) + chat = Chat.get(user.id, other_user.ap_id) + cm_ref = MessageReference.for_chat_and_object(chat, object) + cm_ref = %{cm_ref | chat: chat, object: object} + + Streamer.get_topic_and_add_socket("user:pleroma_chat", user) + Streamer.stream("user:pleroma_chat", {user, cm_ref}) + + text = StreamerView.render("chat_update.json", %{chat_message_reference: cm_ref}) + + assert text =~ "hey cirno" + assert_receive {:text, ^text} + end + + test "it sends chat messages to the 'user' stream", %{user: user} do + other_user = insert(:user) + + {:ok, create_activity} = CommonAPI.post_chat_message(other_user, user, "hey cirno") + object = Object.normalize(create_activity, false) + chat = Chat.get(user.id, other_user.ap_id) + cm_ref = MessageReference.for_chat_and_object(chat, object) + cm_ref = %{cm_ref | chat: chat, object: object} + + Streamer.get_topic_and_add_socket("user", user) + Streamer.stream("user", {user, cm_ref}) + + text = StreamerView.render("chat_update.json", %{chat_message_reference: cm_ref}) + + assert text =~ "hey cirno" + assert_receive {:text, ^text} + end + + test "it sends chat message notifications to the 'user:notification' stream", %{user: user} do + other_user = insert(:user) + + {:ok, create_activity} = CommonAPI.post_chat_message(other_user, user, "hey") + + notify = + Repo.get_by(Pleroma.Notification, user_id: user.id, activity_id: create_activity.id) + |> Repo.preload(:activity) + + Streamer.get_topic_and_add_socket("user:notification", user) + Streamer.stream("user:notification", notify) + assert_receive {:render_with_user, _, _, ^notify} + refute Streamer.filtered_by_user?(user, notify) + end + test "it doesn't send notify to the 'user:notification' stream when a user is blocked", %{ user: user } do diff --git a/test/workers/cron/purge_expired_activities_worker_test.exs b/test/workers/cron/purge_expired_activities_worker_test.exs index 5864f9e5f..b1db59fdf 100644 --- a/test/workers/cron/purge_expired_activities_worker_test.exs +++ b/test/workers/cron/purge_expired_activities_worker_test.exs @@ -11,7 +11,9 @@ defmodule Pleroma.Workers.Cron.PurgeExpiredActivitiesWorkerTest do import Pleroma.Factory import ExUnit.CaptureLog - setup do: clear_config([ActivityExpiration, :enabled]) + setup do + clear_config([ActivityExpiration, :enabled]) + end test "deletes an expiration activity" do Pleroma.Config.put([ActivityExpiration, :enabled], true) @@ -36,6 +38,32 @@ test "deletes an expiration activity" do refute Pleroma.Repo.get(Pleroma.ActivityExpiration, expiration.id) end + test "works with ActivityExpirationPolicy" do + Pleroma.Config.put([ActivityExpiration, :enabled], true) + + clear_config([:mrf, :policies], Pleroma.Web.ActivityPub.MRF.ActivityExpirationPolicy) + + user = insert(:user) + + days = Pleroma.Config.get([:mrf_activity_expiration, :days], 365) + + {:ok, %{id: id} = activity} = Pleroma.Web.CommonAPI.post(user, %{status: "cofe"}) + + past_date = + NaiveDateTime.utc_now() |> Timex.shift(days: -days) |> NaiveDateTime.truncate(:second) + + activity + |> Repo.preload(:expiration) + |> Map.get(:expiration) + |> Ecto.Changeset.change(%{scheduled_at: past_date}) + |> Repo.update!() + + Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker.perform(:ops, :pid) + + assert [%{data: %{"type" => "Delete", "deleted_activity_id" => ^id}}] = + Pleroma.Repo.all(Pleroma.Activity) + end + describe "delete_activity/1" do test "adds log message if activity isn't find" do assert capture_log([level: :error], fn ->