├── .dependabot └── config.yml ├── .formatter.exs ├── .github └── workflows │ └── default.yml ├── .gitignore ├── LICENSE ├── README.md ├── config └── config.exs ├── jest-puppeteer.config.js ├── jest.config.json ├── lib ├── log_viewer.ex └── log_viewer │ ├── fake_logger.ex │ ├── logger.ex │ ├── phoenix_socket.ex │ ├── router.ex │ ├── server.ex │ ├── v1_websocket_handler.ex │ └── websocket_handler.ex ├── mix.exs ├── mix.lock ├── package.json ├── priv ├── .nojekyll ├── 404.html ├── _nuxt │ ├── 236f0776065c7b9e4cf5.js │ ├── 26540c51b89c131740f1.js │ ├── 482eb42b0d831ed5d2ed.js │ ├── 521d7c9bf2fb650e51e0.js │ ├── LICENSES │ └── aa286e6addf1ed5229a8.js ├── favicon.ico └── index.html ├── src ├── .editorconfig ├── .eslintrc.js ├── .gitignore ├── .prettierrc ├── README.md ├── assets │ └── README.md ├── components │ ├── LogDetail.vue │ └── PieChart.js ├── layouts │ └── default.vue ├── middleware │ └── websocket.js ├── nuxt.config.js ├── package.json ├── pages │ └── index.vue ├── plugins │ └── vue-highlight.js ├── static │ └── favicon.ico ├── store │ ├── actions.js │ ├── getters.js │ ├── mutations.js │ └── state.js └── yarn.lock ├── test ├── browser │ └── boot.test.js ├── log_viewer_test.exs └── test_helper.exs └── yarn.lock /.dependabot/config.yml: -------------------------------------------------------------------------------- 1 | version: 1 2 | update_configs: 3 | - package_manager: "elixir:hex" 4 | directory: "/" 5 | update_schedule: "weekly" 6 | automerged_updates: 7 | - match: 8 | dependency_type: "development" 9 | update_type: "semver:patch" 10 | - match: 11 | dependency_type: "production" 12 | update_type: "semver:patch" 13 | -------------------------------------------------------------------------------- /.formatter.exs: -------------------------------------------------------------------------------- 1 | # Used by "mix format" 2 | [ 3 | inputs: ["mix.exs", "{config,lib,test}/**/*.{ex,exs}"] 4 | ] 5 | -------------------------------------------------------------------------------- /.github/workflows/default.yml: -------------------------------------------------------------------------------- 1 | name: Tests 2 | 3 | on: [push] 4 | 5 | jobs: 6 | build: 7 | 8 | runs-on: ubuntu-latest 9 | name: OTP ${{matrix.otp}} / Elixir ${{matrix.elixir}} 10 | strategy: 11 | matrix: 12 | otp: [22.2] 13 | elixir: [1.7.4, 1.8.2, 1.9.4, 1.10.2] 14 | node: ['10'] 15 | steps: 16 | # checkout 17 | - uses: actions/checkout@v2 18 | # setup environments 19 | - uses: actions/setup-elixir@v1 20 | with: 21 | otp-version: ${{matrix.otp}} 22 | elixir-version: ${{matrix.elixir}} 23 | - name: Setup node 24 | uses: actions/setup-node@v1 25 | with: 26 | node-version: ${{ matrix.node }} 27 | # lint 28 | - name: lint 29 | run: | 30 | mix format --check-formatted || true 31 | # restore caches 32 | - uses: actions/cache@v1 33 | id: mix-cache 34 | with: 35 | path: deps 36 | key: ${{ runner.os }}-mix-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }} 37 | restore-keys: | 38 | ${{ runner.os }}-mix- 39 | - name: Get yarn cache directory path 40 | id: yarn-cache-dir-path 41 | run: echo "::set-output name=dir::$(yarn cache dir)" 42 | - uses: actions/cache@v1 43 | id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) 44 | with: 45 | path: ${{ steps.yarn-cache-dir-path.outputs.dir }} 46 | key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} 47 | restore-keys: | 48 | ${{ runner.os }}-yarn- 49 | 50 | - name: install mix deps 51 | if: steps.mix-cache.outputs.cache-hit != 'true' 52 | run: mix deps.get 53 | - run: mix compile 54 | - name: install npm modules 55 | run: yarn install 56 | - name: Run Jest 57 | run: | 58 | yarn jest --detectOpenHandles 59 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # The directory Mix will write compiled artifacts to. 2 | /_build/ 3 | 4 | # If you run "mix test --cover", coverage assets end up here. 5 | /cover/ 6 | 7 | # The directory Mix downloads your dependencies sources to. 8 | /deps/ 9 | 10 | # Where 3rd-party dependencies like ExDoc output generated docs. 11 | /doc/ 12 | 13 | # Ignore .fetch files in case you like to edit your project deps locally. 14 | /.fetch 15 | 16 | # If the VM crashes, it generates a dump, let's ignore it too. 17 | erl_crash.dump 18 | 19 | # Also ignore archive artifacts (built via "mix archive.build"). 20 | *.ez 21 | 22 | # Ignore package tarball (built via "mix hex.build"). 23 | log_viewer-*.tar 24 | 25 | /.vscode/ 26 | 27 | /node_modules 28 | 29 | .elixir_ls 30 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Shuhei Hayashibara 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![Tests](https://github.com/shufo/log_viewer/workflows/Tests/badge.svg) 2 | [![Dependabot Status](https://api.dependabot.com/badges/status?host=github&repo=shufo/log_viewer)](https://dependabot.com) 3 | 4 | # LogViewer 5 | 6 | An Web based Log Viewer for Elixir and Phoenix 7 | 8 | ## Overview 9 | 10 | 11 | 12 | ### Features 13 | 14 | - :mag: Filtering logs with level and search word 15 | - :fast_forward: Realtime Update 16 | - :rainbow: Syntax Highlighted logs 17 | - Phoenix 1.3 & 1.4 supported 18 | 19 | ![Imgur](https://i.imgur.com/0qj93i4.gif) 20 | 21 | ## Installation 22 | 23 | `mix.exs` 24 | 25 | ```elixir 26 | def deps do 27 | [ 28 | {:log_viewer, "~> 0.1.0", only: [:dev]} 29 | ] 30 | end 31 | ``` 32 | 33 | Log Viewer is mainly focused on development purpose. So in production environment, please consider to using Log Management platform like AWS CloudWatch Logs, Papertrail and timber. 34 | 35 | ## Configuration 36 | 37 | Add `{LogViewer.Logger, []}` to your logger backends 38 | 39 | ```elixir 40 | config :logger, 41 | backends: [{LogViewer.Logger, []}, :console] 42 | ``` 43 | 44 | then start your application and open http://localhost:5900 45 | 46 | ```bash 47 | $ ➜ iex -S mix 48 | Erlang/OTP 21 [erts-10.1] [source] [64-bit] [smp:16:16] [ds:16:16:10] [async-threads:1] [hipe] 49 | 50 | 05:51:25.379 [info] Log Viewer started listening on http://localhost:5900 51 | Interactive Elixir (1.7.4) - press Ctrl+C to exit (type h() ENTER for help) 52 | ``` 53 | 54 | then output logs by Logger 55 | 56 | ```elixir 57 | iex> require Logger 58 | iex> Logger.info("foo") 59 | iex> Logger.debug("foo") 60 | iex> Logger.warn("foo") 61 | iex> Logger.error("foo") 62 | ``` 63 | 64 | ![Imgur](https://i.imgur.com/4wNB2TZ.png) 65 | 66 | ## Usage 67 | 68 | ### Phoenix Integration 69 | 70 | Basically Log Viewer can works as standalone elixir app. 71 | 72 | But you can also integrate Log Viewer with Phoenix as well. 73 | 74 | 1. Add route for Log Viewer 75 | 76 | `router.ex` 77 | 78 | ```elixir 79 | scope "/" do 80 | pipe_through(:browser) 81 | get("/", MyAppWeb.PageController, :index) 82 | end 83 | 84 | # Route for Log Viewer 85 | forward("/log_viewer", LogViewer.Router) 86 | ``` 87 | 88 | ### Cowboy 89 | 90 | :exclamation: Phoenix depends [Cowboy](https://github.com/ninenines/cowboy) HTTP server and Cowboy 2.0 had breaking change, so you must change configuration according to Phoenix and Cowboy version. 91 | 92 | #### For Phoenix 1.3 users 93 | 94 | `endpoint.ex` 95 | 96 | ```elixir 97 | socket("/log_viewer", LogViewer.PhoenixSocket) 98 | ``` 99 | 100 | :exclamation:️ This path **MUST** same with the path you defined in router. 101 | 102 | #### For Phoenix 1.4 & Cowboy 1.0 users 103 | 104 | This case is for if you have upgraded Phoenix 1.3 to 1.4 and still using cowboy 1.0 105 | 106 | `endpoint.ex` 107 | 108 | ```elixir 109 | socket "/log_viewer", LogViewer.PhoenixSocket, 110 | websocket: true, 111 | longpoll: false 112 | ``` 113 | 114 | #### For Phoenix 1.4 & Cowboy 2.0 users 115 | 116 | `config/config.exs` 117 | 118 | Please **CHANGE** app name to your app name. (`:my_app`, `MyAppWeb`) 119 | 120 | ```elixir 121 | config :my_app, MyAppWeb.Endpoint, 122 | http: [ 123 | dispatch: [ 124 | {:_, 125 | [ 126 | {"/log_viewer/websocket", LogViewer.WebSocketHandler, []}, 127 | {:_, Phoenix.Endpoint.Cowboy2Handler, {MyAppWeb.Endpoint, []}} 128 | ]} 129 | ] 130 | ] 131 | ``` 132 | 133 | then start the phoenix and open http://localhost:4000/log_viewer in browser to view Log Viewer 134 | 135 | ![Imgur](https://i.imgur.com/QSHd8Dx.png) 136 | 137 | ### Standalone mode 138 | 139 | If you are using phoenix integration and standalone server is not necessary, you can disable standalone server. Defaults to `true`. 140 | 141 | `config/config.exs` 142 | 143 | ```elixir 144 | config :log_viewer, standalone: false 145 | ``` 146 | 147 | ### Standalone server port 148 | 149 | If you want to change standalone server port. Defaults to `5900`. 150 | 151 | `config/config.exs` 152 | 153 | ```elixir 154 | config :log_viewer, port: 4002 155 | ``` 156 | 157 | ### Log Level 158 | 159 | You can set log level. Defaults to `:all`. 160 | 161 | This config results to only info level log 162 | 163 | `config/config.exs` 164 | 165 | ```elixir 166 | config :log_viewer, level: :info 167 | ``` 168 | 169 | ## Tips 170 | 171 | Use `inspect/2` with `pretty: true` option will outputs pretty-printed logs 172 | 173 | ```elixir 174 | self() |> Process.info() |> inspect(pretty: true) |> Logger.info() 175 | ``` 176 | 177 | ![Imgur](https://i.imgur.com/yls6AC0.png) 178 | 179 | ## Contributing 180 | 181 | 1. Fork it 182 | 2. Create your feature branch (`git checkout -b my-new-feature`) 183 | 3. Commit your changes (`git commit -am 'Add some feature'`) 184 | 4. Push to the branch (`git push origin my-new-feature`) 185 | 5. Create new Pull Request 186 | 187 | ## Test 188 | 189 | 1. Clone this repo 190 | 2. `mix deps.get && iex -S mix` 191 | 3. Open another window to run nuxt.js 192 | 4. `cd src && npm install && npm run dev` 193 | 194 | ## TODO 195 | 196 | - [ ] Log Persistence 197 | - [ ] Configurable Syntax Highlight theme 198 | - [ ] Performance Improvement 199 | 200 | ## License 201 | 202 | MIT 203 | -------------------------------------------------------------------------------- /config/config.exs: -------------------------------------------------------------------------------- 1 | # This file is responsible for configuring your application 2 | # and its dependencies with the aid of the Mix.Config module. 3 | use Mix.Config 4 | 5 | # This configuration is loaded before any dependency and is restricted 6 | # to this project. If another project depends on this project, this 7 | # file won't be loaded nor affect the parent project. For this reason, 8 | # if you want to provide default values for your application for 9 | # 3rd-party users, it should be done in your "mix.exs" file. 10 | 11 | # You can configure your application as: 12 | # 13 | # config :log_viewer, key: :value 14 | # 15 | # and access this configuration in your application as: 16 | # 17 | # Application.get_env(:log_viewer, :key) 18 | # 19 | # You can also configure a 3rd-party app: 20 | # 21 | # config :logger, level: :info 22 | # 23 | 24 | # It is also possible to import configuration files, relative to this 25 | # directory. For example, you can emulate configuration per environment 26 | # by uncommenting the line below and defining dev.exs, test.exs and such. 27 | # Configuration from the imported file will override the ones defined 28 | # here (which is why it is important to import them last). 29 | # 30 | # import_config "#{Mix.env}.exs" 31 | 32 | config :logger, level: :debug 33 | config :log_viewer, port: 5900 34 | 35 | config :logger, 36 | backends: [{LogViewer.Logger, []}, :console] 37 | -------------------------------------------------------------------------------- /jest-puppeteer.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | server: { 3 | command: 'mix run --no-halt -e "require Logger" -- --test', 4 | port: 5900 5 | }, 6 | }; 7 | -------------------------------------------------------------------------------- /jest.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "preset": "jest-puppeteer", 3 | "testMatch": ["**/*.test.js"], 4 | "testTimeout": 30000 5 | } -------------------------------------------------------------------------------- /lib/log_viewer.ex: -------------------------------------------------------------------------------- 1 | defmodule LogViewer do 2 | use Application 3 | require Logger 4 | import Supervisor.Spec, warn: false 5 | 6 | def start(_type, _args) do 7 | standalone? = Application.get_env(:log_viewer, :standalone, true) 8 | test? = Enum.any?(System.argv(), fn x -> x === "--test" end) 9 | 10 | children = 11 | [ 12 | supervisor(Registry, [[keys: :duplicate, name: :client_registry]]) 13 | ] 14 | |> add_standalone_childs(standalone?) 15 | |> add_test_childs(test?) 16 | 17 | opts = [strategy: :one_for_one, name: LogViewer.Supervisor] 18 | Supervisor.start_link(children, opts) 19 | end 20 | 21 | defp add_standalone_childs(childs, false = _standalone?), do: childs 22 | 23 | defp add_standalone_childs(childs, true = _standalone?) do 24 | childs ++ 25 | [worker(LogViewer.Server, [[port: Application.get_env(:log_viewer, :port, 5900)]])] 26 | end 27 | 28 | defp add_test_childs(childs, false = _test?), do: childs 29 | 30 | defp add_test_childs(childs, true = _test?) do 31 | childs ++ 32 | [supervisor(LogViewer.FakeLogger, [[]])] 33 | end 34 | 35 | def info(term) do 36 | term |> inspect(pretty: true) |> Logger.info() 37 | end 38 | 39 | def debug(term) do 40 | term |> inspect(pretty: true) |> Logger.debug() 41 | end 42 | 43 | def warn(term) do 44 | term |> inspect(pretty: true) |> Logger.warn() 45 | end 46 | 47 | def error(term) do 48 | term |> inspect(pretty: true) |> Logger.error() 49 | end 50 | end 51 | -------------------------------------------------------------------------------- /lib/log_viewer/fake_logger.ex: -------------------------------------------------------------------------------- 1 | defmodule LogViewer.FakeLogger do 2 | require Logger 3 | use GenServer 4 | 5 | @spec start_link(any) :: :ignore | {:error, any} | {:ok, pid} 6 | def start_link(opts) do 7 | GenServer.start_link(__MODULE__, %{}) 8 | end 9 | 10 | @spec init(any) :: {:ok, any} 11 | def init(state) do 12 | schedule_call() 13 | {:ok, state} 14 | end 15 | 16 | def handle_info(:log, state) do 17 | Logger.info("test_log") 18 | schedule_call() 19 | {:noreply, state} 20 | end 21 | 22 | defp schedule_call do 23 | Process.send_after(self(), :log, 1000) 24 | end 25 | end 26 | -------------------------------------------------------------------------------- /lib/log_viewer/logger.ex: -------------------------------------------------------------------------------- 1 | defmodule LogViewer.Logger do 2 | @moduledoc false 3 | 4 | @behaviour :gen_event 5 | require Logger 6 | 7 | defstruct colors: nil, 8 | format: nil, 9 | level: nil, 10 | metadata: nil 11 | 12 | def init(:log_viewer) do 13 | config = Application.get_env(:logger, :log_viewer) 14 | 15 | {:ok, init(config, %__MODULE__{})} 16 | end 17 | 18 | def init({__MODULE__, opts}) when is_list(opts) do 19 | config = configure_merge(Application.get_env(:logger, :log_viewer, []), opts) 20 | 21 | {:ok, init(config, %__MODULE__{})} 22 | end 23 | 24 | def handle_call({:configure, options}, state) do 25 | {:ok, :ok, configure(options, state)} 26 | end 27 | 28 | def handle_event({_level, gl, _event}, state) when node(gl) != node() do 29 | {:ok, state} 30 | end 31 | 32 | def handle_event({level, _gl, {Logger, msg, ts, md}}, state) do 33 | %{level: log_level} = state 34 | 35 | cond do 36 | not meet_level?(level, log_level) -> 37 | {:ok, state} 38 | 39 | true -> 40 | {:ok, log_event(level, msg, ts, md, state)} 41 | end 42 | end 43 | 44 | def handle_event(:flush, state) do 45 | {:ok, state} 46 | end 47 | 48 | def handle_event(_, state) do 49 | {:ok, state} 50 | end 51 | 52 | def handle_info(_, state) do 53 | {:ok, state} 54 | end 55 | 56 | def code_change(_old_vsn, state, _extra) do 57 | {:ok, state} 58 | end 59 | 60 | def terminate(_reason, _state) do 61 | :ok 62 | end 63 | 64 | ## Helpers 65 | 66 | defp meet_level?(_lvl, nil), do: true 67 | 68 | defp meet_level?(lvl, min) do 69 | Logger.compare_levels(lvl, min) != :lt 70 | end 71 | 72 | defp configure(options, state) do 73 | config = configure_merge(Application.get_env(:logger, :log_viewer), options) 74 | Application.put_env(:logger, :log_viewer, config) 75 | init(config, state) 76 | end 77 | 78 | defp init(config, state) do 79 | level = Keyword.get(config, :level) 80 | format = Logger.Formatter.compile(Keyword.get(config, :format)) 81 | colors = configure_colors(config) 82 | metadata = Keyword.get(config, :metadata, []) |> configure_metadata() 83 | 84 | %{ 85 | state 86 | | format: format, 87 | metadata: metadata, 88 | level: level, 89 | colors: colors 90 | } 91 | end 92 | 93 | defp configure_metadata(:all), do: :all 94 | defp configure_metadata(metadata), do: Enum.reverse(metadata) 95 | 96 | defp configure_merge(env, options) do 97 | Keyword.merge(env, options, fn 98 | :colors, v1, v2 -> Keyword.merge(v1, v2) 99 | _, _v1, v2 -> v2 100 | end) 101 | end 102 | 103 | defp configure_colors(config) do 104 | colors = Keyword.get(config, :colors, []) 105 | 106 | %{ 107 | debug: Keyword.get(colors, :debug, :cyan), 108 | info: Keyword.get(colors, :info, :normal), 109 | warn: Keyword.get(colors, :warn, :yellow), 110 | error: Keyword.get(colors, :error, :red), 111 | enabled: Keyword.get(colors, :enabled, IO.ANSI.enabled?()) 112 | } 113 | end 114 | 115 | # send log event 116 | defp log_event(level, msg, ts, md, state) do 117 | {{year, month, day}, {hour, minute, second, millisecond}} = ts 118 | 119 | metadata = 120 | md 121 | |> Enum.map(fn {k, v} -> {k, inspect(v)} end) 122 | |> Enum.into(%{}) 123 | |> Map.put(:level, level) 124 | 125 | message = 126 | %{ 127 | id: :crypto.strong_rand_bytes(32) |> Base.encode64() |> binary_part(0, 32), 128 | msg: msg |> to_string, 129 | ts: %{ 130 | year: year, 131 | month: month, 132 | day: day, 133 | hour: hour, 134 | minute: minute, 135 | second: second, 136 | millisecond: millisecond 137 | }, 138 | md: metadata 139 | } 140 | |> Jason.encode!() 141 | 142 | # broadcast to all clients 143 | if Process.whereis(:client_registry) |> is_pid do 144 | dispatch(message) 145 | end 146 | 147 | state 148 | end 149 | 150 | defp dispatch(message) do 151 | Registry.dispatch(:client_registry, :clients, fn entries -> 152 | for {pid, _} <- entries do 153 | send(pid, {:broadcast, message}) 154 | end 155 | end) 156 | end 157 | end 158 | -------------------------------------------------------------------------------- /lib/log_viewer/phoenix_socket.ex: -------------------------------------------------------------------------------- 1 | defmodule LogViewer.PhoenixSocket do 2 | use GenServer 3 | 4 | def init(args) do 5 | {:ok, args} 6 | end 7 | 8 | def start_link(_) do 9 | GenServer.start_link(__MODULE__, []) 10 | end 11 | 12 | def __transports__ do 13 | handler = cowboy_version_adapter() 14 | 15 | config = [ 16 | cowboy: handler 17 | ] 18 | 19 | callback_module = LogViewer.PhoenixSocket 20 | transport_path = :websocket 21 | websocket_socket = {transport_path, {callback_module, config}} 22 | 23 | [websocket_socket] 24 | end 25 | 26 | defp cowboy_version_adapter() do 27 | case Application.spec(:cowboy, :vsn) do 28 | [?1 | _] -> LogViewer.V1WebSocketHandler 29 | _ -> LogViewer.WebSocketHandler 30 | end 31 | end 32 | end 33 | -------------------------------------------------------------------------------- /lib/log_viewer/router.ex: -------------------------------------------------------------------------------- 1 | defmodule LogViewer.Router do 2 | use Plug.Router 3 | 4 | @asset_dir "priv" 5 | 6 | plug(Plug.Static, at: "/_nuxt", from: {:log_viewer, @asset_dir <> "/_nuxt"}) 7 | 8 | plug(:match) 9 | plug(:dispatch) 10 | 11 | get "/" do 12 | if String.ends_with?(conn.request_path, "/") do 13 | conn 14 | |> Plug.Conn.put_resp_content_type("text/html") 15 | |> Plug.Conn.send_resp(200, File.read!(index_file())) 16 | else 17 | # redirect to trailing slash path to load relative static files 18 | conn 19 | |> Plug.Conn.put_resp_header("location", conn.request_path <> "/") 20 | |> Plug.Conn.send_resp(302, "You are being redirected") 21 | end 22 | end 23 | 24 | defp index_file do 25 | Path.join(Application.app_dir(:log_viewer), @asset_dir <> "/index.html") 26 | end 27 | end 28 | -------------------------------------------------------------------------------- /lib/log_viewer/server.ex: -------------------------------------------------------------------------------- 1 | defmodule LogViewer.Server do 2 | use Supervisor 3 | require Logger 4 | 5 | def init(opts) do 6 | {:ok, opts} 7 | end 8 | 9 | def start_link(opts) do 10 | cowboy_version = Application.spec(:cowboy) |> cowboy_version() 11 | dispatch = dispatch(cowboy_version, opts) 12 | {:ok, pid} = start_cowboy(cowboy_version, dispatch, opts) 13 | Logger.info("Log Viewer started listening on http://localhost:#{opts[:port]}") 14 | {:ok, pid} 15 | end 16 | 17 | def start_link() do 18 | cowboy_version = Application.spec(:cowboy) |> cowboy_version() 19 | dispatch = dispatch(cowboy_version, []) 20 | {:ok, pid} = start_cowboy(cowboy_version, dispatch, []) 21 | 22 | Logger.info("Log Viewer started listening on http://localhost:5900") 23 | {:ok, pid} 24 | end 25 | 26 | def stop(_state) do 27 | :ok 28 | end 29 | 30 | # Helpers 31 | 32 | defp dispatch("v1" = _version, _opts) do 33 | :cowboy_router.compile([ 34 | {:_, 35 | [ 36 | {'/websocket', LogViewer.V1WebSocketHandler, []}, 37 | {"/", :cowboy_static, {:priv_file, :log_viewer, "index.html"}}, 38 | {"/_nuxt/[...]", :cowboy_static, {:priv_dir, :log_viewer, "_nuxt"}}, 39 | {"/[...]", :cowboy_static, {:priv_file, :log_viewer, "index.html"}} 40 | ]} 41 | ]) 42 | end 43 | 44 | defp dispatch("v2" = _version, _opts) do 45 | :cowboy_router.compile([ 46 | {:_, 47 | [ 48 | {'/websocket', LogViewer.WebSocketHandler, []}, 49 | {"/", :cowboy_static, {:priv_file, :log_viewer, "index.html"}}, 50 | {"/_nuxt/[...]", :cowboy_static, {:priv_dir, :log_viewer, "_nuxt"}}, 51 | {"/[...]", :cowboy_static, {:priv_file, :log_viewer, "index.html"}} 52 | ]} 53 | ]) 54 | end 55 | 56 | defp start_cowboy("v1" = _version, dispatch, opts) do 57 | port = Keyword.get(opts, :port, 5900) 58 | 59 | :cowboy.start_http(:log_viewer_http_listener, 100, [{:port, port}], [ 60 | {:env, [{:dispatch, dispatch}]} 61 | ]) 62 | end 63 | 64 | defp start_cowboy("v2" = _version, dispatch, opts) do 65 | port = Keyword.get(opts, :port, 5900) 66 | 67 | :cowboy.start_clear(:log_viewer_http_listener, [{:port, port}], %{ 68 | env: %{dispatch: dispatch} 69 | }) 70 | end 71 | 72 | defp cowboy_version(spec) do 73 | case Version.compare("2.0.0", spec[:vsn] |> to_string) do 74 | :gt -> "v1" 75 | _ -> "v2" 76 | end 77 | end 78 | end 79 | -------------------------------------------------------------------------------- /lib/log_viewer/v1_websocket_handler.ex: -------------------------------------------------------------------------------- 1 | defmodule LogViewer.V1WebSocketHandler do 2 | @behaviour :cowboy_websocket_handler 3 | 4 | def init(_, req, _opts) do 5 | opts = %{idle_timeout: 60000} 6 | 7 | {:upgrade, :protocol, :cowboy_websocket, req, opts} 8 | end 9 | 10 | def websocket_init(_transport, req, state) do 11 | Registry.register(:client_registry, :clients, []) 12 | {:ok, req, %{state: state, proxy: nil}, 60_000} 13 | end 14 | 15 | def websocket_terminate(_reason, _req, _state) do 16 | :ok 17 | end 18 | 19 | def websocket_handle({:text, message}, req, state) do 20 | {:reply, {:text, message}, req, state} 21 | end 22 | 23 | def websocket_handle(_data, req, state) do 24 | {:ok, req, state} 25 | end 26 | 27 | def websocket_info({:timeout, _ref, message}, req, state) do 28 | {:reply, {:text, message}, req, state} 29 | end 30 | 31 | def websocket_info({:broadcast, message}, req, state) do 32 | {:reply, {:text, message}, req, state} 33 | end 34 | end 35 | -------------------------------------------------------------------------------- /lib/log_viewer/websocket_handler.ex: -------------------------------------------------------------------------------- 1 | defmodule LogViewer.WebSocketHandler do 2 | def init(req, state) do 3 | opts = %{idle_timeout: 60000} 4 | 5 | {:cowboy_websocket, req, state, opts} 6 | end 7 | 8 | def websocket_init(state) do 9 | Registry.register(:client_registry, :clients, []) 10 | {:ok, state} 11 | end 12 | 13 | def terminate(_reason, _req, _state) do 14 | :ok 15 | end 16 | 17 | def websocket_handle({:text, message}, state) do 18 | {:reply, {:text, message}, state} 19 | end 20 | 21 | def websocket_handle(_data, state) do 22 | {:ok, state} 23 | end 24 | 25 | def websocket_info({:timeout, _ref, message}, state) do 26 | {:reply, {:text, message}, state} 27 | end 28 | 29 | def websocket_info({:broadcast, message}, state) do 30 | {:reply, {:text, message}, state} 31 | end 32 | end 33 | -------------------------------------------------------------------------------- /mix.exs: -------------------------------------------------------------------------------- 1 | defmodule LogViewer.MixProject do 2 | use Mix.Project 3 | 4 | def project do 5 | [ 6 | app: :log_viewer, 7 | version: "0.1.0", 8 | elixir: "~> 1.6", 9 | start_permanent: Mix.env() == :prod, 10 | build_embedded: Mix.env() == :prod, 11 | deps: deps(), 12 | description: description(), 13 | package: package() 14 | ] 15 | end 16 | 17 | # Run "mix help compile.app" to learn about applications. 18 | def application do 19 | [ 20 | mod: {LogViewer, {}}, 21 | extra_applications: [:logger] 22 | ] 23 | end 24 | 25 | # Run "mix help deps" to learn about dependencies. 26 | defp deps do 27 | [ 28 | {:cowboy, "~> 1.0 or ~> 2.0"}, 29 | {:plug, "~> 1.0"}, 30 | {:jason, ">= 0.0.0"}, 31 | {:exsync, "~> 0.2", only: :dev}, 32 | {:credo, "~> 1.2", only: [:dev, :test], runtime: false}, 33 | {:ex_doc, "~> 0.21.3", only: :dev} 34 | ] 35 | end 36 | 37 | defp description do 38 | """ 39 | An Web based Log Viewer for Elixir and Phoenix 40 | """ 41 | end 42 | 43 | defp package do 44 | [ 45 | files: ["lib", "mix.exs", "README*", "LICENSE*", "priv"], 46 | maintainers: ["Shuhei Hayashibara"], 47 | licenses: ["MIT"], 48 | links: %{ 49 | "GitHub" => "https://github.com/shufo/log_viewer", 50 | "Docs" => "https://hexdocs.pm/log_viewer" 51 | } 52 | ] 53 | end 54 | end 55 | -------------------------------------------------------------------------------- /mix.lock: -------------------------------------------------------------------------------- 1 | %{ 2 | "bunt": {:hex, :bunt, "0.2.0", "951c6e801e8b1d2cbe58ebbd3e616a869061ddadcc4863d0a2182541acae9a38", [:mix], [], "hexpm", "7af5c7e09fe1d40f76c8e4f9dd2be7cebd83909f31fee7cd0e9eadc567da8353"}, 3 | "cowboy": {:hex, :cowboy, "2.7.0", "91ed100138a764355f43316b1d23d7ff6bdb0de4ea618cb5d8677c93a7a2f115", [:rebar3], [{:cowlib, "~> 2.8.0", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "~> 1.7.1", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "04fd8c6a39edc6aaa9c26123009200fc61f92a3a94f3178c527b70b767c6e605"}, 4 | "cowlib": {:hex, :cowlib, "2.8.0", "fd0ff1787db84ac415b8211573e9a30a3ebe71b5cbff7f720089972b2319c8a4", [:rebar3], [], "hexpm", "79f954a7021b302186a950a32869dbc185523d99d3e44ce430cd1f3289f41ed4"}, 5 | "credo": {:hex, :credo, "1.4.1", "16392f1edd2cdb1de9fe4004f5ab0ae612c92e230433968eab00aafd976282fc", [:mix], [{:bunt, "~> 0.2.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "155f8a2989ad77504de5d8291fa0d41320fdcaa6a1030472e9967f285f8c7692"}, 6 | "earmark": {:hex, :earmark, "1.4.3", "364ca2e9710f6bff494117dbbd53880d84bebb692dafc3a78eb50aa3183f2bfd", [:mix], [], "hexpm", "8cf8a291ebf1c7b9539e3cddb19e9cef066c2441b1640f13c34c1d3cfc825fec"}, 7 | "ex_doc": {:hex, :ex_doc, "0.21.3", "857ec876b35a587c5d9148a2512e952e24c24345552259464b98bfbb883c7b42", [:mix], [{:earmark, "~> 1.4", [hex: :earmark, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}], "hexpm", "0db1ee8d1547ab4877c5b5dffc6604ef9454e189928d5ba8967d4a58a801f161"}, 8 | "exsync": {:hex, :exsync, "0.2.4", "5cdc824553e0f4c4bf60018a9a6bbd5d3b51f93ef8401a0d8545f93127281d03", [:mix], [{:file_system, "~> 0.2", [hex: :file_system, repo: "hexpm", optional: false]}], "hexpm", "f7622d8bb98abbe473aa066ae46f91afdf7a5346b8b89728404f7189d2e80896"}, 9 | "file_system": {:hex, :file_system, "0.2.8", "f632bd287927a1eed2b718f22af727c5aeaccc9a98d8c2bd7bff709e851dc986", [:mix], [], "hexpm", "97a3b6f8d63ef53bd0113070102db2ce05352ecf0d25390eb8d747c2bde98bca"}, 10 | "jason": {:hex, :jason, "1.2.2", "ba43e3f2709fd1aa1dce90aaabfd039d000469c05c56f0b8e31978e03fa39052", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "18a228f5f0058ee183f29f9eae0805c6e59d61c3b006760668d8d18ff0d12179"}, 11 | "makeup": {:hex, :makeup, "1.0.0", "671df94cf5a594b739ce03b0d0316aa64312cee2574b6a44becb83cd90fb05dc", [:mix], [{:nimble_parsec, "~> 0.5.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "a10c6eb62cca416019663129699769f0c2ccf39428b3bb3c0cb38c718a0c186d"}, 12 | "makeup_elixir": {:hex, :makeup_elixir, "0.14.0", "cf8b7c66ad1cff4c14679698d532f0b5d45a3968ffbcbfd590339cb57742f1ae", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "d4b316c7222a85bbaa2fd7c6e90e37e953257ad196dc229505137c5e505e9eff"}, 13 | "mime": {:hex, :mime, "1.3.1", "30ce04ab3175b6ad0bdce0035cba77bba68b813d523d1aac73d9781b4d193cf8", [:mix], [], "hexpm", "6cbe761d6a0ca5a31a0931bf4c63204bceb64538e664a8ecf784a9a6f3b875f1"}, 14 | "nimble_parsec": {:hex, :nimble_parsec, "0.5.3", "def21c10a9ed70ce22754fdeea0810dafd53c2db3219a0cd54cf5526377af1c6", [:mix], [], "hexpm", "589b5af56f4afca65217a1f3eb3fee7e79b09c40c742fddc1c312b3ac0b3399f"}, 15 | "plug": {:hex, :plug, "1.10.4", "41eba7d1a2d671faaf531fa867645bd5a3dce0957d8e2a3f398ccff7d2ef017f", [:mix], [{:mime, "~> 1.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "ad1e233fe73d2eec56616568d260777b67f53148a999dc2d048f4eb9778fe4a0"}, 16 | "plug_crypto": {:hex, :plug_crypto, "1.1.2", "bdd187572cc26dbd95b87136290425f2b580a116d3fb1f564216918c9730d227", [:mix], [], "hexpm", "6b8b608f895b6ffcfad49c37c7883e8df98ae19c6a28113b02aa1e9c5b22d6b5"}, 17 | "poison": {:hex, :poison, "4.0.1", "bcb755a16fac91cad79bfe9fc3585bb07b9331e50cfe3420a24bcc2d735709ae", [:mix], [], "hexpm"}, 18 | "ranch": {:hex, :ranch, "1.7.1", "6b1fab51b49196860b733a49c07604465a47bdb78aa10c1c16a3d199f7f8c881", [:rebar3], [], "hexpm", "451d8527787df716d99dc36162fca05934915db0b6141bbdac2ea8d3c7afc7d7"}, 19 | "telemetry": {:hex, :telemetry, "0.4.2", "2808c992455e08d6177322f14d3bdb6b625fbcfd233a73505870d8738a2f4599", [:rebar3], [], "hexpm", "2d1419bd9dda6a206d7b5852179511722e2b18812310d304620c7bd92a13fcef"}, 20 | } 21 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "scripts": { 3 | "server": "mix run --no-halt" 4 | }, 5 | "devDependencies": { 6 | "jest": "^25.1.0", 7 | "jest-puppeteer": "^4.4.0", 8 | "puppeteer": "^2.1.1" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /priv/.nojekyll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shufo/log_viewer/90acac4f178160e411ffdfde30980f79cf51a6ec/priv/.nojekyll -------------------------------------------------------------------------------- /priv/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | log_viewer 5 | 6 | 7 |
Loading...
8 | 9 | 10 | -------------------------------------------------------------------------------- /priv/_nuxt/482eb42b0d831ed5d2ed.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[0],{236:function(t,e,n){t.exports=n(523)},268:function(t,e,n){var r={"./websocket.js":269};function o(t){var e=a(t);return n(e)}function a(t){var e=r[t];if(!(e+1)){var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}return e}o.keys=function(){return Object.keys(r)},o.resolve=a,t.exports=o,o.id=268},269:function(t,e,n){"use strict";n.r(e),n.d(e,"WebSocketClient",function(){return s});n(270),n(52),n(53),n(47),n(22);var r=n(227),o=n.n(r),a=n(228),i=n.n(a),s=function(){function t(e,n){o()(this,t),this.endpoint=e,this.context=n,this.handlers=[]}return i()(t,[{key:"init",value:function(){this.ws=new WebSocket(this.endpoint),this.setWebsocketHandlers(),this.startHeartbeat()}},{key:"setWebsocketHandlers",value:function(){var t=this;this.ws.onopen=function(e){t.clearHandlers()},this.ws.onclose=function(){t.ws.close(),t.clearHandlers();var e=setInterval(function(){t.ws=new WebSocket(t.endpoint),t.setWebsocketHandlers()},3e3);t.handlers.push(e)},this.ws.onmessage=function(e){"heartbeat"!=e.data&&t.context.store.dispatch("addLog",JSON.parse(e.data))}}},{key:"clearHandlers",value:function(){this.handlers.forEach(function(t){clearInterval(t)})}},{key:"startHeartbeat",value:function(){var t=this;setInterval(function(){t.ws.readyState===t.ws.OPEN&&t.ws.send("heartbeat")},1e4)}},{key:"startDebugLog",value:function(){var t=this;setInterval(function(){var e=new Date,n=["info","debug","warn","error"],r={ts:{year:e.getFullYear(),month:e.getMonth(),day:e.getDay(),hour:e.getHours(),minute:e.getMinutes(),second:e.getSeconds(),millisecond:e.getMilliseconds()},id:t.uuid(),msg:"debug",md:{level:n[Math.floor(Math.random()*n.length)]}};t.ws.readyState===t.ws.OPEN&&t.ws.send(JSON.stringify(r))},5e3)}},{key:"uuid",value:function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(t){var e=16*Math.random()|0;return("x"==t?e:3&e|8).toString(16)})}}]),t}();e.default=function(t){var e=window.location.pathname.endsWith("/")?window.location.pathname.slice(0,-1):window.location.pathname,n=t.isDev?"localhost:5900":window.location.host,r=new s("ws://"+n+e+"/websocket",t);r.init(),t.isDev&&r.startDebugLog()}},272:function(t,e,n){"use strict";var r=n(49);n.n(r).a},273:function(t,e,n){(t.exports=n(33)(!1)).push([t.i,"\n.__nuxt-error-page{padding:1rem;background:#f7f8fb;color:#47494e;text-align:center;display:flex;justify-content:center;align-items:center;flex-direction:column;font-family:sans-serif;font-weight:100!important;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;position:absolute;top:0;left:0;right:0;bottom:0\n}\n.__nuxt-error-page .error{max-width:450px\n}\n.__nuxt-error-page .title{font-size:1.5rem;margin-top:15px;color:#47494e;margin-bottom:8px\n}\n.__nuxt-error-page .description{color:#7f828b;line-height:21px;margin-bottom:10px\n}\n.__nuxt-error-page a{color:#7f828b!important;text-decoration:none\n}\n.__nuxt-error-page .logo{position:fixed;left:12px;bottom:12px\n}",""])},280:function(t,e,n){"use strict";var r=n(50);n.n(r).a},281:function(t,e,n){(t.exports=n(33)(!1)).push([t.i,"\n.nuxt-progress{position:fixed;top:0;left:0;right:0;height:2px;width:0;transition:width .2s,opacity .4s;opacity:1;background-color:#efc14e;z-index:999999\n}",""])},308:function(t,e,n){var r={"./af":104,"./af.js":104,"./ar":105,"./ar-dz":106,"./ar-dz.js":106,"./ar-kw":107,"./ar-kw.js":107,"./ar-ly":108,"./ar-ly.js":108,"./ar-ma":109,"./ar-ma.js":109,"./ar-sa":110,"./ar-sa.js":110,"./ar-tn":111,"./ar-tn.js":111,"./ar.js":105,"./az":112,"./az.js":112,"./be":113,"./be.js":113,"./bg":114,"./bg.js":114,"./bm":115,"./bm.js":115,"./bn":116,"./bn.js":116,"./bo":117,"./bo.js":117,"./br":118,"./br.js":118,"./bs":119,"./bs.js":119,"./ca":120,"./ca.js":120,"./cs":121,"./cs.js":121,"./cv":122,"./cv.js":122,"./cy":123,"./cy.js":123,"./da":124,"./da.js":124,"./de":125,"./de-at":126,"./de-at.js":126,"./de-ch":127,"./de-ch.js":127,"./de.js":125,"./dv":128,"./dv.js":128,"./el":129,"./el.js":129,"./en-au":130,"./en-au.js":130,"./en-ca":131,"./en-ca.js":131,"./en-gb":132,"./en-gb.js":132,"./en-ie":133,"./en-ie.js":133,"./en-il":134,"./en-il.js":134,"./en-nz":135,"./en-nz.js":135,"./eo":136,"./eo.js":136,"./es":137,"./es-do":138,"./es-do.js":138,"./es-us":139,"./es-us.js":139,"./es.js":137,"./et":140,"./et.js":140,"./eu":141,"./eu.js":141,"./fa":142,"./fa.js":142,"./fi":143,"./fi.js":143,"./fo":144,"./fo.js":144,"./fr":145,"./fr-ca":146,"./fr-ca.js":146,"./fr-ch":147,"./fr-ch.js":147,"./fr.js":145,"./fy":148,"./fy.js":148,"./gd":149,"./gd.js":149,"./gl":150,"./gl.js":150,"./gom-latn":151,"./gom-latn.js":151,"./gu":152,"./gu.js":152,"./he":153,"./he.js":153,"./hi":154,"./hi.js":154,"./hr":155,"./hr.js":155,"./hu":156,"./hu.js":156,"./hy-am":157,"./hy-am.js":157,"./id":158,"./id.js":158,"./is":159,"./is.js":159,"./it":160,"./it.js":160,"./ja":161,"./ja.js":161,"./jv":162,"./jv.js":162,"./ka":163,"./ka.js":163,"./kk":164,"./kk.js":164,"./km":165,"./km.js":165,"./kn":166,"./kn.js":166,"./ko":167,"./ko.js":167,"./ky":168,"./ky.js":168,"./lb":169,"./lb.js":169,"./lo":170,"./lo.js":170,"./lt":171,"./lt.js":171,"./lv":172,"./lv.js":172,"./me":173,"./me.js":173,"./mi":174,"./mi.js":174,"./mk":175,"./mk.js":175,"./ml":176,"./ml.js":176,"./mn":177,"./mn.js":177,"./mr":178,"./mr.js":178,"./ms":179,"./ms-my":180,"./ms-my.js":180,"./ms.js":179,"./mt":181,"./mt.js":181,"./my":182,"./my.js":182,"./nb":183,"./nb.js":183,"./ne":184,"./ne.js":184,"./nl":185,"./nl-be":186,"./nl-be.js":186,"./nl.js":185,"./nn":187,"./nn.js":187,"./pa-in":188,"./pa-in.js":188,"./pl":189,"./pl.js":189,"./pt":190,"./pt-br":191,"./pt-br.js":191,"./pt.js":190,"./ro":192,"./ro.js":192,"./ru":193,"./ru.js":193,"./sd":194,"./sd.js":194,"./se":195,"./se.js":195,"./si":196,"./si.js":196,"./sk":197,"./sk.js":197,"./sl":198,"./sl.js":198,"./sq":199,"./sq.js":199,"./sr":200,"./sr-cyrl":201,"./sr-cyrl.js":201,"./sr.js":200,"./ss":202,"./ss.js":202,"./sv":203,"./sv.js":203,"./sw":204,"./sw.js":204,"./ta":205,"./ta.js":205,"./te":206,"./te.js":206,"./tet":207,"./tet.js":207,"./tg":208,"./tg.js":208,"./th":209,"./th.js":209,"./tl-ph":210,"./tl-ph.js":210,"./tlh":211,"./tlh.js":211,"./tr":212,"./tr.js":212,"./tzl":213,"./tzl.js":213,"./tzm":214,"./tzm-latn":215,"./tzm-latn.js":215,"./tzm.js":214,"./ug-cn":216,"./ug-cn.js":216,"./uk":217,"./uk.js":217,"./ur":218,"./ur.js":218,"./uz":219,"./uz-latn":220,"./uz-latn.js":220,"./uz.js":219,"./vi":221,"./vi.js":221,"./x-pseudo":222,"./x-pseudo.js":222,"./yo":223,"./yo.js":223,"./zh-cn":224,"./zh-cn.js":224,"./zh-hk":225,"./zh-hk.js":225,"./zh-tw":226,"./zh-tw.js":226};function o(t){var e=a(t);return n(e)}function a(t){var e=r[t];if(!(e+1)){var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}return e}o.keys=function(){return Object.keys(r)},o.resolve=a,t.exports=o,o.id=308},327:function(t,e,n){"use strict";var r=n(51);n.n(r).a},328:function(t,e,n){(t.exports=n(33)(!1)).push([t.i,"\n.chart-v-list-tile .v-list__tile{height:300px!important\n}\n.chart-v-list-tile .v-list__tile__content{height:300px\n}",""])},329:function(t,e,n){var r={"./actions.js":330,"./getters.js":331,"./mutations.js":332,"./state.js":333};function o(t){var e=a(t);return n(e)}function a(t){var e=r[t];if(!(e+1)){var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}return e}o.keys=function(){return Object.keys(r)},o.resolve=a,t.exports=o,o.id=329},330:function(t,e,n){"use strict";n.r(e),e.default={addLog:function(t,e){(0,t.commit)("ADD_LOG",e)},changeSearchText:function(t,e){(0,t.commit)("CHANGE_SEARCH_TEXT",e)},setLevelFilter:function(t,e){(0,t.commit)("SET_LEVEL_FILTER",e)},changeMaxLogs:function(t,e){(0,t.commit)("CHANGE_MAX_LOGS",e)}}},331:function(t,e,n){"use strict";n.r(e);n(65),n(67);e.default={searchText:function(t){return t.searchText},filterLevel:function(t){return t.filterLevel},logs:function(t){return t.logs},filteredLogs:function(t){return t.logs.filter(function(e){return"all"==t.filterLevel?e.msg.toLowerCase().includes(t.searchText.toLowerCase()):e.msg.toLowerCase().includes(t.searchText.toLowerCase())&&e.md.level==t.filterLevel})},logsWithId:function(t){return t.logs.reduce(function(t,e){return t[e.id]=e,t},{})},logCount:function(t){return t.logs.length},infoLogs:function(t){return t.logs.filter(function(t,e){return"info"==t.md.level})},infoLogsCount:function(t,e){return e.infoLogs.length},debugLogs:function(t){return t.logs.filter(function(t,e){return"debug"==t.md.level})},debugLogsCount:function(t,e){return e.debugLogs.length},warnLogs:function(t){return t.logs.filter(function(t){return"warn"==t.md.level})},warnLogsCount:function(t,e){return e.warnLogs.length},errorLogs:function(t){return t.logs.filter(function(t){return"error"==t.md.level})},errorLogsCount:function(t,e){return e.errorLogs.length}}},332:function(t,e,n){"use strict";n.r(e),e.default={ADD_LOG:function(t,e){t.logs.unshift(e),t.logs.splice(t.maxLogs)},CHANGE_SEARCH_TEXT:function(t,e){t.searchText=e},SET_LEVEL_FILTER:function(t,e){t.filterLevel=e},CHANGE_MAX_LOGS:function(t,e){t.maxLogs=e}}},333:function(t,e,n){"use strict";n.r(e),e.default=function(){return{logs:[],searchText:"",filterLevel:"all",maxLogs:100}}},49:function(t,e,n){var r=n(273);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n(37).default)("45b1ddea",r,!0,{sourceMap:!1})},50:function(t,e,n){var r=n(281);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n(37).default)("fd547dac",r,!0,{sourceMap:!1})},51:function(t,e,n){var r=n(328);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n(37).default)("2eb43ff6",r,!0,{sourceMap:!1})},523:function(t,e,n){"use strict";n.r(e);n(77),n(60),n(61);var r=n(28),o=n.n(r),a=(n(64),n(245),n(7)),i=n.n(a),s=(n(65),n(67),n(22),n(76),n(89),n(52),n(53),n(46),n(72),n(88),n(253),n(264),n(1)),u=(n(47),n(268)),c=u.keys();function l(t){var e=u(t);return e.default||e}var f={},d=!0,p=!1,h=void 0;try{for(var m,v=c[Symbol.iterator]();!(d=(m=v.next()).done);d=!0){var g=m.value;f[g.replace(/^\.\//,"").replace(/\.(js|mjs)$/,"")]=l(g)}}catch(t){p=!0,h=t}finally{try{d||null==v.return||v.return()}finally{if(p)throw h}}var x=f,y=n(19),w=n.n(y),b=n(229),_=n.n(b),j=n(74),C=function(){return n.e(2).then(n.bind(null,526)).then(function(t){return t.default||t})};s.default.use(j.a),window.history.scrollRestoration="manual";var k=function(t,e,n){var r=!1;return t.matched.length<2?r={x:0,y:0}:t.matched.some(function(t){return t.components.default.options.scrollToTop})&&(r={x:0,y:0}),n&&(r=n),new Promise(function(e){window.$nuxt.$once("triggerScroll",function(){if(t.hash){var n=t.hash;void 0!==window.CSS&&void 0!==window.CSS.escape&&(n="#"+window.CSS.escape(n.substr(1)));try{document.querySelector(n)&&(r={selector:n})}catch(t){console.warn("Failed to save scroll position. Please add CSS.escape() polyfill (https://github.com/mathiasbynens/CSS.escape).")}}e(r)})})};var $=n(230),E=n.n($).a,L={name:"nuxt-child",functional:!0,props:["keepAlive","keepAliveProps"],render:function(t,e){var n=e.parent,r=e.data,o=e.props;r.nuxtChild=!0;for(var a=n,i=n.$nuxt.nuxt.transitions,s=n.$nuxt.nuxt.defaultTransition,u=0;n;)n.$vnode&&n.$vnode.data.nuxtChild&&u++,n=n.$parent;r.nuxtChildDepth=u;var c=i[u]||s,l={};R.forEach(function(t){void 0!==c[t]&&(l[t]=c[t])});var f={};S.forEach(function(t){"function"==typeof c[t]&&(f[t]=c[t].bind(a))});var d=f.beforeEnter;f.beforeEnter=function(t){if(window.$nuxt.$nextTick(function(){window.$nuxt.$emit("triggerScroll")}),d)return d.call(a,t)};var p=[t("router-view",r)];return void 0!==o.keepAlive&&(p=[t("keep-alive",{props:o.keepAliveProps},p)]),t("transition",{props:l,on:f},p)}},R=["name","mode","appear","css","type","duration","enterClass","leaveClass","appearClass","enterActiveClass","enterActiveClass","leaveActiveClass","appearActiveClass","enterToClass","leaveToClass","appearToClass"],S=["beforeEnter","enter","afterEnter","enterCancelled","beforeLeave","leave","afterLeave","leaveCancelled","beforeAppear","appear","afterAppear","appearCancelled"],T={name:"nuxt-link",functional:!0,render:function(t,e){return t("router-link",e.data,e.children)}},A={name:"nuxt-error",props:["error"],head:function(){return{title:this.message,meta:[{name:"viewport",content:"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"}]}},computed:{statusCode:function(){return this.error&&this.error.statusCode||500},message:function(){return this.error.message||"Error"}}},O=(n(272),n(27)),N=Object(O.a)(A,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"__nuxt-error-page"},[n("div",{staticClass:"error"},[n("svg",{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"90",height:"90",fill:"#DBE1EC",viewBox:"0 0 48 48"}},[n("path",{attrs:{d:"M22 30h4v4h-4zm0-16h4v12h-4zm1.99-10C12.94 4 4 12.95 4 24s8.94 20 19.99 20S44 35.05 44 24 35.04 4 23.99 4zM24 40c-8.84 0-16-7.16-16-16S15.16 8 24 8s16 7.16 16 16-7.16 16-16 16z"}})]),t._v(" "),n("div",{staticClass:"title"},[t._v(t._s(t.message))]),t._v(" "),404===t.statusCode?n("p",{staticClass:"description"},[n("nuxt-link",{staticClass:"error-link",attrs:{to:"/"}},[t._v("Back to the home page")])],1):t._e(),t._v(" "),t._m(0)])])},[function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"logo"},[e("a",{attrs:{href:"https://nuxtjs.org",target:"_blank",rel:"noopener"}},[this._v("Nuxt.js")])])}],!1,null,null,null);N.options.__file="nuxt-error.vue";var D=N.exports,z=(n(96),n(274),n(275),n(276),n(279),function(){return{}});function M(t,e){var n=t.options.data||z;!e&&t.options.hasAsyncData||(t.options.hasAsyncData=!0,t.options.data=function(){var r=n.call(this);return this.$ssrContext&&(e=this.$ssrContext.asyncData[t.cid]),w()({},r,e)},t._Ctor&&t._Ctor.options&&(t._Ctor.options.data=t.options.data))}function P(t){return t.options&&t._Ctor===t?t:(t.options?(t._Ctor=t,t.extendOptions=t.options):(t=s.default.extend(t))._Ctor=t,!t.options.name&&t.options.__file&&(t.options.name=t.options.__file),t)}function q(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return Array.prototype.concat.apply([],t.matched.map(function(t,n){return Object.keys(t.components).map(function(r){return e&&e.push(n),t.components[r]})}))}function H(t,e){return Array.prototype.concat.apply([],t.matched.map(function(t,n){return Object.keys(t.components).reduce(function(r,o){return t.components[o]?r.push(e(t.components[o],t.instances[o],t,o,n)):delete t.components[o],r},[])}))}function I(t){return Promise.all(H(t,function(){var t=i()(regeneratorRuntime.mark(function t(e,n,r,o){return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if("function"!=typeof e||e.options){t.next=4;break}return t.next=3,e();case 3:e=t.sent;case 4:return t.abrupt("return",r.components[o]=P(e));case 5:case"end":return t.stop()}},t,this)}));return function(e,n,r,o){return t.apply(this,arguments)}}()))}function F(t){return U.apply(this,arguments)}function U(){return(U=i()(regeneratorRuntime.mark(function t(e){return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,I(e);case 2:return t.abrupt("return",w()({},e,{meta:q(e).map(function(t){return t.options.meta||{}})}));case 3:case"end":return t.stop()}},t,this)}))).apply(this,arguments)}function W(t,e){return J.apply(this,arguments)}function J(){return(J=i()(regeneratorRuntime.mark(function t(e,n){return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(n.to?n.to:n.route,e.context||(e.context={isStatic:!0,isDev:!1,isHMR:!1,app:e,store:e.store,payload:n.payload,error:n.error,base:"./",env:{}},n.req&&(e.context.req=n.req),n.res&&(e.context.res=n.res),e.context.redirect=function(t,n,r){if(t){e.context._redirected=!0;var a=o()(n);if("number"==typeof t||"undefined"!==a&&"object"!==a||(r=n||{},n=t,a=o()(n),t=302),"object"===a&&(n=e.router.resolve(n).href),!/(^[.]{1,2}\/)|(^\/(?!\/))/.test(n))throw n=tt(n,r),window.location.replace(n),new Error("ERR_REDIRECT");e.context.next({path:n,query:r,status:t})}},e.context.nuxtState=window.__NUXT__),e.context.next=n.next,e.context._redirected=!1,e.context._errored=!1,e.context.isHMR=!!n.isHMR,!n.route){t.next=10;break}return t.next=9,F(n.route);case 9:e.context.route=t.sent;case 10:if(e.context.params=e.context.route.params||{},e.context.query=e.context.route.query||{},!n.from){t.next=16;break}return t.next=15,F(n.from);case 15:e.context.from=t.sent;case 16:case"end":return t.stop()}},t,this)}))).apply(this,arguments)}function X(t,e){var n;return(n=2===t.length?new Promise(function(n){t(e,function(t,r){t&&e.error(t),n(r=r||{})})}):t(e))&&(n instanceof Promise||"function"==typeof n.then)||(n=Promise.resolve(n)),n}function G(t,e){var n=window.location.pathname;return"hash"===e?window.location.hash.replace(/^#\//,""):(t&&0===n.indexOf(t)&&(n=n.slice(t.length)),(n||"/")+window.location.search+window.location.hash)}function B(t,e){return function(t){for(var e=new Array(t.length),n=0;n1)return this.nuxtChildKey||B(this.$route.matched[0].path)(this.$route.params);var t=this.$route.matched[0]&&this.$route.matched[0].components.default;return t&&t.options&&t.options.key?"function"==typeof t.options.key?t.options.key(this.$route):t.options.key:this.$route.path}},components:{NuxtChild:L,NuxtError:D}},nt={name:"nuxt-loading",data:function(){return{percent:0,show:!1,canSuccess:!0,throttle:200,duration:5e3,height:"2px",color:"#fff",failedColor:"red"}},methods:{start:function(){var t=this;return this.canSuccess=!0,this._throttle&&clearTimeout(this._throttle),this._timer&&(clearInterval(this._timer),this._timer=null,this.percent=0),this._throttle=setTimeout(function(){t.show=!0,t._cut=1e4/Math.floor(t.duration),t._timer=setInterval(function(){t.increase(t._cut*Math.random()),t.percent>95&&t.finish()},100)},this.throttle),this},set:function(t){return this.show=!0,this.canSuccess=!0,this.percent=Math.floor(t),this},get:function(){return Math.floor(this.percent)},increase:function(t){return this.percent=this.percent+Math.floor(t),this},decrease:function(t){return this.percent=this.percent-Math.floor(t),this},finish:function(){return this.percent=100,this.hide(),this},pause:function(){return clearInterval(this._timer),this},hide:function(){var t=this;return clearInterval(this._timer),this._timer=null,clearTimeout(this._throttle),this._throttle=null,setTimeout(function(){t.show=!1,s.default.nextTick(function(){setTimeout(function(){t.percent=0},200)})},500),this},fail:function(){return this.canSuccess=!1,this}}},rt=(n(280),Object(O.a)(nt,function(){var t=this.$createElement;return(this._self._c||t)("div",{staticClass:"nuxt-progress",style:{width:this.percent+"%",height:this.height,"background-color":this.canSuccess?this.color:this.failedColor,opacity:this.show?1:0}})},[],!1,null,null,null));rt.options.__file="nuxt-loading.vue";var ot=rt.exports,at=(n(282),n(38)),it=n(75),st=it.b.reactiveProp,ut={middleware:["websocket"],components:{PieChart:{extends:it.a,mixins:[st],props:["chartData","options"],mounted:function(){this.renderChart(this.chartData,this.options)}}},props:{},data:function(){return{drawer:null,windowSize:window.innerWidth,maxLogs:100,activeFilter:"",drawings:[{text:"All",label:"all",color:"primary"},{text:"Info",label:"info",color:"info"},{text:"Debug",label:"debug",color:"grey"},{text:"Warn",label:"warn",color:"warning"},{text:"Error",label:"error",color:"error"}]}},computed:w()({},Object(at.b)(["logCount","infoLogsCount","debugLogsCount","warnLogsCount","errorLogsCount"]),{currentWindowSize:function(){return window.innerWidth},pieChartData:function(){return{labels:["info","debug","warn","error"],datasets:[{backgroundColor:["#2196f3","#9e9e9e","#ffc107","#ff5252"],data:[this.infoLogsCount,this.debugLogsCount,this.warnLogsCount,this.errorLogsCount]}]}}}),methods:{changeSearchText:function(t){this.searchInput=t.target.value,this.$store.dispatch("changeSearchText",this.searchInput)},setLevelFilter:function(t){this.activeFilter=t,this.$store.dispatch("setLevelFilter",t)},changeMaxLogs:function(t){this.$store.dispatch("changeMaxLogs",t)},drawCount:function(t){switch(t){case"info":return this.infoLogsCount;case"debug":return this.debugLogsCount;case"warn":return this.warnLogsCount;case"error":return this.errorLogsCount;default:return this.logCount}}}},ct=(n(327),Object(O.a)(ut,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("v-app",{attrs:{id:"inspire"}},[n("v-navigation-drawer",{attrs:{fixed:"","mobile-break-point":"970",app:""},model:{value:t.drawer,callback:function(e){t.drawer=e},expression:"drawer"}},[n("v-list",{attrs:{dense:""}},[t._l(t.drawings,function(e,r){return n("v-list-tile",{key:r,class:{"primary--text":t.activeFilter==e.label},on:{click:function(n){t.setLevelFilter(e.label)}}},[n("v-list-tile-action",[n("v-btn",{attrs:{color:e.color,small:"",round:"",icon:"",dark:""},domProps:{textContent:t._s(t.drawCount(e.label))}})],1),t._v(" "),n("v-list-tile-content",[n("v-list-tile-title",[n("span",[t._v(t._s(e.text))])])],1)],1)}),t._v(" "),t.logCount>0?n("v-list-tile",{staticClass:"chart-v-list-tile"},[n("v-list-tile-content",[n("pie-chart",{attrs:{"chart-data":t.pieChartData,options:{maintainAspectRatio:!1,legend:{display:!0,labels:{usePointStyle:!0}}},height:"250px",width:"250px",position:"relative",styles:{position:"relative"}}})],1)],1):t._e(),t._v(" "),n("v-list-tile",[n("v-list-tile-action",[n("v-icon",{attrs:{icon:""}},[t._v("build")])],1),t._v(" "),n("v-list-tile-content",[n("v-text-field",{attrs:{type:"number",value:"100",min:"1",max:"10000",regular:"",label:"Max Logs"},on:{change:t.changeMaxLogs},model:{value:t.maxLogs,callback:function(e){t.maxLogs=e},expression:"maxLogs"}})],1)],1)],2)],1),t._v(" "),n("v-toolbar",{attrs:{color:"deep-purple",dark:"",fixed:"",app:""}},[n("v-toolbar-side-icon",{on:{click:function(e){e.stopPropagation(),t.drawer=!t.drawer}}}),t._v(" "),n("v-text-field",{staticClass:"mx-3",attrs:{"append-icon":"mic",clearable:"",flat:"",label:"Search","prepend-inner-icon":"search","solo-inverted":""},on:{keyup:t.changeSearchText}})],1),t._v(" "),n("v-content",[n("v-container",{attrs:{fluid:"","fill-height":""}},[n("nuxt")],1)],1),t._v(" "),n("v-footer",{attrs:{height:"auto",color:"deep-purple lighten-1",app:""}},[n("v-layout",{attrs:{"justify-center":"",row:"",wrap:""}},[n("v-flex",{attrs:{id:"bottom","deep-purple":"","py-2":"","text-xs-center":"","white--text":"",xs12:""}},[t._v("\n powered by\n "),n("strong",[n("a",{staticClass:"white--text",attrs:{target:"_brank",href:"https://github.com/shufo/log_viewer"}},[t._v("Log Viewer")])])])],1)],1)],1)},[],!1,null,null,null));ct.options.__file="default.vue";var lt={_default:ct.exports},ft={head:{title:"log_viewer",meta:[{charset:"utf-8"},{name:"viewport",content:"width=device-width, initial-scale=1"},{hid:"description",name:"description",content:"An Web based elixir log viewer"}],link:[{rel:"icon",type:"image/x-icon",href:"/favicon.ico"},{rel:"stylesheet",type:"text/css",href:"//fonts.googleapis.com/css?family=Roboto:300,400,500,700|Material+Icons"}],style:[],script:[]},render:function(t,e){var n=t("nuxt-loading",{ref:"loading"}),r=t(this.layout||"nuxt"),o=t("div",{domProps:{id:"__layout"},key:this.layoutName},[r]),a=t("transition",{props:{name:"layout",mode:"out-in"}},[o]);return t("div",{domProps:{id:"__nuxt"}},[n,a])},data:function(){return{layout:null,layoutName:""}},beforeCreate:function(){s.default.util.defineReactive(this,"nuxt",this.$options.nuxt)},created:function(){s.default.prototype.$nuxt=this,"undefined"!=typeof window&&(window.$nuxt=this),this.error=this.nuxt.error},mounted:function(){this.$loading=this.$refs.loading},watch:{"nuxt.err":"errorChanged"},methods:{errorChanged:function(){this.nuxt.err&&this.$loading&&(this.$loading.fail&&this.$loading.fail(),this.$loading.finish&&this.$loading.finish())},setLayout:function(t){return t&<["_"+t]||(t="default"),this.layoutName=t,this.layout=lt["_"+t],this.layout},loadLayout:function(t){return t&<["_"+t]||(t="default"),Promise.resolve(lt["_"+t])}},components:{NuxtLoading:ot}};s.default.use(at.a);var dt=n(329),pt=dt.keys(),ht={},mt=pt.find(function(t){return t.includes("./index.")});if(mt&&(ht=Dt(mt)),"function"!=typeof ht){ht.modules||(ht.modules={});var vt=!0,gt=!1,xt=void 0;try{for(var yt,wt=pt[Symbol.iterator]();!(vt=(yt=wt.next()).done);vt=!0){var bt=yt.value,_t=bt.replace(/^\.\//,"").replace(/\.(js|mjs)$/,"");if("index"!==_t){var jt=_t.split(/\//);if(_t=jt[jt.length-1],["state","getters","actions","mutations"].includes(_t)){Mt(zt(ht,jt,!0),bt,_t)}else{var Ct="index"===_t;Ct&&jt.pop();var kt=zt(ht,jt),$t=Dt(bt);if(kt[_t=jt.pop()]=kt[_t]||{},Ct){var Et={};if(kt[_t].appends){Et.appends=kt[_t].appends;var Lt=!0,Rt=!1,St=void 0;try{for(var Tt,At=kt[_t].appends[Symbol.iterator]();!(Lt=(Tt=At.next()).done);Lt=!0){var Ot=Tt.value;Et[Ot]=kt[_t][Ot]}}catch(t){Rt=!0,St=t}finally{try{Lt||null==At.return||At.return()}finally{if(Rt)throw St}}}kt[_t]=Object.assign({},kt[_t],$t,Et),kt[_t].namespaced=!0}else kt[_t]=Object.assign({},$t,kt[_t]),kt[_t].namespaced=!0}}}}catch(t){gt=!0,xt=t}finally{try{vt||null==wt.return||wt.return()}finally{if(gt)throw xt}}}var Nt=ht instanceof Function?ht:function(){return new at.a.Store(Object.assign({strict:!1},ht,{state:ht.state instanceof Function?ht.state():{}}))};function Dt(t){var e=dt(t),n=e.default||e;if(n.commit)throw new Error("[nuxt] store/"+t.replace("./","")+" should export a method which returns a Vuex instance.");if(n.state&&"function"!=typeof n.state)throw new Error("[nuxt] state should be a function in store/"+t.replace("./",""));return n}function zt(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(1===e.length)return n?t:t.modules;var r=e.shift();return t.modules[r]=t.modules[r]||{},t.modules[r].namespaced=!0,t.modules[r].modules=t.modules[r].modules||{},zt(t.modules[r],e,n)}function Mt(t,e,n){var r=dt(e);t.appends=t.appends||[],t.appends.push(n),t[n]=r.default||r}var Pt=n(232),qt=n.n(Pt);s.default.use(qt.a,{});var Ht=n(233),It=n.n(Ht);n(521);s.default.use(It.a),s.default.component(E.name,E),s.default.component(L.name,L),s.default.component(T.name,T),s.default.component(et.name,et),s.default.use(_.a,{keyName:"head",attribute:"data-n-head",ssrAttribute:"data-n-head-ssr",tagIDKeyName:"hid"});var Ft={name:"page",mode:"out-in",appear:!0,appearClass:"appear",appearActiveClass:"appear-active",appearToClass:"appear-to"};function Ut(){return(Ut=i()(regeneratorRuntime.mark(function t(e){var n,r,o,a,i,u;return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,new j.a({mode:"history",base:"./",linkActiveClass:"nuxt-link-active",linkExactActiveClass:"nuxt-link-exact-active",scrollBehavior:k,routes:[{path:"/",component:C,name:"index"},{path:"/*",component:C,name:"return_to_index"}],fallback:!1});case 2:return n=t.sent,(r=Nt(e)).$router=n,o=w()({router:n,store:r,nuxt:{defaultTransition:Ft,transitions:[Ft],setTransitions:function(t){return Array.isArray(t)||(t=[t]),t=t.map(function(t){return t=t?"string"==typeof t?Object.assign({},Ft,{name:t}):Object.assign({},Ft,t):Ft}),this.$options.nuxt.transitions=t,t},err:null,dateErr:null,error:function(t){t=t||null,o.context._errored=!!t,"string"==typeof t&&(t={statusCode:500,message:t});var n=this.nuxt||this.$options.nuxt;return n.dateErr=Date.now(),n.err=t,e&&(e.nuxt.error=t),t}}},ft),r.app=o,a=e?e.next:function(t){return o.router.push(t)},e?i=n.resolve(e.url).route:(u=G(n.options.base),i=n.resolve(u).route),t.next=11,W(o,{route:i,next:a,error:o.nuxt.error.bind(o),store:r,payload:e?e.payload:void 0,req:e?e.req:void 0,res:e?e.res:void 0,beforeRenderFns:e?e.beforeRenderFns:void 0});case 11:(function(t,e){if(!t)throw new Error("inject(key, value) has no key provided");if(!e)throw new Error("inject(key, value) has no value provided");o[t="$"+t]=e,r[t]=o[t];var n="__nuxt_"+t+"_installed__";s.default[n]||(s.default[n]=!0,s.default.use(function(){s.default.prototype.hasOwnProperty(t)||Object.defineProperty(s.default.prototype,t,{get:function(){return this.$root.$options[t]}})}))}),window.__NUXT__&&window.__NUXT__.state&&r.replaceState(window.__NUXT__.state),t.next=16;break;case 16:t.next=19;break;case 19:t.next=22;break;case 22:return t.abrupt("return",{app:o,router:n,store:r});case 23:case"end":return t.stop()}},t,this)}))).apply(this,arguments)}var Wt,Jt,Xt=[],Gt=window.__NUXT__||{};if(Object.assign(s.default.config,{silent:!0,performance:!1}),!s.default.config.$nuxt){var Bt=s.default.config.errorHandler;s.default.config.errorHandler=function(t,e,n){var r={statusCode:t.statusCode||t.name||"Whoops!",message:t.message||t.toString()},o=null;if("function"==typeof Bt){for(var a=arguments.length,i=new Array(a>3?a-3:0),u=3;u2?r-2:0),a=2;a1&&void 0!==arguments[1]&&arguments[1];return Array.prototype.concat.apply([],t.matched.map(function(t,n){return Object.keys(t.instances).map(function(r){return e&&e.push(n),t.instances[r]})}))}(t,e),o=q(t,e);r.forEach(function(t,e){if(t&&t.constructor._dataRefresh&&o[e]===t.constructor&&"function"==typeof t.constructor.options.data){var n=t.constructor.options.data.call(t);for(var r in n)s.default.set(t.$data,r,n[r])}}),re.call(n,t)})}function ae(t){window.onNuxtReadyCbs.forEach(function(e){"function"==typeof e&&e(t)}),"function"==typeof window._onNuxtLoaded&&window._onNuxtLoaded(t),Jt.afterEach(function(e,n){s.default.nextTick(function(){return t.$nuxt.$emit("routeChanged",e,n)})})}function ie(){return(ie=i()(regeneratorRuntime.mark(function t(e){var n,r,o;return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return Wt=e.app,Jt=e.router,e.store,t.next=5,Promise.all((u=void 0,u=G((a=Jt).options.base,a.options.mode),H(a.match(u),function(){var t=i()(regeneratorRuntime.mark(function t(e,n,r,o,a){var i;return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if("function"!=typeof e||e.options){t.next=4;break}return t.next=3,e();case 3:e=t.sent;case 4:return i=Yt(P(e),Gt.data?Gt.data[a]:null),r.components[o]=i,t.abrupt("return",i);case 7:case"end":return t.stop()}},t,this)}));return function(e,n,r,o,a){return t.apply(this,arguments)}}())));case 5:if(n=t.sent,r=new s.default(Wt),o=function(){r.$mount("#__nuxt"),s.default.nextTick(function(){ae(r)})},r.setTransitions=r.$options.nuxt.setTransitions.bind(r),n.length&&(r.setTransitions(Kt(n,Jt.currentRoute)),Xt=Jt.currentRoute.matched.map(function(t){return B(t.path)(Jt.currentRoute.params)})),r.$loading={},Gt.error&&r.error(Gt.error),Jt.beforeEach(Vt.bind(r)),Jt.beforeEach(te.bind(r)),Jt.afterEach(ne),Jt.afterEach(oe.bind(r)),!Gt.serverRendered){t.next=19;break}return o(),t.abrupt("return");case 19:te.call(r,Jt.currentRoute,Jt.currentRoute,function(t){if(!t)return ne(Jt.currentRoute,Jt.currentRoute),re.call(r,Jt.currentRoute),void o();Jt.push(t,function(){return o()},function(t){if(!t)return o();console.error(t)})});case 20:case"end":return t.stop()}var a,u},t,this)}))).apply(this,arguments)}s.default.config.$nuxt.$nuxt=!0,function(t){return Ut.apply(this,arguments)}().then(function(t){return ie.apply(this,arguments)}).catch(function(t){console.error("[nuxt] Error while initializing app",t)})}},[[236,3,1,4]]]); -------------------------------------------------------------------------------- /priv/_nuxt/521d7c9bf2fb650e51e0.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[2],{524:function(t,e,r){"use strict";var o=r(6),n=r(525),s=r(234);o(o.P+o.F*/Version\/10\.\d+(\.\d+)? Safari\//.test(s),"String",{padStart:function(t){return n(this,t,arguments.length>1?arguments[1]:void 0,!0)}})},525:function(t,e,r){var o=r(29),n=r(235),s=r(21);t.exports=function(t,e,r,a){var i=String(s(t)),l=i.length,c=void 0===r?" ":String(r),u=o(e);if(u<=l||""==c)return i;var d=u-l,v=n.call(c,Math.ceil(d/c.length));return v.length>d&&(v=v.slice(0,d)),a?v+i:i+v}},526:function(t,e,r){"use strict";r.r(e);r(52),r(53),r(524);var o=r(19),n=r.n(o),s=r(38),a=(r(22),r(76),{name:"LogDetail",props:{message:{type:Object,required:!0}},data:function(){return{show:!1}},computed:{tableItems:function(){var t=this;return Object.keys(this.message.md).map(function(e){return{key:e,value:t.message.md[e]}})}}}),i=r(27),l=Object(i.a)(a,function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("v-card",[r("v-divider"),t._v(" "),r("v-card-text",[r("highlight-code",{attrs:{lang:"elixir"}},[t._v("\n "+t._s(t.message.msg)+"\n ")])],1),t._v(" "),r("v-card-actions",[r("v-btn",{attrs:{flat:""},on:{click:function(e){t.show=!t.show}}},[r("v-icon",{attrs:{left:""}},[t._v(t._s(t.show?"keyboard_arrow_up":"keyboard_arrow_down"))]),t._v("\n metadata\n ")],1)],1),t._v(" "),r("v-slide-y-transition",[r("v-card-text",{directives:[{name:"show",rawName:"v-show",value:t.show,expression:"show"}]},[r("v-divider"),t._v(" "),r("v-data-table",{staticClass:"elevation-1",attrs:{items:t.tableItems,"hide-actions":"","hide-headers":"","text-xs-left":""},scopedSlots:t._u([{key:"items",fn:function(e){return[r("td",[r("strong",[t._v(t._s(e.item.key))])]),t._v(" "),r("td",{staticClass:"text-xs-left"},[r("highlight-code",{attrs:{lang:"elixir"}},[t._v("\n "+t._s(e.item.value)+"\n ")])],1)]}}])})],1)],1)],1)},[],!1,null,null,null);l.options.__file="LogDetail.vue";var c={components:{LogDetail:l.exports},data:function(){return{offsetTop:0}},computed:n()({},Object(s.b)(["searchText","logs","logsWithId","filteredLogs","filterLevel"]),{results:function(){var t=this;return this.resultIds.map(function(e){return t.logsWithId[e]})}}),methods:{logColor:function(t){switch(t){case"info":return"indigo";case"debug":return"grey";case"warn":return"yellow";case"error":return"red";default:return"indigo"}},logIcon:function(t){switch(t){case"info":return"info";case"debug":return"bug_report";case"warn":return"warning";case"error":return"error";default:return"info"}},logTimestamp:function(t){var e=t.hour,r=t.minute,o=t.second,n=t.millisecond;return e.toString().padStart(2,"0")+":"+r.toString().padStart(2,"0")+":"+o.toString().padStart(2,"0")+"."+n.toString().padStart(3,"0")},goToBottom:function(){this.$vuetify.goTo(999999,{duration:300,easing:"easeInOutCubic"})},goToTop:function(){this.$vuetify.goTo(0,{duration:300,easing:"easeInOutCubic"})},onScroll:function(){this.offsetTop=window.pageYOffset||document.documentElement.scrollTop}}},u=Object(i.a)(c,function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("v-layout",{attrs:{column:"","justify-space-between":""}},[r("v-flex",{attrs:{xs12:"",sm12:"",md12:"",lg12:""}},[r("v-expansion-panel",[r("v-divider"),t._v(" "),r("v-slide-y-transition",{staticClass:"py-0",attrs:{group:"",tag:"v-expansion-panel"}},t._l(t.filteredLogs,function(e){return r("v-expansion-panel-content",{key:e.id,attrs:{lazy:""}},[r("v-layout",{directives:[{name:"scroll",rawName:"v-scroll",value:t.onScroll,expression:"onScroll"}],attrs:{slot:"header","align-center":"","justify-space-between":"",row:"",spacer:""},slot:"header"},[r("v-flex",{attrs:{xs4:"",sm2:"",md1:""}},[r("v-avatar",{attrs:{slot:"activator",size:"36px"},slot:"activator"},[r("v-icon",{attrs:{color:t.logColor(e.md.level)},domProps:{textContent:t._s(t.logIcon(e.md.level))}})],1)],1),t._v(" "),r("v-flex",{attrs:{"no-wrap":"",xs5:"",sm8:"",ellipsis:""}},[r("strong",{attrs:{id:"app_message_key"},domProps:{innerHTML:t._s(e.msg)}})]),t._v(" "),r("v-spacer"),t._v(" "),r("v-flex",{attrs:{xs3:"",sm2:""},domProps:{textContent:t._s(t.logTimestamp(e.ts))}})],1),t._v(" "),r("log-detail",{attrs:{message:e}})],1)}))],1),t._v(" "),r("v-card",[r("v-fab-transition",[t.offsetTop<100?r("v-btn",{attrs:{relative:"",dark:"",fab:"",bottom:"",right:"",fixed:"",color:"pink"},on:{click:t.goToBottom}},[r("v-icon",[t._v("arrow_downward")])],1):t._e()],1),t._v(" "),r("v-fab-transition",[t.offsetTop>100?r("v-btn",{attrs:{relative:"",dark:"",fab:"",bottom:"",right:"",fixed:"",color:"pink"},on:{click:t.goToTop}},[r("v-icon",[t._v("arrow_upward")])],1):t._e()],1),t._v(" "),0==t.filteredLogs.length?r("v-card-text",[r("p",{attrs:{id:"waiting_text"}},[t._v("Waiting for logs matching the conditions to coming in...")]),t._v(" "),r("v-progress-circular",{attrs:{indeterminate:"",color:"purple"}})],1):t._e()],1)],1)],1)},[],!1,null,null,null);u.options.__file="index.vue";e.default=u.exports}}]); -------------------------------------------------------------------------------- /priv/_nuxt/LICENSES: -------------------------------------------------------------------------------- 1 | /*! 2 | * Vue.js v2.5.17 3 | * (c) 2014-2018 Evan You 4 | * Released under the MIT License. 5 | */ 6 | 7 | /** 8 | * vuex v3.0.1 9 | * (c) 2017 Evan You 10 | * @license MIT 11 | */ 12 | 13 | /** 14 | * vue-router v3.0.1 15 | * (c) 2017 Evan You 16 | * @license MIT 17 | */ 18 | 19 | /** 20 | * vue-meta v1.5.5 21 | * (c) 2018 Declan de Wet & Sébastien Chopin (@Atinux) 22 | * @license MIT 23 | */ 24 | 25 | /* 26 | object-assign 27 | (c) Sindre Sorhus 28 | @license MIT 29 | */ 30 | 31 | /*! 32 | * vue-no-ssr v1.0.0 33 | * (c) 2018-present egoist <0x142857@gmail.com> 34 | * Released under the MIT License. 35 | */ 36 | 37 | /*!*****************************************!*\ 38 | !*** ./src/components/VAlert/VAlert.ts ***! 39 | \*****************************************/ 40 | 41 | /*! exports provided: default */ 42 | 43 | /*! ../../stylus/components/_alerts.styl */ 44 | 45 | /*! ../VIcon */ 46 | 47 | /*! ../../mixins/colorable */ 48 | 49 | /*! ../../mixins/toggleable */ 50 | 51 | /*! ../../mixins/transitionable */ 52 | 53 | /*! ../../util/mixins */ 54 | 55 | /*!****************************************!*\ 56 | !*** ./src/components/VAlert/index.ts ***! 57 | \****************************************/ 58 | 59 | /*! exports provided: VAlert, default */ 60 | 61 | /*! ./VAlert */ 62 | 63 | /*!*************************************!*\ 64 | !*** ./src/components/VApp/VApp.js ***! 65 | \*************************************/ 66 | 67 | /*! exports provided: default */ 68 | 69 | /*! ../../stylus/components/_app.styl */ 70 | 71 | /*! ./mixins/app-theme */ 72 | 73 | /*! ../../mixins/themeable */ 74 | 75 | /*! ../../directives/resize */ 76 | 77 | /*!**************************************!*\ 78 | !*** ./src/components/VApp/index.js ***! 79 | \**************************************/ 80 | 81 | /*! exports provided: VApp, default */ 82 | 83 | /*! ./VApp */ 84 | 85 | /*!*************************************************!*\ 86 | !*** ./src/components/VApp/mixins/app-theme.js ***! 87 | \*************************************************/ 88 | 89 | /*! exports provided: default */ 90 | 91 | /*! ../../../util/theme */ 92 | 93 | /*!*******************************************************!*\ 94 | !*** ./src/components/VAutocomplete/VAutocomplete.js ***! 95 | \*******************************************************/ 96 | 97 | /*! exports provided: default */ 98 | 99 | /*! ../../stylus/components/_autocompletes.styl */ 100 | 101 | /*! ../VSelect/VSelect */ 102 | 103 | /*! ../VTextField/VTextField */ 104 | 105 | /*! ../../util/helpers */ 106 | 107 | /*!***********************************************!*\ 108 | !*** ./src/components/VAutocomplete/index.js ***! 109 | \***********************************************/ 110 | 111 | /*! exports provided: VAutocomplete, default */ 112 | 113 | /*! ./VAutocomplete */ 114 | 115 | /*!*******************************************!*\ 116 | !*** ./src/components/VAvatar/VAvatar.ts ***! 117 | \*******************************************/ 118 | 119 | /*! exports provided: default */ 120 | 121 | /*! ../../stylus/components/_avatars.styl */ 122 | 123 | /*! ../../mixins/colorable */ 124 | 125 | /*! ../../util/helpers */ 126 | 127 | /*! ../../util/mixins */ 128 | 129 | /*!*****************************************!*\ 130 | !*** ./src/components/VAvatar/index.ts ***! 131 | \*****************************************/ 132 | 133 | /*! exports provided: VAvatar, default */ 134 | 135 | /*! ./VAvatar */ 136 | 137 | /*!*****************************************!*\ 138 | !*** ./src/components/VBadge/VBadge.ts ***! 139 | \*****************************************/ 140 | 141 | /*! exports provided: default */ 142 | 143 | /*! ../../stylus/components/_badges.styl */ 144 | 145 | /*! ../../mixins/colorable */ 146 | 147 | /*! ../../mixins/toggleable */ 148 | 149 | /*! ../../mixins/positionable */ 150 | 151 | /*! ../../mixins/transitionable */ 152 | 153 | /*! ../../util/mixins */ 154 | 155 | /*!****************************************!*\ 156 | !*** ./src/components/VBadge/index.ts ***! 157 | \****************************************/ 158 | 159 | /*! exports provided: VBadge, default */ 160 | 161 | /*! ./VBadge */ 162 | 163 | /*!*************************************************!*\ 164 | !*** ./src/components/VBottomNav/VBottomNav.ts ***! 165 | \*************************************************/ 166 | 167 | /*! exports provided: default */ 168 | 169 | /*! ../../stylus/components/_bottom-navs.styl */ 170 | 171 | /*! ../../mixins/applicationable */ 172 | 173 | /*! ../../mixins/button-group */ 174 | 175 | /*! ../../mixins/colorable */ 176 | 177 | /*! ../../util/mixins */ 178 | 179 | /*!********************************************!*\ 180 | !*** ./src/components/VBottomNav/index.ts ***! 181 | \********************************************/ 182 | 183 | /*! exports provided: VBottomNav, default */ 184 | 185 | /*! ./VBottomNav */ 186 | 187 | /*!*****************************************************!*\ 188 | !*** ./src/components/VBottomSheet/VBottomSheet.js ***! 189 | \*****************************************************/ 190 | 191 | /*! exports provided: default */ 192 | 193 | /*! ../../stylus/components/_bottom-sheets.styl */ 194 | 195 | /*! ../VDialog/VDialog */ 196 | 197 | /*!**********************************************!*\ 198 | !*** ./src/components/VBottomSheet/index.js ***! 199 | \**********************************************/ 200 | 201 | /*! exports provided: VBottomSheet, default */ 202 | 203 | /*! ./VBottomSheet */ 204 | 205 | /*!*****************************************************!*\ 206 | !*** ./src/components/VBreadcrumbs/VBreadcrumbs.ts ***! 207 | \*****************************************************/ 208 | 209 | /*! exports provided: default */ 210 | 211 | /*! ../../stylus/components/_breadcrumbs.styl */ 212 | 213 | /*! . */ 214 | 215 | /*! ../../mixins/themeable */ 216 | 217 | /*! ../../util/console */ 218 | 219 | /*! ../../util/mixins */ 220 | 221 | /*!*********************************************************!*\ 222 | !*** ./src/components/VBreadcrumbs/VBreadcrumbsItem.ts ***! 223 | \*********************************************************/ 224 | 225 | /*! exports provided: default */ 226 | 227 | /*! ../../mixins/routable */ 228 | 229 | /*! ../../util/mixins */ 230 | 231 | /*!**********************************************!*\ 232 | !*** ./src/components/VBreadcrumbs/index.ts ***! 233 | \**********************************************/ 234 | 235 | /*! exports provided: VBreadcrumbs, VBreadcrumbsItem, VBreadcrumbsDivider, default */ 236 | 237 | /*! ./VBreadcrumbs */ 238 | 239 | /*! ./VBreadcrumbsItem */ 240 | 241 | /*! ../../util/helpers */ 242 | 243 | /*!*************************************!*\ 244 | !*** ./src/components/VBtn/VBtn.ts ***! 245 | \*************************************/ 246 | 247 | /*! exports provided: default */ 248 | 249 | /*! ../../stylus/components/_buttons.styl */ 250 | 251 | /*! ../../util/mixins */ 252 | 253 | /*! ../VProgressCircular */ 254 | 255 | /*! ../../mixins/colorable */ 256 | 257 | /*! ../../mixins/groupable */ 258 | 259 | /*! ../../mixins/positionable */ 260 | 261 | /*! ../../mixins/routable */ 262 | 263 | /*! ../../mixins/themeable */ 264 | 265 | /*! ../../mixins/toggleable */ 266 | 267 | /*!**************************************!*\ 268 | !*** ./src/components/VBtn/index.ts ***! 269 | \**************************************/ 270 | 271 | /*! exports provided: VBtn, default */ 272 | 273 | /*! ./VBtn */ 274 | 275 | /*!*************************************************!*\ 276 | !*** ./src/components/VBtnToggle/VBtnToggle.ts ***! 277 | \*************************************************/ 278 | 279 | /*! exports provided: default */ 280 | 281 | /*! ../../stylus/components/_button-toggle.styl */ 282 | 283 | /*! ../../mixins/button-group */ 284 | 285 | /*!********************************************!*\ 286 | !*** ./src/components/VBtnToggle/index.ts ***! 287 | \********************************************/ 288 | 289 | /*! exports provided: VBtnToggle, default */ 290 | 291 | /*! ./VBtnToggle */ 292 | 293 | /*!***************************************!*\ 294 | !*** ./src/components/VCard/VCard.ts ***! 295 | \***************************************/ 296 | 297 | /*! exports provided: default */ 298 | 299 | /*! ../../stylus/components/_cards.styl */ 300 | 301 | /*! ../../mixins/colorable */ 302 | 303 | /*! ../../mixins/measurable */ 304 | 305 | /*! ../../mixins/routable */ 306 | 307 | /*! ../../mixins/themeable */ 308 | 309 | /*! ../../util/helpers */ 310 | 311 | /*! ../../util/mixins */ 312 | 313 | /*!********************************************!*\ 314 | !*** ./src/components/VCard/VCardMedia.ts ***! 315 | \********************************************/ 316 | 317 | /*! exports provided: default */ 318 | 319 | /*! ../VImg/VImg */ 320 | 321 | /*! ../../util/console */ 322 | 323 | /*!********************************************!*\ 324 | !*** ./src/components/VCard/VCardTitle.ts ***! 325 | \********************************************/ 326 | 327 | /*! exports provided: default */ 328 | 329 | /*! vue */ 330 | 331 | /*!***************************************!*\ 332 | !*** ./src/components/VCard/index.ts ***! 333 | \***************************************/ 334 | 335 | /*! exports provided: VCard, VCardMedia, VCardTitle, VCardActions, VCardText, default */ 336 | 337 | /*! ../../util/helpers */ 338 | 339 | /*! ./VCard */ 340 | 341 | /*! ./VCardMedia */ 342 | 343 | /*! ./VCardTitle */ 344 | 345 | /*! vue */ 346 | 347 | /*!***********************************************!*\ 348 | !*** ./src/components/VCarousel/VCarousel.ts ***! 349 | \***********************************************/ 350 | 351 | /*! exports provided: default */ 352 | 353 | /*! ../../stylus/components/_carousel.styl */ 354 | 355 | /*! ../VWindow/VWindow */ 356 | 357 | /*! ../VBtn */ 358 | 359 | /*! ../VIcon */ 360 | 361 | /*! ../../mixins/button-group */ 362 | 363 | /*! ../../util/helpers */ 364 | 365 | /*!***************************************************!*\ 366 | !*** ./src/components/VCarousel/VCarouselItem.ts ***! 367 | \***************************************************/ 368 | 369 | /*! exports provided: default */ 370 | 371 | /*! ../VWindow/VWindowItem */ 372 | 373 | /*! ../VImg */ 374 | 375 | /*!*******************************************!*\ 376 | !*** ./src/components/VCarousel/index.ts ***! 377 | \*******************************************/ 378 | 379 | /*! exports provided: VCarousel, VCarouselItem, default */ 380 | 381 | /*! ./VCarousel */ 382 | 383 | /*! ./VCarouselItem */ 384 | 385 | /*!***********************************************!*\ 386 | !*** ./src/components/VCheckbox/VCheckbox.js ***! 387 | \***********************************************/ 388 | 389 | /*! exports provided: default */ 390 | 391 | /*! ../../stylus/components/_selection-controls.styl */ 392 | 393 | /*! ../VIcon */ 394 | 395 | /*! ../../mixins/selectable */ 396 | 397 | /*!*******************************************!*\ 398 | !*** ./src/components/VCheckbox/index.js ***! 399 | \*******************************************/ 400 | 401 | /*! exports provided: VCheckbox, default */ 402 | 403 | /*! ./VCheckbox */ 404 | 405 | /*!***************************************!*\ 406 | !*** ./src/components/VChip/VChip.ts ***! 407 | \***************************************/ 408 | 409 | /*! exports provided: default */ 410 | 411 | /*! ../../stylus/components/_chips.styl */ 412 | 413 | /*! ../../util/mixins */ 414 | 415 | /*! ../VIcon */ 416 | 417 | /*! ../../mixins/colorable */ 418 | 419 | /*! ../../mixins/themeable */ 420 | 421 | /*! ../../mixins/toggleable */ 422 | 423 | /*!***************************************!*\ 424 | !*** ./src/components/VChip/index.ts ***! 425 | \***************************************/ 426 | 427 | /*! exports provided: VChip, default */ 428 | 429 | /*! ./VChip */ 430 | 431 | /*!***********************************************!*\ 432 | !*** ./src/components/VCombobox/VCombobox.js ***! 433 | \***********************************************/ 434 | 435 | /*! exports provided: default */ 436 | 437 | /*! ../../stylus/components/_autocompletes.styl */ 438 | 439 | /*! ../VSelect/VSelect */ 440 | 441 | /*! ../VAutocomplete/VAutocomplete */ 442 | 443 | /*! ../../util/helpers */ 444 | 445 | /*!*******************************************!*\ 446 | !*** ./src/components/VCombobox/index.js ***! 447 | \*******************************************/ 448 | 449 | /*! exports provided: VCombobox, default */ 450 | 451 | /*! ./VCombobox */ 452 | 453 | /*!*********************************************!*\ 454 | !*** ./src/components/VCounter/VCounter.js ***! 455 | \*********************************************/ 456 | 457 | /*! exports provided: default */ 458 | 459 | /*! ../../stylus/components/_counters.styl */ 460 | 461 | /*! ../../mixins/themeable */ 462 | 463 | /*!******************************************!*\ 464 | !*** ./src/components/VCounter/index.js ***! 465 | \******************************************/ 466 | 467 | /*! exports provided: VCounter, default */ 468 | 469 | /*! ./VCounter */ 470 | 471 | /*!*******************************************************!*\ 472 | !*** ./src/components/VDataIterator/VDataIterator.js ***! 473 | \*******************************************************/ 474 | 475 | /*! exports provided: default */ 476 | 477 | /*! ../../stylus/components/_data-iterator.styl */ 478 | 479 | /*! ../../mixins/data-iterable */ 480 | 481 | /*!***********************************************!*\ 482 | !*** ./src/components/VDataIterator/index.js ***! 483 | \***********************************************/ 484 | 485 | /*! exports provided: VDataIterator, default */ 486 | 487 | /*! ./VDataIterator */ 488 | 489 | /*!*************************************************!*\ 490 | !*** ./src/components/VDataTable/VDataTable.js ***! 491 | \*************************************************/ 492 | 493 | /*! exports provided: default */ 494 | 495 | /*! ../../stylus/components/_tables.styl */ 496 | 497 | /*! ../../stylus/components/_data-table.styl */ 498 | 499 | /*! ../../mixins/data-iterable */ 500 | 501 | /*! ./mixins/head */ 502 | 503 | /*! ./mixins/body */ 504 | 505 | /*! ./mixins/foot */ 506 | 507 | /*! ./mixins/progress */ 508 | 509 | /*! ../../util/helpers */ 510 | 511 | /*!**************************************************!*\ 512 | !*** ./src/components/VDataTable/VEditDialog.js ***! 513 | \**************************************************/ 514 | 515 | /*! exports provided: default */ 516 | 517 | /*! ../../stylus/components/_small-dialog.styl */ 518 | 519 | /*! ../../mixins/returnable */ 520 | 521 | /*! ../../mixins/themeable */ 522 | 523 | /*! ../../util/helpers */ 524 | 525 | /*! ../VBtn */ 526 | 527 | /*! ../VMenu */ 528 | 529 | /*!********************************************!*\ 530 | !*** ./src/components/VDataTable/index.js ***! 531 | \********************************************/ 532 | 533 | /*! exports provided: VDataTable, VEditDialog, VTableOverflow, default */ 534 | 535 | /*! ../../util/helpers */ 536 | 537 | /*! ./VDataTable */ 538 | 539 | /*! ./VEditDialog */ 540 | 541 | /*!**************************************************!*\ 542 | !*** ./src/components/VDataTable/mixins/body.js ***! 543 | \**************************************************/ 544 | 545 | /*! exports provided: default */ 546 | 547 | /*! ../../transitions/expand-transition */ 548 | 549 | /*!**************************************************!*\ 550 | !*** ./src/components/VDataTable/mixins/foot.js ***! 551 | \**************************************************/ 552 | 553 | /*! exports provided: default */ 554 | 555 | /*!**************************************************!*\ 556 | !*** ./src/components/VDataTable/mixins/head.js ***! 557 | \**************************************************/ 558 | 559 | /*! exports provided: default */ 560 | 561 | /*! ../../../util/console */ 562 | 563 | /*! ../../VCheckbox */ 564 | 565 | /*! ../../VIcon */ 566 | 567 | /*!******************************************************!*\ 568 | !*** ./src/components/VDataTable/mixins/progress.js ***! 569 | \******************************************************/ 570 | 571 | /*! exports provided: default */ 572 | 573 | /*!***************************************************!*\ 574 | !*** ./src/components/VDatePicker/VDatePicker.js ***! 575 | \***************************************************/ 576 | 577 | /*! exports provided: default */ 578 | 579 | /*! ./VDatePickerTitle */ 580 | 581 | /*! ./VDatePickerHeader */ 582 | 583 | /*! ./VDatePickerDateTable */ 584 | 585 | /*! ./VDatePickerMonthTable */ 586 | 587 | /*! ./VDatePickerYears */ 588 | 589 | /*! ../../mixins/picker */ 590 | 591 | /*! ./util */ 592 | 593 | /*! ./util/isDateAllowed */ 594 | 595 | /*! ../../util/console */ 596 | 597 | /*!************************************************************!*\ 598 | !*** ./src/components/VDatePicker/VDatePickerDateTable.js ***! 599 | \************************************************************/ 600 | 601 | /*! exports provided: default */ 602 | 603 | /*! ../../mixins/colorable */ 604 | 605 | /*! ./mixins/date-picker-table */ 606 | 607 | /*! ../../mixins/themeable */ 608 | 609 | /*! ./util */ 610 | 611 | /*! ../../util/helpers */ 612 | 613 | /*!*********************************************************!*\ 614 | !*** ./src/components/VDatePicker/VDatePickerHeader.js ***! 615 | \*********************************************************/ 616 | 617 | /*! exports provided: default */ 618 | 619 | /*! ../../stylus/components/_date-picker-header.styl */ 620 | 621 | /*! ../VBtn */ 622 | 623 | /*! ../VIcon */ 624 | 625 | /*! ../../mixins/colorable */ 626 | 627 | /*! ../../mixins/themeable */ 628 | 629 | /*! ./util */ 630 | 631 | /*!*************************************************************!*\ 632 | !*** ./src/components/VDatePicker/VDatePickerMonthTable.js ***! 633 | \*************************************************************/ 634 | 635 | /*! exports provided: default */ 636 | 637 | /*! ../../mixins/colorable */ 638 | 639 | /*! ./mixins/date-picker-table */ 640 | 641 | /*! ../../mixins/themeable */ 642 | 643 | /*! ./util */ 644 | 645 | /*!********************************************************!*\ 646 | !*** ./src/components/VDatePicker/VDatePickerTitle.js ***! 647 | \********************************************************/ 648 | 649 | /*! exports provided: default */ 650 | 651 | /*! ../../stylus/components/_date-picker-title.styl */ 652 | 653 | /*! ../VIcon */ 654 | 655 | /*! ../../mixins/picker-button */ 656 | 657 | /*!********************************************************!*\ 658 | !*** ./src/components/VDatePicker/VDatePickerYears.js ***! 659 | \********************************************************/ 660 | 661 | /*! exports provided: default */ 662 | 663 | /*! ../../stylus/components/_date-picker-years.styl */ 664 | 665 | /*! ../../mixins/colorable */ 666 | 667 | /*! ./util */ 668 | 669 | /*!*********************************************!*\ 670 | !*** ./src/components/VDatePicker/index.js ***! 671 | \*********************************************/ 672 | 673 | /*! exports provided: VDatePicker, VDatePickerTitle, VDatePickerHeader, VDatePickerDateTable, VDatePickerMonthTable, VDatePickerYears, default */ 674 | 675 | /*! ./VDatePicker */ 676 | 677 | /*! ./VDatePickerTitle */ 678 | 679 | /*! ./VDatePickerHeader */ 680 | 681 | /*! ./VDatePickerDateTable */ 682 | 683 | /*! ./VDatePickerMonthTable */ 684 | 685 | /*! ./VDatePickerYears */ 686 | 687 | /*!****************************************************************!*\ 688 | !*** ./src/components/VDatePicker/mixins/date-picker-table.js ***! 689 | \****************************************************************/ 690 | 691 | /*! exports provided: default */ 692 | 693 | /*! ../../../stylus/components/_date-picker-table.styl */ 694 | 695 | /*! ../../../directives/touch */ 696 | 697 | /*! .././util/isDateAllowed */ 698 | 699 | /*!************************************************************************!*\ 700 | !*** ./src/components/VDatePicker/util/createNativeLocaleFormatter.js ***! 701 | \************************************************************************/ 702 | 703 | /*! exports provided: default */ 704 | 705 | /*! ./pad */ 706 | 707 | /*!**************************************************!*\ 708 | !*** ./src/components/VDatePicker/util/index.js ***! 709 | \**************************************************/ 710 | 711 | /*! exports provided: createNativeLocaleFormatter, monthChange, pad */ 712 | 713 | /*! ./createNativeLocaleFormatter */ 714 | 715 | /*! ./monthChange */ 716 | 717 | /*! ./pad */ 718 | 719 | /*!**********************************************************!*\ 720 | !*** ./src/components/VDatePicker/util/isDateAllowed.js ***! 721 | \**********************************************************/ 722 | 723 | /*! exports provided: default */ 724 | 725 | /*!********************************************************!*\ 726 | !*** ./src/components/VDatePicker/util/monthChange.js ***! 727 | \********************************************************/ 728 | 729 | /*! exports provided: default */ 730 | 731 | /*! ./pad */ 732 | 733 | /*!************************************************!*\ 734 | !*** ./src/components/VDatePicker/util/pad.js ***! 735 | \************************************************/ 736 | 737 | /*! exports provided: default */ 738 | 739 | /*!*******************************************!*\ 740 | !*** ./src/components/VDialog/VDialog.js ***! 741 | \*******************************************/ 742 | 743 | /*! exports provided: default */ 744 | 745 | /*! ../../stylus/components/_dialogs.styl */ 746 | 747 | /*! ../../mixins/dependent */ 748 | 749 | /*! ../../mixins/detachable */ 750 | 751 | /*! ../../mixins/overlayable */ 752 | 753 | /*! ../../mixins/returnable */ 754 | 755 | /*! ../../mixins/stackable */ 756 | 757 | /*! ../../mixins/toggleable */ 758 | 759 | /*! ../../directives/click-outside */ 760 | 761 | /*! ../../util/helpers */ 762 | 763 | /*! ../../util/ThemeProvider */ 764 | 765 | /*!*****************************************!*\ 766 | !*** ./src/components/VDialog/index.js ***! 767 | \*****************************************/ 768 | 769 | /*! exports provided: VDialog, default */ 770 | 771 | /*! ./VDialog */ 772 | 773 | /*!*********************************************!*\ 774 | !*** ./src/components/VDivider/VDivider.ts ***! 775 | \*********************************************/ 776 | 777 | /*! exports provided: default */ 778 | 779 | /*! ../../stylus/components/_dividers.styl */ 780 | 781 | /*! ../../mixins/themeable */ 782 | 783 | /*!******************************************!*\ 784 | !*** ./src/components/VDivider/index.ts ***! 785 | \******************************************/ 786 | 787 | /*! exports provided: VDivider, default */ 788 | 789 | /*! ./VDivider */ 790 | 791 | /*!***********************************************************!*\ 792 | !*** ./src/components/VExpansionPanel/VExpansionPanel.ts ***! 793 | \***********************************************************/ 794 | 795 | /*! exports provided: default */ 796 | 797 | /*! ../../stylus/components/_expansion-panel.styl */ 798 | 799 | /*! ../../mixins/themeable */ 800 | 801 | /*! ../../mixins/registrable */ 802 | 803 | /*! ../../util/mixins */ 804 | 805 | /*!******************************************************************!*\ 806 | !*** ./src/components/VExpansionPanel/VExpansionPanelContent.ts ***! 807 | \******************************************************************/ 808 | 809 | /*! exports provided: default */ 810 | 811 | /*! ../transitions */ 812 | 813 | /*! ../../mixins/bootable */ 814 | 815 | /*! ../../mixins/toggleable */ 816 | 817 | /*! ../../mixins/rippleable */ 818 | 819 | /*! ../../mixins/registrable */ 820 | 821 | /*! ../VIcon */ 822 | 823 | /*! ../../util/mixins */ 824 | 825 | /*! ../../util/console */ 826 | 827 | /*!*************************************************!*\ 828 | !*** ./src/components/VExpansionPanel/index.ts ***! 829 | \*************************************************/ 830 | 831 | /*! exports provided: VExpansionPanel, VExpansionPanelContent, default */ 832 | 833 | /*! ./VExpansionPanel */ 834 | 835 | /*! ./VExpansionPanelContent */ 836 | 837 | /*!*******************************************!*\ 838 | !*** ./src/components/VFooter/VFooter.js ***! 839 | \*******************************************/ 840 | 841 | /*! exports provided: default */ 842 | 843 | /*! ../../stylus/components/_footer.styl */ 844 | 845 | /*! ../../mixins/applicationable */ 846 | 847 | /*! ../../mixins/colorable */ 848 | 849 | /*! ../../mixins/themeable */ 850 | 851 | /*!*****************************************!*\ 852 | !*** ./src/components/VFooter/index.js ***! 853 | \*****************************************/ 854 | 855 | /*! exports provided: VFooter, default */ 856 | 857 | /*! ./VFooter */ 858 | 859 | /*!***************************************!*\ 860 | !*** ./src/components/VForm/VForm.js ***! 861 | \***************************************/ 862 | 863 | /*! exports provided: default */ 864 | 865 | /*! ../../stylus/components/_forms.styl */ 866 | 867 | /*! ../../mixins/registrable */ 868 | 869 | /*!***************************************!*\ 870 | !*** ./src/components/VForm/index.js ***! 871 | \***************************************/ 872 | 873 | /*! exports provided: VForm, default */ 874 | 875 | /*! ./VForm */ 876 | 877 | /*!********************************************!*\ 878 | !*** ./src/components/VGrid/VContainer.js ***! 879 | \********************************************/ 880 | 881 | /*! exports provided: default */ 882 | 883 | /*! ../../stylus/components/_grid.styl */ 884 | 885 | /*! ./grid */ 886 | 887 | /*!******************************************!*\ 888 | !*** ./src/components/VGrid/VContent.js ***! 889 | \******************************************/ 890 | 891 | /*! exports provided: default */ 892 | 893 | /*! ../../stylus/components/_content.styl */ 894 | 895 | /*! ../../mixins/ssr-bootable */ 896 | 897 | /*!***************************************!*\ 898 | !*** ./src/components/VGrid/VFlex.js ***! 899 | \***************************************/ 900 | 901 | /*! exports provided: default */ 902 | 903 | /*! ../../stylus/components/_grid.styl */ 904 | 905 | /*! ./grid */ 906 | 907 | /*!*****************************************!*\ 908 | !*** ./src/components/VGrid/VLayout.js ***! 909 | \*****************************************/ 910 | 911 | /*! exports provided: default */ 912 | 913 | /*! ../../stylus/components/_grid.styl */ 914 | 915 | /*! ./grid */ 916 | 917 | /*!**************************************!*\ 918 | !*** ./src/components/VGrid/grid.js ***! 919 | \**************************************/ 920 | 921 | /*! exports provided: default */ 922 | 923 | /*!***************************************!*\ 924 | !*** ./src/components/VGrid/index.js ***! 925 | \***************************************/ 926 | 927 | /*! exports provided: VContainer, VContent, VFlex, VLayout, VSpacer, default */ 928 | 929 | /*! ../../util/helpers */ 930 | 931 | /*! ./VContainer */ 932 | 933 | /*! ./VContent */ 934 | 935 | /*! ./VFlex */ 936 | 937 | /*! ./VLayout */ 938 | 939 | /*!*****************************************!*\ 940 | !*** ./src/components/VHover/VHover.ts ***! 941 | \*****************************************/ 942 | 943 | /*! exports provided: default */ 944 | 945 | /*! ../../mixins/delayable */ 946 | 947 | /*! ../../mixins/toggleable */ 948 | 949 | /*! ../../util/mixins */ 950 | 951 | /*! ../../util/console */ 952 | 953 | /*!****************************************!*\ 954 | !*** ./src/components/VHover/index.ts ***! 955 | \****************************************/ 956 | 957 | /*! exports provided: VHover, default */ 958 | 959 | /*! ./VHover */ 960 | 961 | /*!***************************************!*\ 962 | !*** ./src/components/VIcon/VIcon.ts ***! 963 | \***************************************/ 964 | 965 | /*! exports provided: default */ 966 | 967 | /*! ../../stylus/components/_icons.styl */ 968 | 969 | /*! ../../mixins/colorable */ 970 | 971 | /*! ../../mixins/sizeable */ 972 | 973 | /*! ../../mixins/themeable */ 974 | 975 | /*! ../../util/helpers */ 976 | 977 | /*! vue */ 978 | 979 | /*! ../../util/mixins */ 980 | 981 | /*!***************************************!*\ 982 | !*** ./src/components/VIcon/index.ts ***! 983 | \***************************************/ 984 | 985 | /*! exports provided: VIcon, default */ 986 | 987 | /*! ./VIcon */ 988 | 989 | /*!*************************************!*\ 990 | !*** ./src/components/VImg/VImg.ts ***! 991 | \*************************************/ 992 | 993 | /*! exports provided: default */ 994 | 995 | /*! ../../stylus/components/_images.styl */ 996 | 997 | /*! ../VResponsive */ 998 | 999 | /*! ../../util/console */ 1000 | 1001 | /*!**************************************!*\ 1002 | !*** ./src/components/VImg/index.ts ***! 1003 | \**************************************/ 1004 | 1005 | /*! exports provided: VImg, default */ 1006 | 1007 | /*! ./VImg */ 1008 | 1009 | /*!*****************************************!*\ 1010 | !*** ./src/components/VInput/VInput.js ***! 1011 | \*****************************************/ 1012 | 1013 | /*! exports provided: default */ 1014 | 1015 | /*! ../../stylus/components/_inputs.styl */ 1016 | 1017 | /*! ../VIcon */ 1018 | 1019 | /*! ../VLabel */ 1020 | 1021 | /*! ../VMessages */ 1022 | 1023 | /*! ../../mixins/colorable */ 1024 | 1025 | /*! ../../mixins/themeable */ 1026 | 1027 | /*! ../../mixins/validatable */ 1028 | 1029 | /*! ../../util/helpers */ 1030 | 1031 | /*! ../../util/console */ 1032 | 1033 | /*!****************************************!*\ 1034 | !*** ./src/components/VInput/index.js ***! 1035 | \****************************************/ 1036 | 1037 | /*! exports provided: VInput, default */ 1038 | 1039 | /*! ./VInput */ 1040 | 1041 | /*!********************************************!*\ 1042 | !*** ./src/components/VItemGroup/VItem.ts ***! 1043 | \********************************************/ 1044 | 1045 | /*! exports provided: default */ 1046 | 1047 | /*! ../../mixins/groupable */ 1048 | 1049 | /*! ../../util/mixins */ 1050 | 1051 | /*! ../../util/console */ 1052 | 1053 | /*!*************************************************!*\ 1054 | !*** ./src/components/VItemGroup/VItemGroup.ts ***! 1055 | \*************************************************/ 1056 | 1057 | /*! exports provided: BaseItemGroup, default */ 1058 | 1059 | /*! ../../stylus/components/_item-group.styl */ 1060 | 1061 | /*! ../../mixins/proxyable */ 1062 | 1063 | /*! ../../mixins/themeable */ 1064 | 1065 | /*! ../../util/mixins */ 1066 | 1067 | /*! ../../util/console */ 1068 | 1069 | /*!********************************************!*\ 1070 | !*** ./src/components/VItemGroup/index.ts ***! 1071 | \********************************************/ 1072 | 1073 | /*! exports provided: VItem, VItemGroup, default */ 1074 | 1075 | /*! ./VItem */ 1076 | 1077 | /*! ./VItemGroup */ 1078 | 1079 | /*!*************************************************!*\ 1080 | !*** ./src/components/VJumbotron/VJumbotron.js ***! 1081 | \*************************************************/ 1082 | 1083 | /*! exports provided: default */ 1084 | 1085 | /*! ../../stylus/components/_jumbotrons.styl */ 1086 | 1087 | /*! ../../mixins/colorable */ 1088 | 1089 | /*! ../../mixins/routable */ 1090 | 1091 | /*! ../../mixins/themeable */ 1092 | 1093 | /*! ../../util/console */ 1094 | 1095 | /*!********************************************!*\ 1096 | !*** ./src/components/VJumbotron/index.js ***! 1097 | \********************************************/ 1098 | 1099 | /*! exports provided: VJumbotron, default */ 1100 | 1101 | /*! ./VJumbotron */ 1102 | 1103 | /*!*****************************************!*\ 1104 | !*** ./src/components/VLabel/VLabel.js ***! 1105 | \*****************************************/ 1106 | 1107 | /*! exports provided: default */ 1108 | 1109 | /*! ../../stylus/components/_labels.styl */ 1110 | 1111 | /*! ../../mixins/colorable */ 1112 | 1113 | /*! ../../mixins/themeable */ 1114 | 1115 | /*! ../../util/helpers */ 1116 | 1117 | /*!****************************************!*\ 1118 | !*** ./src/components/VLabel/index.js ***! 1119 | \****************************************/ 1120 | 1121 | /*! exports provided: VLabel, default */ 1122 | 1123 | /*! ./VLabel */ 1124 | 1125 | /*!***************************************!*\ 1126 | !*** ./src/components/VList/VList.js ***! 1127 | \***************************************/ 1128 | 1129 | /*! exports provided: default */ 1130 | 1131 | /*! ../../stylus/components/_lists.styl */ 1132 | 1133 | /*! ../../mixins/themeable */ 1134 | 1135 | /*! ../../mixins/registrable */ 1136 | 1137 | /*!********************************************!*\ 1138 | !*** ./src/components/VList/VListGroup.js ***! 1139 | \********************************************/ 1140 | 1141 | /*! exports provided: default */ 1142 | 1143 | /*! ../../components/VIcon */ 1144 | 1145 | /*! ../../mixins/bootable */ 1146 | 1147 | /*! ../../mixins/toggleable */ 1148 | 1149 | /*! ../../mixins/registrable */ 1150 | 1151 | /*! ../transitions */ 1152 | 1153 | /*!*******************************************!*\ 1154 | !*** ./src/components/VList/VListTile.js ***! 1155 | \*******************************************/ 1156 | 1157 | /*! exports provided: default */ 1158 | 1159 | /*! ../../mixins/colorable */ 1160 | 1161 | /*! ../../mixins/routable */ 1162 | 1163 | /*! ../../mixins/toggleable */ 1164 | 1165 | /*! ../../mixins/themeable */ 1166 | 1167 | /*! ../../directives/ripple */ 1168 | 1169 | /*!*************************************************!*\ 1170 | !*** ./src/components/VList/VListTileAction.js ***! 1171 | \*************************************************/ 1172 | 1173 | /*! exports provided: default */ 1174 | 1175 | /*!*************************************************!*\ 1176 | !*** ./src/components/VList/VListTileAvatar.js ***! 1177 | \*************************************************/ 1178 | 1179 | /*! exports provided: default */ 1180 | 1181 | /*! ../VAvatar */ 1182 | 1183 | /*!***************************************!*\ 1184 | !*** ./src/components/VList/index.js ***! 1185 | \***************************************/ 1186 | 1187 | /*! exports provided: VList, VListGroup, VListTile, VListTileAction, VListTileAvatar, VListTileActionText, VListTileContent, VListTileTitle, VListTileSubTitle, default */ 1188 | 1189 | /*! ../../util/helpers */ 1190 | 1191 | /*! ./VList */ 1192 | 1193 | /*! ./VListGroup */ 1194 | 1195 | /*! ./VListTile */ 1196 | 1197 | /*! ./VListTileAction */ 1198 | 1199 | /*! ./VListTileAvatar */ 1200 | 1201 | /*!***************************************!*\ 1202 | !*** ./src/components/VMenu/VMenu.js ***! 1203 | \***************************************/ 1204 | 1205 | /*! exports provided: default */ 1206 | 1207 | /*! ../../stylus/components/_menus.styl */ 1208 | 1209 | /*! vue */ 1210 | 1211 | /*! ../../mixins/delayable */ 1212 | 1213 | /*! ../../mixins/dependent */ 1214 | 1215 | /*! ../../mixins/detachable */ 1216 | 1217 | /*! ../../mixins/menuable.js */ 1218 | 1219 | /*! ../../mixins/returnable */ 1220 | 1221 | /*! ../../mixins/toggleable */ 1222 | 1223 | /*! ../../mixins/themeable */ 1224 | 1225 | /*! ./mixins/menu-activator */ 1226 | 1227 | /*! ./mixins/menu-generators */ 1228 | 1229 | /*! ./mixins/menu-keyable */ 1230 | 1231 | /*! ./mixins/menu-position */ 1232 | 1233 | /*! ../../directives/click-outside */ 1234 | 1235 | /*! ../../directives/resize */ 1236 | 1237 | /*! ../../util/helpers */ 1238 | 1239 | /*! ../../util/ThemeProvider */ 1240 | 1241 | /*!***************************************!*\ 1242 | !*** ./src/components/VMenu/index.js ***! 1243 | \***************************************/ 1244 | 1245 | /*! exports provided: VMenu, default */ 1246 | 1247 | /*! ./VMenu */ 1248 | 1249 | /*!*******************************************************!*\ 1250 | !*** ./src/components/VMenu/mixins/menu-activator.js ***! 1251 | \*******************************************************/ 1252 | 1253 | /*! exports provided: default */ 1254 | 1255 | /*!********************************************************!*\ 1256 | !*** ./src/components/VMenu/mixins/menu-generators.js ***! 1257 | \********************************************************/ 1258 | 1259 | /*! exports provided: default */ 1260 | 1261 | /*!*****************************************************!*\ 1262 | !*** ./src/components/VMenu/mixins/menu-keyable.js ***! 1263 | \*****************************************************/ 1264 | 1265 | /*! exports provided: default */ 1266 | 1267 | /*! ../../../util/helpers */ 1268 | 1269 | /*!******************************************************!*\ 1270 | !*** ./src/components/VMenu/mixins/menu-position.js ***! 1271 | \******************************************************/ 1272 | 1273 | /*! exports provided: default */ 1274 | 1275 | /*!***********************************************!*\ 1276 | !*** ./src/components/VMessages/VMessages.js ***! 1277 | \***********************************************/ 1278 | 1279 | /*! exports provided: default */ 1280 | 1281 | /*! ../../stylus/components/_messages.styl */ 1282 | 1283 | /*! ../../mixins/colorable */ 1284 | 1285 | /*! ../../mixins/themeable */ 1286 | 1287 | /*!*******************************************!*\ 1288 | !*** ./src/components/VMessages/index.js ***! 1289 | \*******************************************/ 1290 | 1291 | /*! exports provided: VMessages, default */ 1292 | 1293 | /*! ./VMessages */ 1294 | 1295 | /*!***************************************************************!*\ 1296 | !*** ./src/components/VNavigationDrawer/VNavigationDrawer.js ***! 1297 | \***************************************************************/ 1298 | 1299 | /*! exports provided: default */ 1300 | 1301 | /*! ../../stylus/components/_navigation-drawer.styl */ 1302 | 1303 | /*! ../../mixins/applicationable */ 1304 | 1305 | /*! ../../mixins/dependent */ 1306 | 1307 | /*! ../../mixins/overlayable */ 1308 | 1309 | /*! ../../mixins/ssr-bootable */ 1310 | 1311 | /*! ../../mixins/themeable */ 1312 | 1313 | /*! ../../directives/click-outside */ 1314 | 1315 | /*! ../../directives/resize */ 1316 | 1317 | /*! ../../directives/touch */ 1318 | 1319 | /*! ../../util/helpers */ 1320 | 1321 | /*!***************************************************!*\ 1322 | !*** ./src/components/VNavigationDrawer/index.js ***! 1323 | \***************************************************/ 1324 | 1325 | /*! exports provided: VNavigationDrawer, default */ 1326 | 1327 | /*! ./VNavigationDrawer */ 1328 | 1329 | /*!*****************************************************!*\ 1330 | !*** ./src/components/VOverflowBtn/VOverflowBtn.js ***! 1331 | \*****************************************************/ 1332 | 1333 | /*! exports provided: default */ 1334 | 1335 | /*! ../../stylus/components/_overflow-buttons.styl */ 1336 | 1337 | /*! ../VSelect/VSelect */ 1338 | 1339 | /*! ../VAutocomplete */ 1340 | 1341 | /*! ../VTextField/VTextField */ 1342 | 1343 | /*! ../VBtn */ 1344 | 1345 | /*! ../../util/console */ 1346 | 1347 | /*!**********************************************!*\ 1348 | !*** ./src/components/VOverflowBtn/index.js ***! 1349 | \**********************************************/ 1350 | 1351 | /*! exports provided: VOverflowBtn, default */ 1352 | 1353 | /*! ./VOverflowBtn */ 1354 | 1355 | /*!***************************************************!*\ 1356 | !*** ./src/components/VPagination/VPagination.ts ***! 1357 | \***************************************************/ 1358 | 1359 | /*! exports provided: default */ 1360 | 1361 | /*! ../../stylus/components/_pagination.styl */ 1362 | 1363 | /*! ../VIcon */ 1364 | 1365 | /*! ../../directives/resize */ 1366 | 1367 | /*! ../../util/mixins */ 1368 | 1369 | /*! ../../mixins/colorable */ 1370 | 1371 | /*! ../../mixins/themeable */ 1372 | 1373 | /*!*********************************************!*\ 1374 | !*** ./src/components/VPagination/index.ts ***! 1375 | \*********************************************/ 1376 | 1377 | /*! exports provided: VPagination, default */ 1378 | 1379 | /*! ./VPagination */ 1380 | 1381 | /*!***********************************************!*\ 1382 | !*** ./src/components/VParallax/VParallax.ts ***! 1383 | \***********************************************/ 1384 | 1385 | /*! exports provided: default */ 1386 | 1387 | /*! ../../stylus/components/_parallax.styl */ 1388 | 1389 | /*! ../../mixins/translatable */ 1390 | 1391 | /*! ../../util/mixins */ 1392 | 1393 | /*!*******************************************!*\ 1394 | !*** ./src/components/VParallax/index.ts ***! 1395 | \*******************************************/ 1396 | 1397 | /*! exports provided: VParallax, default */ 1398 | 1399 | /*! ./VParallax */ 1400 | 1401 | /*!*******************************************!*\ 1402 | !*** ./src/components/VPicker/VPicker.js ***! 1403 | \*******************************************/ 1404 | 1405 | /*! exports provided: default */ 1406 | 1407 | /*! ../../stylus/components/_pickers.styl */ 1408 | 1409 | /*! ../../stylus/components/_cards.styl */ 1410 | 1411 | /*! ../../mixins/colorable */ 1412 | 1413 | /*! ../../mixins/themeable */ 1414 | 1415 | /*! ../../util/helpers */ 1416 | 1417 | /*!*****************************************!*\ 1418 | !*** ./src/components/VPicker/index.js ***! 1419 | \*****************************************/ 1420 | 1421 | /*! exports provided: VPicker, default */ 1422 | 1423 | /*! ./VPicker */ 1424 | 1425 | /*!***************************************************************!*\ 1426 | !*** ./src/components/VProgressCircular/VProgressCircular.ts ***! 1427 | \***************************************************************/ 1428 | 1429 | /*! exports provided: default */ 1430 | 1431 | /*! ../../stylus/components/_progress-circular.styl */ 1432 | 1433 | /*! ../../mixins/colorable */ 1434 | 1435 | /*! ../../util/mixins */ 1436 | 1437 | /*!***************************************************!*\ 1438 | !*** ./src/components/VProgressCircular/index.ts ***! 1439 | \***************************************************/ 1440 | 1441 | /*! exports provided: VProgressCircular, default */ 1442 | 1443 | /*! ./VProgressCircular */ 1444 | 1445 | /*!***********************************************************!*\ 1446 | !*** ./src/components/VProgressLinear/VProgressLinear.ts ***! 1447 | \***********************************************************/ 1448 | 1449 | /*! exports provided: default */ 1450 | 1451 | /*! ../../stylus/components/_progress-linear.styl */ 1452 | 1453 | /*! ../../mixins/colorable */ 1454 | 1455 | /*! ../../util/helpers */ 1456 | 1457 | /*! ../../util/mixins */ 1458 | 1459 | /*! ../transitions */ 1460 | 1461 | /*!*************************************************!*\ 1462 | !*** ./src/components/VProgressLinear/index.ts ***! 1463 | \*************************************************/ 1464 | 1465 | /*! exports provided: VProgressLinear, default */ 1466 | 1467 | /*! ./VProgressLinear */ 1468 | 1469 | /*!**********************************************!*\ 1470 | !*** ./src/components/VRadioGroup/VRadio.js ***! 1471 | \**********************************************/ 1472 | 1473 | /*! exports provided: default */ 1474 | 1475 | /*! ../../stylus/components/_radios.styl */ 1476 | 1477 | /*! ../VIcon */ 1478 | 1479 | /*! ../VLabel */ 1480 | 1481 | /*! ../../mixins/colorable */ 1482 | 1483 | /*! ../../mixins/rippleable */ 1484 | 1485 | /*! ../../mixins/themeable */ 1486 | 1487 | /*! ../../mixins/selectable */ 1488 | 1489 | /*! ../../mixins/registrable */ 1490 | 1491 | /*!***************************************************!*\ 1492 | !*** ./src/components/VRadioGroup/VRadioGroup.js ***! 1493 | \***************************************************/ 1494 | 1495 | /*! exports provided: default */ 1496 | 1497 | /*! ../../stylus/components/_selection-controls.styl */ 1498 | 1499 | /*! ../../stylus/components/_radio-group.styl */ 1500 | 1501 | /*! ../VInput */ 1502 | 1503 | /*! ../../mixins/comparable */ 1504 | 1505 | /*! ../../mixins/registrable */ 1506 | 1507 | /*!*********************************************!*\ 1508 | !*** ./src/components/VRadioGroup/index.js ***! 1509 | \*********************************************/ 1510 | 1511 | /*! exports provided: VRadioGroup, VRadio, default */ 1512 | 1513 | /*! ./VRadioGroup */ 1514 | 1515 | /*! ./VRadio */ 1516 | 1517 | /*!*****************************************************!*\ 1518 | !*** ./src/components/VRangeSlider/VRangeSlider.js ***! 1519 | \*****************************************************/ 1520 | 1521 | /*! exports provided: default */ 1522 | 1523 | /*! ../../stylus/components/_range-sliders.styl */ 1524 | 1525 | /*! ../VSlider */ 1526 | 1527 | /*! ../../util/helpers */ 1528 | 1529 | /*!**********************************************!*\ 1530 | !*** ./src/components/VRangeSlider/index.js ***! 1531 | \**********************************************/ 1532 | 1533 | /*! exports provided: VRangeSlider, default */ 1534 | 1535 | /*! ./VRangeSlider */ 1536 | 1537 | /*!*******************************************!*\ 1538 | !*** ./src/components/VRating/VRating.ts ***! 1539 | \*******************************************/ 1540 | 1541 | /*! exports provided: default */ 1542 | 1543 | /*! ../../stylus/components/_rating.styl */ 1544 | 1545 | /*! ../VIcon */ 1546 | 1547 | /*! ../../mixins/colorable */ 1548 | 1549 | /*! ../../mixins/delayable */ 1550 | 1551 | /*! ../../mixins/sizeable */ 1552 | 1553 | /*! ../../mixins/rippleable */ 1554 | 1555 | /*! ../../mixins/themeable */ 1556 | 1557 | /*! ../../util/helpers */ 1558 | 1559 | /*! ../../util/mixins */ 1560 | 1561 | /*!*****************************************!*\ 1562 | !*** ./src/components/VRating/index.ts ***! 1563 | \*****************************************/ 1564 | 1565 | /*! exports provided: VRating, default */ 1566 | 1567 | /*! ./VRating */ 1568 | 1569 | /*!***************************************************!*\ 1570 | !*** ./src/components/VResponsive/VResponsive.ts ***! 1571 | \***************************************************/ 1572 | 1573 | /*! exports provided: default */ 1574 | 1575 | /*! ../../stylus/components/_responsive.styl */ 1576 | 1577 | /*! ../../mixins/measurable */ 1578 | 1579 | /*! ../../util/mixins */ 1580 | 1581 | /*! ../../util/helpers */ 1582 | 1583 | /*!*********************************************!*\ 1584 | !*** ./src/components/VResponsive/index.ts ***! 1585 | \*********************************************/ 1586 | 1587 | /*! exports provided: VResponsive, default */ 1588 | 1589 | /*! ./VResponsive */ 1590 | 1591 | /*!*******************************************!*\ 1592 | !*** ./src/components/VSelect/VSelect.js ***! 1593 | \*******************************************/ 1594 | 1595 | /*! exports provided: defaultMenuProps, default */ 1596 | 1597 | /*! ../../stylus/components/_text-fields.styl */ 1598 | 1599 | /*! ../../stylus/components/_select.styl */ 1600 | 1601 | /*! ../VChip */ 1602 | 1603 | /*! ../VMenu */ 1604 | 1605 | /*! ./VSelectList */ 1606 | 1607 | /*! ../VTextField/VTextField */ 1608 | 1609 | /*! ../../mixins/comparable */ 1610 | 1611 | /*! ../../mixins/filterable */ 1612 | 1613 | /*! ../../directives/click-outside */ 1614 | 1615 | /*! ../../util/helpers */ 1616 | 1617 | /*! ../../util/console */ 1618 | 1619 | /*!***********************************************!*\ 1620 | !*** ./src/components/VSelect/VSelectList.js ***! 1621 | \***********************************************/ 1622 | 1623 | /*! exports provided: default */ 1624 | 1625 | /*! ../../stylus/components/_cards.styl */ 1626 | 1627 | /*! ../VCheckbox */ 1628 | 1629 | /*! ../VDivider */ 1630 | 1631 | /*! ../VSubheader */ 1632 | 1633 | /*! ../VList */ 1634 | 1635 | /*! ../../mixins/colorable */ 1636 | 1637 | /*! ../../mixins/themeable */ 1638 | 1639 | /*! ../../util/helpers */ 1640 | 1641 | /*!*****************************************!*\ 1642 | !*** ./src/components/VSelect/index.js ***! 1643 | \*****************************************/ 1644 | 1645 | /*! exports provided: VSelect, default */ 1646 | 1647 | /*! ./VSelect */ 1648 | 1649 | /*! ../VOverflowBtn */ 1650 | 1651 | /*! ../VAutocomplete */ 1652 | 1653 | /*! ../VCombobox */ 1654 | 1655 | /*! ../../util/rebuildFunctionalSlots */ 1656 | 1657 | /*! ../../util/dedupeModelListeners */ 1658 | 1659 | /*! ../../util/console */ 1660 | 1661 | /*!*******************************************!*\ 1662 | !*** ./src/components/VSlider/VSlider.js ***! 1663 | \*******************************************/ 1664 | 1665 | /*! exports provided: default */ 1666 | 1667 | /*! ../../stylus/components/_sliders.styl */ 1668 | 1669 | /*! ../transitions */ 1670 | 1671 | /*! ../VInput */ 1672 | 1673 | /*! ../../directives/click-outside */ 1674 | 1675 | /*! ../../util/helpers */ 1676 | 1677 | /*! ../../util/console */ 1678 | 1679 | /*! ../../mixins/loadable */ 1680 | 1681 | /*!*****************************************!*\ 1682 | !*** ./src/components/VSlider/index.js ***! 1683 | \*****************************************/ 1684 | 1685 | /*! exports provided: VSlider, default */ 1686 | 1687 | /*! ./VSlider */ 1688 | 1689 | /*!***********************************************!*\ 1690 | !*** ./src/components/VSnackbar/VSnackbar.ts ***! 1691 | \***********************************************/ 1692 | 1693 | /*! exports provided: default */ 1694 | 1695 | /*! ../../stylus/components/_snackbars.styl */ 1696 | 1697 | /*! ../../mixins/colorable */ 1698 | 1699 | /*! ../../mixins/toggleable */ 1700 | 1701 | /*! ../../mixins/positionable */ 1702 | 1703 | /*! ../../util/mixins */ 1704 | 1705 | /*!*******************************************!*\ 1706 | !*** ./src/components/VSnackbar/index.ts ***! 1707 | \*******************************************/ 1708 | 1709 | /*! exports provided: VSnackbar, default */ 1710 | 1711 | /*! ./VSnackbar */ 1712 | 1713 | /*!*************************************************!*\ 1714 | !*** ./src/components/VSpeedDial/VSpeedDial.js ***! 1715 | \*************************************************/ 1716 | 1717 | /*! exports provided: default */ 1718 | 1719 | /*! ../../stylus/components/_speed-dial.styl */ 1720 | 1721 | /*! ../../mixins/toggleable */ 1722 | 1723 | /*! ../../mixins/positionable */ 1724 | 1725 | /*! ../../mixins/transitionable */ 1726 | 1727 | /*! ../../directives/click-outside */ 1728 | 1729 | /*!********************************************!*\ 1730 | !*** ./src/components/VSpeedDial/index.js ***! 1731 | \********************************************/ 1732 | 1733 | /*! exports provided: VSpeedDial, default */ 1734 | 1735 | /*! ./VSpeedDial */ 1736 | 1737 | /*!*********************************************!*\ 1738 | !*** ./src/components/VStepper/VStepper.js ***! 1739 | \*********************************************/ 1740 | 1741 | /*! exports provided: default */ 1742 | 1743 | /*! ../../stylus/components/_steppers.styl */ 1744 | 1745 | /*! ../../mixins/registrable */ 1746 | 1747 | /*! ../../mixins/themeable */ 1748 | 1749 | /*!****************************************************!*\ 1750 | !*** ./src/components/VStepper/VStepperContent.js ***! 1751 | \****************************************************/ 1752 | 1753 | /*! exports provided: default */ 1754 | 1755 | /*! ../transitions */ 1756 | 1757 | /*! ../../mixins/registrable */ 1758 | 1759 | /*! ../../util/helpers */ 1760 | 1761 | /*!*************************************************!*\ 1762 | !*** ./src/components/VStepper/VStepperStep.js ***! 1763 | \*************************************************/ 1764 | 1765 | /*! exports provided: default */ 1766 | 1767 | /*! ../VIcon */ 1768 | 1769 | /*! ../../mixins/colorable */ 1770 | 1771 | /*! ../../mixins/registrable */ 1772 | 1773 | /*! ../../directives/ripple */ 1774 | 1775 | /*!******************************************!*\ 1776 | !*** ./src/components/VStepper/index.js ***! 1777 | \******************************************/ 1778 | 1779 | /*! exports provided: VStepper, VStepperContent, VStepperStep, VStepperHeader, VStepperItems, default */ 1780 | 1781 | /*! ../../util/helpers */ 1782 | 1783 | /*! ./VStepper */ 1784 | 1785 | /*! ./VStepperStep */ 1786 | 1787 | /*! ./VStepperContent */ 1788 | 1789 | /*!*************************************************!*\ 1790 | !*** ./src/components/VSubheader/VSubheader.js ***! 1791 | \*************************************************/ 1792 | 1793 | /*! exports provided: default */ 1794 | 1795 | /*! ../../stylus/components/_subheaders.styl */ 1796 | 1797 | /*! ../../mixins/themeable */ 1798 | 1799 | /*!********************************************!*\ 1800 | !*** ./src/components/VSubheader/index.js ***! 1801 | \********************************************/ 1802 | 1803 | /*! exports provided: VSubheader, default */ 1804 | 1805 | /*! ./VSubheader */ 1806 | 1807 | /*!*******************************************!*\ 1808 | !*** ./src/components/VSwitch/VSwitch.js ***! 1809 | \*******************************************/ 1810 | 1811 | /*! exports provided: default */ 1812 | 1813 | /*! ../../stylus/components/_selection-controls.styl */ 1814 | 1815 | /*! ../../stylus/components/_switch.styl */ 1816 | 1817 | /*! ../../mixins/selectable */ 1818 | 1819 | /*! ../../directives/touch */ 1820 | 1821 | /*! ../transitions */ 1822 | 1823 | /*! ../VProgressCircular/VProgressCircular */ 1824 | 1825 | /*! ../../util/helpers */ 1826 | 1827 | /*!*****************************************!*\ 1828 | !*** ./src/components/VSwitch/index.js ***! 1829 | \*****************************************/ 1830 | 1831 | /*! exports provided: VSwitch, default */ 1832 | 1833 | /*! ./VSwitch */ 1834 | 1835 | /*!*************************************************!*\ 1836 | !*** ./src/components/VSystemBar/VSystemBar.js ***! 1837 | \*************************************************/ 1838 | 1839 | /*! exports provided: default */ 1840 | 1841 | /*! ../../stylus/components/_system-bars.styl */ 1842 | 1843 | /*! ../../mixins/applicationable */ 1844 | 1845 | /*! ../../mixins/colorable */ 1846 | 1847 | /*! ../../mixins/themeable */ 1848 | 1849 | /*!********************************************!*\ 1850 | !*** ./src/components/VSystemBar/index.js ***! 1851 | \********************************************/ 1852 | 1853 | /*! exports provided: VSystemBar, default */ 1854 | 1855 | /*! ./VSystemBar */ 1856 | 1857 | /*!**************************************!*\ 1858 | !*** ./src/components/VTabs/VTab.js ***! 1859 | \**************************************/ 1860 | 1861 | /*! exports provided: default */ 1862 | 1863 | /*! ../../mixins/groupable */ 1864 | 1865 | /*! ../../mixins/routable */ 1866 | 1867 | /*! ../../mixins/themeable */ 1868 | 1869 | /*! ../../util/helpers */ 1870 | 1871 | /*!******************************************!*\ 1872 | !*** ./src/components/VTabs/VTabItem.js ***! 1873 | \******************************************/ 1874 | 1875 | /*! exports provided: default */ 1876 | 1877 | /*! ../VWindow/VWindowItem */ 1878 | 1879 | /*! ../../util/console */ 1880 | 1881 | /*!***************************************!*\ 1882 | !*** ./src/components/VTabs/VTabs.js ***! 1883 | \***************************************/ 1884 | 1885 | /*! exports provided: default */ 1886 | 1887 | /*! ../../stylus/components/_tabs.styl */ 1888 | 1889 | /*! ../VItemGroup/VItemGroup */ 1890 | 1891 | /*! ./mixins/tabs-computed */ 1892 | 1893 | /*! ./mixins/tabs-generators */ 1894 | 1895 | /*! ./mixins/tabs-props */ 1896 | 1897 | /*! ./mixins/tabs-touch */ 1898 | 1899 | /*! ./mixins/tabs-watchers */ 1900 | 1901 | /*! ../../mixins/colorable */ 1902 | 1903 | /*! ../../mixins/ssr-bootable */ 1904 | 1905 | /*! ../../mixins/themeable */ 1906 | 1907 | /*! ../../directives/resize */ 1908 | 1909 | /*! ../../directives/touch */ 1910 | 1911 | /*! ../../util/console */ 1912 | 1913 | /*! ../../util/ThemeProvider */ 1914 | 1915 | /*!********************************************!*\ 1916 | !*** ./src/components/VTabs/VTabsItems.js ***! 1917 | \********************************************/ 1918 | 1919 | /*! exports provided: default */ 1920 | 1921 | /*! ../VWindow/VWindow */ 1922 | 1923 | /*!*********************************************!*\ 1924 | !*** ./src/components/VTabs/VTabsSlider.js ***! 1925 | \*********************************************/ 1926 | 1927 | /*! exports provided: default */ 1928 | 1929 | /*! ../../mixins/colorable */ 1930 | 1931 | /*!***************************************!*\ 1932 | !*** ./src/components/VTabs/index.js ***! 1933 | \***************************************/ 1934 | 1935 | /*! exports provided: VTabs, VTab, VTabItem, VTabsItems, VTabsSlider, default */ 1936 | 1937 | /*! ./VTabs */ 1938 | 1939 | /*! ./VTab */ 1940 | 1941 | /*! ./VTabsItems */ 1942 | 1943 | /*! ./VTabItem */ 1944 | 1945 | /*! ./VTabsSlider */ 1946 | 1947 | /*!******************************************************!*\ 1948 | !*** ./src/components/VTabs/mixins/tabs-computed.js ***! 1949 | \******************************************************/ 1950 | 1951 | /*! exports provided: default */ 1952 | 1953 | /*!********************************************************!*\ 1954 | !*** ./src/components/VTabs/mixins/tabs-generators.js ***! 1955 | \********************************************************/ 1956 | 1957 | /*! exports provided: default */ 1958 | 1959 | /*! ../VTabsItems */ 1960 | 1961 | /*! ../VTabsSlider */ 1962 | 1963 | /*! ../../VIcon */ 1964 | 1965 | /*!***************************************************!*\ 1966 | !*** ./src/components/VTabs/mixins/tabs-props.js ***! 1967 | \***************************************************/ 1968 | 1969 | /*! exports provided: default */ 1970 | 1971 | /*!***************************************************!*\ 1972 | !*** ./src/components/VTabs/mixins/tabs-touch.js ***! 1973 | \***************************************************/ 1974 | 1975 | /*! exports provided: default */ 1976 | 1977 | /*!******************************************************!*\ 1978 | !*** ./src/components/VTabs/mixins/tabs-watchers.js ***! 1979 | \******************************************************/ 1980 | 1981 | /*! exports provided: default */ 1982 | 1983 | /*!*************************************************!*\ 1984 | !*** ./src/components/VTextField/VTextField.js ***! 1985 | \*************************************************/ 1986 | 1987 | /*! exports provided: default */ 1988 | 1989 | /*! ../../stylus/components/_text-fields.styl */ 1990 | 1991 | /*! ../VInput */ 1992 | 1993 | /*! ../VCounter */ 1994 | 1995 | /*! ../VLabel */ 1996 | 1997 | /*! ../../mixins/maskable */ 1998 | 1999 | /*! ../../mixins/loadable */ 2000 | 2001 | /*! ../../directives/ripple */ 2002 | 2003 | /*! ../../util/helpers */ 2004 | 2005 | /*! ../../util/console */ 2006 | 2007 | /*!********************************************!*\ 2008 | !*** ./src/components/VTextField/index.js ***! 2009 | \********************************************/ 2010 | 2011 | /*! exports provided: VTextField, default */ 2012 | 2013 | /*! ./VTextField */ 2014 | 2015 | /*! ../VTextarea/VTextarea */ 2016 | 2017 | /*! ../../util/rebuildFunctionalSlots */ 2018 | 2019 | /*! ../../util/dedupeModelListeners */ 2020 | 2021 | /*! ../../util/console */ 2022 | 2023 | /*!***********************************************!*\ 2024 | !*** ./src/components/VTextarea/VTextarea.js ***! 2025 | \***********************************************/ 2026 | 2027 | /*! exports provided: default */ 2028 | 2029 | /*! ../../stylus/components/_textarea.styl */ 2030 | 2031 | /*! ../VTextField/VTextField */ 2032 | 2033 | /*! ../../util/console */ 2034 | 2035 | /*!*******************************************!*\ 2036 | !*** ./src/components/VTextarea/index.js ***! 2037 | \*******************************************/ 2038 | 2039 | /*! exports provided: VTextarea, default */ 2040 | 2041 | /*! ./VTextarea */ 2042 | 2043 | /*!***************************************************!*\ 2044 | !*** ./src/components/VTimePicker/VTimePicker.js ***! 2045 | \***************************************************/ 2046 | 2047 | /*! exports provided: default */ 2048 | 2049 | /*! ./VTimePickerTitle */ 2050 | 2051 | /*! ./VTimePickerClock */ 2052 | 2053 | /*! ../../mixins/picker */ 2054 | 2055 | /*! ../../util/helpers */ 2056 | 2057 | /*! ../VDatePicker/util/pad */ 2058 | 2059 | /*!********************************************************!*\ 2060 | !*** ./src/components/VTimePicker/VTimePickerClock.js ***! 2061 | \********************************************************/ 2062 | 2063 | /*! exports provided: default */ 2064 | 2065 | /*! ../../stylus/components/_time-picker-clock.styl */ 2066 | 2067 | /*! ../../mixins/colorable */ 2068 | 2069 | /*! ../../mixins/themeable */ 2070 | 2071 | /*!********************************************************!*\ 2072 | !*** ./src/components/VTimePicker/VTimePickerTitle.js ***! 2073 | \********************************************************/ 2074 | 2075 | /*! exports provided: default */ 2076 | 2077 | /*! ../../stylus/components/_time-picker-title.styl */ 2078 | 2079 | /*! ../../mixins/picker-button */ 2080 | 2081 | /*! ../VDatePicker/util */ 2082 | 2083 | /*!*********************************************!*\ 2084 | !*** ./src/components/VTimePicker/index.js ***! 2085 | \*********************************************/ 2086 | 2087 | /*! exports provided: VTimePicker, VTimePickerClock, VTimePickerTitle, default */ 2088 | 2089 | /*! ./VTimePicker */ 2090 | 2091 | /*! ./VTimePickerClock */ 2092 | 2093 | /*! ./VTimePickerTitle */ 2094 | 2095 | /*!***********************************************!*\ 2096 | !*** ./src/components/VTimeline/VTimeline.ts ***! 2097 | \***********************************************/ 2098 | 2099 | /*! exports provided: default */ 2100 | 2101 | /*! ../../stylus/components/_timeline.styl */ 2102 | 2103 | /*! ../../util/mixins */ 2104 | 2105 | /*! ../../mixins/themeable */ 2106 | 2107 | /*!***************************************************!*\ 2108 | !*** ./src/components/VTimeline/VTimelineItem.ts ***! 2109 | \***************************************************/ 2110 | 2111 | /*! exports provided: default */ 2112 | 2113 | /*! ../../util/mixins */ 2114 | 2115 | /*! ../VIcon */ 2116 | 2117 | /*! ../../mixins/themeable */ 2118 | 2119 | /*! ../../mixins/colorable */ 2120 | 2121 | /*!*******************************************!*\ 2122 | !*** ./src/components/VTimeline/index.ts ***! 2123 | \*******************************************/ 2124 | 2125 | /*! exports provided: VTimeline, VTimelineItem, default */ 2126 | 2127 | /*! ./VTimeline */ 2128 | 2129 | /*! ./VTimelineItem */ 2130 | 2131 | /*!*********************************************!*\ 2132 | !*** ./src/components/VToolbar/VToolbar.js ***! 2133 | \*********************************************/ 2134 | 2135 | /*! exports provided: default */ 2136 | 2137 | /*! ../../stylus/components/_toolbar.styl */ 2138 | 2139 | /*! ../../mixins/applicationable */ 2140 | 2141 | /*! ../../mixins/colorable */ 2142 | 2143 | /*! ../../mixins/themeable */ 2144 | 2145 | /*! ../../mixins/ssr-bootable */ 2146 | 2147 | /*! ../../directives/scroll */ 2148 | 2149 | /*! ../../util/console */ 2150 | 2151 | /*!*****************************************************!*\ 2152 | !*** ./src/components/VToolbar/VToolbarSideIcon.js ***! 2153 | \*****************************************************/ 2154 | 2155 | /*! exports provided: default */ 2156 | 2157 | /*! ../../components/VBtn */ 2158 | 2159 | /*! ../../components/VIcon */ 2160 | 2161 | /*!******************************************!*\ 2162 | !*** ./src/components/VToolbar/index.js ***! 2163 | \******************************************/ 2164 | 2165 | /*! exports provided: VToolbar, VToolbarSideIcon, VToolbarTitle, VToolbarItems, default */ 2166 | 2167 | /*! ../../util/helpers */ 2168 | 2169 | /*! ./VToolbar */ 2170 | 2171 | /*! ./VToolbarSideIcon */ 2172 | 2173 | /*!*********************************************!*\ 2174 | !*** ./src/components/VTooltip/VTooltip.js ***! 2175 | \*********************************************/ 2176 | 2177 | /*! exports provided: default */ 2178 | 2179 | /*! ../../stylus/components/_tooltips.styl */ 2180 | 2181 | /*! ../../mixins/colorable */ 2182 | 2183 | /*! ../../mixins/delayable */ 2184 | 2185 | /*! ../../mixins/dependent */ 2186 | 2187 | /*! ../../mixins/detachable */ 2188 | 2189 | /*! ../../mixins/menuable */ 2190 | 2191 | /*! ../../mixins/toggleable */ 2192 | 2193 | /*! ../../util/helpers */ 2194 | 2195 | /*!******************************************!*\ 2196 | !*** ./src/components/VTooltip/index.js ***! 2197 | \******************************************/ 2198 | 2199 | /*! exports provided: VTooltip, default */ 2200 | 2201 | /*! ./VTooltip */ 2202 | 2203 | /*!***********************************************!*\ 2204 | !*** ./src/components/VTreeview/VTreeview.ts ***! 2205 | \***********************************************/ 2206 | 2207 | /*! exports provided: default */ 2208 | 2209 | /*! ../../stylus/components/_treeview.styl */ 2210 | 2211 | /*! ./VTreeviewNode */ 2212 | 2213 | /*! ../../mixins/themeable */ 2214 | 2215 | /*! ../../mixins/registrable */ 2216 | 2217 | /*! ../../util/helpers */ 2218 | 2219 | /*! ../../util/mixins */ 2220 | 2221 | /*! ../../util/console */ 2222 | 2223 | /*!***************************************************!*\ 2224 | !*** ./src/components/VTreeview/VTreeviewNode.ts ***! 2225 | \***************************************************/ 2226 | 2227 | /*! exports provided: VTreeviewNodeProps, default */ 2228 | 2229 | /*! ../transitions */ 2230 | 2231 | /*! ../VIcon */ 2232 | 2233 | /*! ./VTreeviewNode */ 2234 | 2235 | /*! ../../mixins/registrable */ 2236 | 2237 | /*! ../../util/mixins */ 2238 | 2239 | /*! ../../util/helpers */ 2240 | 2241 | /*!*******************************************!*\ 2242 | !*** ./src/components/VTreeview/index.ts ***! 2243 | \*******************************************/ 2244 | 2245 | /*! exports provided: VTreeview, VTreeviewNode, default */ 2246 | 2247 | /*! ./VTreeview */ 2248 | 2249 | /*! ./VTreeviewNode */ 2250 | 2251 | /*!*******************************************!*\ 2252 | !*** ./src/components/VWindow/VWindow.ts ***! 2253 | \*******************************************/ 2254 | 2255 | /*! exports provided: default */ 2256 | 2257 | /*! ../../stylus/components/_windows.styl */ 2258 | 2259 | /*! ../VItemGroup/VItemGroup */ 2260 | 2261 | /*! ../../directives/touch */ 2262 | 2263 | /*!***********************************************!*\ 2264 | !*** ./src/components/VWindow/VWindowItem.ts ***! 2265 | \***********************************************/ 2266 | 2267 | /*! exports provided: default */ 2268 | 2269 | /*! ../../mixins/bootable */ 2270 | 2271 | /*! ../../mixins/groupable */ 2272 | 2273 | /*! ../../directives/touch */ 2274 | 2275 | /*! ../../util/helpers */ 2276 | 2277 | /*! ../../util/mixins */ 2278 | 2279 | /*!*****************************************!*\ 2280 | !*** ./src/components/VWindow/index.ts ***! 2281 | \*****************************************/ 2282 | 2283 | /*! exports provided: VWindow, VWindowItem, default */ 2284 | 2285 | /*! ./VWindow */ 2286 | 2287 | /*! ./VWindowItem */ 2288 | 2289 | /*!*****************************************!*\ 2290 | !*** ./src/components/Vuetify/index.ts ***! 2291 | \*****************************************/ 2292 | 2293 | /*! exports provided: checkVueVersion, default */ 2294 | 2295 | /*! vue */ 2296 | 2297 | /*! ./mixins/application */ 2298 | 2299 | /*! ./mixins/breakpoint */ 2300 | 2301 | /*! ./mixins/theme */ 2302 | 2303 | /*! ./mixins/icons */ 2304 | 2305 | /*! ./mixins/options */ 2306 | 2307 | /*! ./mixins/lang */ 2308 | 2309 | /*! ./util/goTo */ 2310 | 2311 | /*! ../../util/console */ 2312 | 2313 | /*!******************************************************!*\ 2314 | !*** ./src/components/Vuetify/mixins/application.ts ***! 2315 | \******************************************************/ 2316 | 2317 | /*! exports provided: default */ 2318 | 2319 | /*!*****************************************************!*\ 2320 | !*** ./src/components/Vuetify/mixins/breakpoint.ts ***! 2321 | \*****************************************************/ 2322 | 2323 | /*! exports provided: default */ 2324 | 2325 | /*! vue */ 2326 | 2327 | /*!************************************************!*\ 2328 | !*** ./src/components/Vuetify/mixins/icons.js ***! 2329 | \************************************************/ 2330 | 2331 | /*! exports provided: default */ 2332 | 2333 | /*!***********************************************!*\ 2334 | !*** ./src/components/Vuetify/mixins/lang.ts ***! 2335 | \***********************************************/ 2336 | 2337 | /*! exports provided: default */ 2338 | 2339 | /*! ../../../locale/en */ 2340 | 2341 | /*! ../../../util/helpers */ 2342 | 2343 | /*! ../../../util/console */ 2344 | 2345 | /*!**************************************************!*\ 2346 | !*** ./src/components/Vuetify/mixins/options.js ***! 2347 | \**************************************************/ 2348 | 2349 | /*! exports provided: default */ 2350 | 2351 | /*!************************************************!*\ 2352 | !*** ./src/components/Vuetify/mixins/theme.ts ***! 2353 | \************************************************/ 2354 | 2355 | /*! exports provided: default */ 2356 | 2357 | /*!*********************************************!*\ 2358 | !*** ./src/components/Vuetify/util/goTo.js ***! 2359 | \*********************************************/ 2360 | 2361 | /*! exports provided: default */ 2362 | 2363 | /*! ../../../util/easing-patterns */ 2364 | 2365 | /*!*********************************!*\ 2366 | !*** ./src/components/index.ts ***! 2367 | \*********************************/ 2368 | 2369 | /*! exports provided: VApp, VAlert, VAutocomplete, VAvatar, VBadge, VBottomNav, VBottomSheet, VBreadcrumbs, VBreadcrumbsItem, VBreadcrumbsDivider, VBtn, VBtnToggle, VCard, VCardMedia, VCardTitle, VCardActions, VCardText, VCarousel, VCarouselItem, VCheckbox, VChip, VCombobox, VCounter, VDataIterator, VDataTable, VEditDialog, VTableOverflow, VDatePicker, VDatePickerTitle, VDatePickerHeader, VDatePickerDateTable, VDatePickerMonthTable, VDatePickerYears, VDialog, VDivider, VExpansionPanel, VExpansionPanelContent, VFooter, VForm, VContainer, VContent, VFlex, VLayout, VSpacer, VHover, VIcon, VImg, VInput, VItem, VItemGroup, VJumbotron, VLabel, VList, VListGroup, VListTile, VListTileAction, VListTileAvatar, VListTileActionText, VListTileContent, VListTileTitle, VListTileSubTitle, VMenu, VMessages, VNavigationDrawer, VOverflowBtn, VPagination, VParallax, VPicker, VProgressCircular, VProgressLinear, VRadioGroup, VRadio, VRangeSlider, VRating, VResponsive, VSelect, VSlider, VSnackbar, VSpeedDial, VStepper, VStepperContent, VStepperStep, VStepperHeader, VStepperItems, VSubheader, VSwitch, VSystemBar, VTabs, VTab, VTabItem, VTabsItems, VTabsSlider, VTextarea, VTextField, VTimeline, VTimelineItem, VTimePicker, VTimePickerClock, VTimePickerTitle, VToolbar, VToolbarSideIcon, VToolbarTitle, VToolbarItems, VTooltip, VTreeview, VTreeviewNode, VWindow, VWindowItem, VBottomSheetTransition, VCarouselTransition, VCarouselReverseTransition, VTabTransition, VTabReverseTransition, VMenuTransition, VFabTransition, VDialogTransition, VDialogBottomTransition, VFadeTransition, VScaleTransition, VScrollXTransition, VScrollXReverseTransition, VScrollYTransition, VScrollYReverseTransition, VSlideXTransition, VSlideXReverseTransition, VSlideYTransition, VSlideYReverseTransition, VExpandTransition, VRowExpandTransition */ 2370 | 2371 | /*! ./VApp */ 2372 | 2373 | /*! ./VAlert */ 2374 | 2375 | /*! ./VAutocomplete */ 2376 | 2377 | /*! ./VAvatar */ 2378 | 2379 | /*! ./VBadge */ 2380 | 2381 | /*! ./VBottomNav */ 2382 | 2383 | /*! ./VBottomSheet */ 2384 | 2385 | /*! ./VBreadcrumbs */ 2386 | 2387 | /*! ./VBtn */ 2388 | 2389 | /*! ./VBtnToggle */ 2390 | 2391 | /*! ./VCard */ 2392 | 2393 | /*! ./VCarousel */ 2394 | 2395 | /*! ./VCheckbox */ 2396 | 2397 | /*! ./VChip */ 2398 | 2399 | /*! ./VCombobox */ 2400 | 2401 | /*! ./VCounter */ 2402 | 2403 | /*! ./VDataIterator */ 2404 | 2405 | /*! ./VDataTable */ 2406 | 2407 | /*! ./VDatePicker */ 2408 | 2409 | /*! ./VDialog */ 2410 | 2411 | /*! ./VDivider */ 2412 | 2413 | /*! ./VExpansionPanel */ 2414 | 2415 | /*! ./VFooter */ 2416 | 2417 | /*! ./VForm */ 2418 | 2419 | /*! ./VGrid */ 2420 | 2421 | /*! ./VHover */ 2422 | 2423 | /*! ./VIcon */ 2424 | 2425 | /*! ./VImg */ 2426 | 2427 | /*! ./VInput */ 2428 | 2429 | /*! ./VItemGroup */ 2430 | 2431 | /*! ./VJumbotron */ 2432 | 2433 | /*! ./VLabel */ 2434 | 2435 | /*! ./VList */ 2436 | 2437 | /*! ./VMenu */ 2438 | 2439 | /*! ./VMessages */ 2440 | 2441 | /*! ./VNavigationDrawer */ 2442 | 2443 | /*! ./VOverflowBtn */ 2444 | 2445 | /*! ./VPagination */ 2446 | 2447 | /*! ./VParallax */ 2448 | 2449 | /*! ./VPicker */ 2450 | 2451 | /*! ./VProgressCircular */ 2452 | 2453 | /*! ./VProgressLinear */ 2454 | 2455 | /*! ./VRadioGroup */ 2456 | 2457 | /*! ./VRangeSlider */ 2458 | 2459 | /*! ./VRating */ 2460 | 2461 | /*! ./VResponsive */ 2462 | 2463 | /*! ./VSelect */ 2464 | 2465 | /*! ./VSlider */ 2466 | 2467 | /*! ./VSnackbar */ 2468 | 2469 | /*! ./VSpeedDial */ 2470 | 2471 | /*! ./VStepper */ 2472 | 2473 | /*! ./VSubheader */ 2474 | 2475 | /*! ./VSwitch */ 2476 | 2477 | /*! ./VSystemBar */ 2478 | 2479 | /*! ./VTabs */ 2480 | 2481 | /*! ./VTextarea */ 2482 | 2483 | /*! ./VTextField */ 2484 | 2485 | /*! ./VTimeline */ 2486 | 2487 | /*! ./VTimePicker */ 2488 | 2489 | /*! ./VToolbar */ 2490 | 2491 | /*! ./VTooltip */ 2492 | 2493 | /*! ./VTreeview */ 2494 | 2495 | /*! ./VWindow */ 2496 | 2497 | /*! ./transitions */ 2498 | 2499 | /*!*********************************************************!*\ 2500 | !*** ./src/components/transitions/expand-transition.js ***! 2501 | \*********************************************************/ 2502 | 2503 | /*! exports provided: default */ 2504 | 2505 | /*! ../../util/helpers */ 2506 | 2507 | /*!*********************************************!*\ 2508 | !*** ./src/components/transitions/index.js ***! 2509 | \*********************************************/ 2510 | 2511 | /*! exports provided: VBottomSheetTransition, VCarouselTransition, VCarouselReverseTransition, VTabTransition, VTabReverseTransition, VMenuTransition, VFabTransition, VDialogTransition, VDialogBottomTransition, VFadeTransition, VScaleTransition, VScrollXTransition, VScrollXReverseTransition, VScrollYTransition, VScrollYReverseTransition, VSlideXTransition, VSlideXReverseTransition, VSlideYTransition, VSlideYReverseTransition, VExpandTransition, VRowExpandTransition, default */ 2512 | 2513 | /*! ../../util/helpers */ 2514 | 2515 | /*! ./expand-transition */ 2516 | 2517 | /*!*****************************************!*\ 2518 | !*** ./src/directives/click-outside.ts ***! 2519 | \*****************************************/ 2520 | 2521 | /*! exports provided: default */ 2522 | 2523 | /*!*********************************!*\ 2524 | !*** ./src/directives/index.ts ***! 2525 | \*********************************/ 2526 | 2527 | /*! exports provided: ClickOutside, Ripple, Resize, Scroll, Touch, default */ 2528 | 2529 | /*! ./click-outside */ 2530 | 2531 | /*! ./resize */ 2532 | 2533 | /*! ./ripple */ 2534 | 2535 | /*! ./scroll */ 2536 | 2537 | /*! ./touch */ 2538 | 2539 | /*!**********************************!*\ 2540 | !*** ./src/directives/resize.ts ***! 2541 | \**********************************/ 2542 | 2543 | /*! exports provided: default */ 2544 | 2545 | /*!**********************************!*\ 2546 | !*** ./src/directives/ripple.ts ***! 2547 | \**********************************/ 2548 | 2549 | /*! exports provided: default */ 2550 | 2551 | /*!**********************************!*\ 2552 | !*** ./src/directives/scroll.ts ***! 2553 | \**********************************/ 2554 | 2555 | /*! exports provided: default */ 2556 | 2557 | /*!*********************************!*\ 2558 | !*** ./src/directives/touch.ts ***! 2559 | \*********************************/ 2560 | 2561 | /*! exports provided: default */ 2562 | 2563 | /*! ../util/helpers */ 2564 | 2565 | /*!**********************!*\ 2566 | !*** ./src/index.ts ***! 2567 | \**********************/ 2568 | 2569 | /*! exports provided: default */ 2570 | 2571 | /*! ./stylus/app.styl */ 2572 | 2573 | /*! ./components/Vuetify */ 2574 | 2575 | /*! ./components */ 2576 | 2577 | /*! ./directives */ 2578 | 2579 | /*!**************************!*\ 2580 | !*** ./src/locale/en.ts ***! 2581 | \**************************/ 2582 | 2583 | /*! exports provided: default */ 2584 | 2585 | /*!***************************************!*\ 2586 | !*** ./src/mixins/applicationable.ts ***! 2587 | \***************************************/ 2588 | 2589 | /*! exports provided: default */ 2590 | 2591 | /*! ./positionable */ 2592 | 2593 | /*! ../util/mixins */ 2594 | 2595 | /*!********************************!*\ 2596 | !*** ./src/mixins/bootable.ts ***! 2597 | \********************************/ 2598 | 2599 | /*! exports provided: default */ 2600 | 2601 | /*! vue */ 2602 | 2603 | /*!************************************!*\ 2604 | !*** ./src/mixins/button-group.ts ***! 2605 | \************************************/ 2606 | 2607 | /*! exports provided: default */ 2608 | 2609 | /*! ../components/VItemGroup/VItemGroup */ 2610 | 2611 | /*!*********************************!*\ 2612 | !*** ./src/mixins/colorable.ts ***! 2613 | \*********************************/ 2614 | 2615 | /*! exports provided: default */ 2616 | 2617 | /*! vue */ 2618 | 2619 | /*!**********************************!*\ 2620 | !*** ./src/mixins/comparable.ts ***! 2621 | \**********************************/ 2622 | 2623 | /*! exports provided: default */ 2624 | 2625 | /*! vue */ 2626 | 2627 | /*! ../util/helpers */ 2628 | 2629 | /*!*************************************!*\ 2630 | !*** ./src/mixins/data-iterable.js ***! 2631 | \*************************************/ 2632 | 2633 | /*! exports provided: default */ 2634 | 2635 | /*! ../components/VBtn */ 2636 | 2637 | /*! ../components/VIcon */ 2638 | 2639 | /*! ../components/VSelect */ 2640 | 2641 | /*! ./filterable */ 2642 | 2643 | /*! ./themeable */ 2644 | 2645 | /*! ./loadable */ 2646 | 2647 | /*! ../util/helpers */ 2648 | 2649 | /*! ../util/console */ 2650 | 2651 | /*!*********************************!*\ 2652 | !*** ./src/mixins/delayable.ts ***! 2653 | \*********************************/ 2654 | 2655 | /*! exports provided: default */ 2656 | 2657 | /*! vue */ 2658 | 2659 | /*!*********************************!*\ 2660 | !*** ./src/mixins/dependent.ts ***! 2661 | \*********************************/ 2662 | 2663 | /*! exports provided: default */ 2664 | 2665 | /*! ../util/mixins */ 2666 | 2667 | /*!**********************************!*\ 2668 | !*** ./src/mixins/detachable.js ***! 2669 | \**********************************/ 2670 | 2671 | /*! exports provided: default */ 2672 | 2673 | /*! ./bootable */ 2674 | 2675 | /*! ../util/console */ 2676 | 2677 | /*!**********************************!*\ 2678 | !*** ./src/mixins/filterable.ts ***! 2679 | \**********************************/ 2680 | 2681 | /*! exports provided: default */ 2682 | 2683 | /*! vue */ 2684 | 2685 | /*!*********************************!*\ 2686 | !*** ./src/mixins/groupable.ts ***! 2687 | \*********************************/ 2688 | 2689 | /*! exports provided: factory, default */ 2690 | 2691 | /*! ./registrable */ 2692 | 2693 | /*!********************************!*\ 2694 | !*** ./src/mixins/loadable.ts ***! 2695 | \********************************/ 2696 | 2697 | /*! exports provided: default */ 2698 | 2699 | /*! vue */ 2700 | 2701 | /*! ../components/VProgressLinear */ 2702 | 2703 | /*!********************************!*\ 2704 | !*** ./src/mixins/maskable.js ***! 2705 | \********************************/ 2706 | 2707 | /*! exports provided: default */ 2708 | 2709 | /*! ../util/mask */ 2710 | 2711 | /*!**********************************!*\ 2712 | !*** ./src/mixins/measurable.ts ***! 2713 | \**********************************/ 2714 | 2715 | /*! exports provided: default */ 2716 | 2717 | /*! vue */ 2718 | 2719 | /*!********************************!*\ 2720 | !*** ./src/mixins/menuable.js ***! 2721 | \********************************/ 2722 | 2723 | /*! exports provided: default */ 2724 | 2725 | /*! vue */ 2726 | 2727 | /*! ./positionable */ 2728 | 2729 | /*! ./stackable */ 2730 | 2731 | /*!***********************************!*\ 2732 | !*** ./src/mixins/overlayable.js ***! 2733 | \***********************************/ 2734 | 2735 | /*! exports provided: default */ 2736 | 2737 | /*! ../stylus/components/_overlay.styl */ 2738 | 2739 | /*! ../util/helpers */ 2740 | 2741 | /*!*************************************!*\ 2742 | !*** ./src/mixins/picker-button.js ***! 2743 | \*************************************/ 2744 | 2745 | /*! exports provided: default */ 2746 | 2747 | /*!******************************!*\ 2748 | !*** ./src/mixins/picker.js ***! 2749 | \******************************/ 2750 | 2751 | /*! exports provided: default */ 2752 | 2753 | /*! ../components/VPicker */ 2754 | 2755 | /*! ./colorable */ 2756 | 2757 | /*! ./themeable */ 2758 | 2759 | /*!************************************!*\ 2760 | !*** ./src/mixins/positionable.ts ***! 2761 | \************************************/ 2762 | 2763 | /*! exports provided: factory, default */ 2764 | 2765 | /*! vue */ 2766 | 2767 | /*! ../util/helpers */ 2768 | 2769 | /*!*********************************!*\ 2770 | !*** ./src/mixins/proxyable.ts ***! 2771 | \*********************************/ 2772 | 2773 | /*! exports provided: factory, default */ 2774 | 2775 | /*! vue */ 2776 | 2777 | /*!***********************************!*\ 2778 | !*** ./src/mixins/registrable.ts ***! 2779 | \***********************************/ 2780 | 2781 | /*! exports provided: inject, provide */ 2782 | 2783 | /*! vue */ 2784 | 2785 | /*! ../util/console */ 2786 | 2787 | /*!**********************************!*\ 2788 | !*** ./src/mixins/returnable.ts ***! 2789 | \**********************************/ 2790 | 2791 | /*! exports provided: default */ 2792 | 2793 | /*! vue */ 2794 | 2795 | /*!**********************************!*\ 2796 | !*** ./src/mixins/rippleable.ts ***! 2797 | \**********************************/ 2798 | 2799 | /*! exports provided: default */ 2800 | 2801 | /*! ../directives/ripple */ 2802 | 2803 | /*! vue */ 2804 | 2805 | /*!********************************!*\ 2806 | !*** ./src/mixins/routable.ts ***! 2807 | \********************************/ 2808 | 2809 | /*! exports provided: default */ 2810 | 2811 | /*! vue */ 2812 | 2813 | /*! ../directives/ripple */ 2814 | 2815 | /*!**********************************!*\ 2816 | !*** ./src/mixins/selectable.js ***! 2817 | \**********************************/ 2818 | 2819 | /*! exports provided: default */ 2820 | 2821 | /*! ../components/VInput */ 2822 | 2823 | /*! ./rippleable */ 2824 | 2825 | /*! ./comparable */ 2826 | 2827 | /*!********************************!*\ 2828 | !*** ./src/mixins/sizeable.ts ***! 2829 | \********************************/ 2830 | 2831 | /*! exports provided: default */ 2832 | 2833 | /*! vue */ 2834 | 2835 | /*!************************************!*\ 2836 | !*** ./src/mixins/ssr-bootable.ts ***! 2837 | \************************************/ 2838 | 2839 | /*! exports provided: default */ 2840 | 2841 | /*! vue */ 2842 | 2843 | /*!*********************************!*\ 2844 | !*** ./src/mixins/stackable.js ***! 2845 | \*********************************/ 2846 | 2847 | /*! exports provided: default */ 2848 | 2849 | /*! ../util/helpers */ 2850 | 2851 | /*!*********************************!*\ 2852 | !*** ./src/mixins/themeable.ts ***! 2853 | \*********************************/ 2854 | 2855 | /*! exports provided: functionalThemeClasses, default */ 2856 | 2857 | /*! vue */ 2858 | 2859 | /*!**********************************!*\ 2860 | !*** ./src/mixins/toggleable.ts ***! 2861 | \**********************************/ 2862 | 2863 | /*! exports provided: factory, default */ 2864 | 2865 | /*! vue */ 2866 | 2867 | /*!**************************************!*\ 2868 | !*** ./src/mixins/transitionable.ts ***! 2869 | \**************************************/ 2870 | 2871 | /*! exports provided: default */ 2872 | 2873 | /*! vue */ 2874 | 2875 | /*!************************************!*\ 2876 | !*** ./src/mixins/translatable.ts ***! 2877 | \************************************/ 2878 | 2879 | /*! exports provided: default */ 2880 | 2881 | /*! vue */ 2882 | 2883 | /*!***********************************!*\ 2884 | !*** ./src/mixins/validatable.js ***! 2885 | \***********************************/ 2886 | 2887 | /*! exports provided: default */ 2888 | 2889 | /*! ../util/helpers */ 2890 | 2891 | /*! ./registrable */ 2892 | 2893 | /*! ../util/console */ 2894 | 2895 | /*! ./colorable */ 2896 | 2897 | /*!*****************************!*\ 2898 | !*** ./src/stylus/app.styl ***! 2899 | \*****************************/ 2900 | 2901 | /*! no static exports found */ 2902 | 2903 | /*!********************************************!*\ 2904 | !*** ./src/stylus/components/_alerts.styl ***! 2905 | \********************************************/ 2906 | 2907 | /*! no static exports found */ 2908 | 2909 | /*!*****************************************!*\ 2910 | !*** ./src/stylus/components/_app.styl ***! 2911 | \*****************************************/ 2912 | 2913 | /*! no static exports found */ 2914 | 2915 | /*!***************************************************!*\ 2916 | !*** ./src/stylus/components/_autocompletes.styl ***! 2917 | \***************************************************/ 2918 | 2919 | /*! no static exports found */ 2920 | 2921 | /*!*********************************************!*\ 2922 | !*** ./src/stylus/components/_avatars.styl ***! 2923 | \*********************************************/ 2924 | 2925 | /*! no static exports found */ 2926 | 2927 | /*!********************************************!*\ 2928 | !*** ./src/stylus/components/_badges.styl ***! 2929 | \********************************************/ 2930 | 2931 | /*! no static exports found */ 2932 | 2933 | /*!*************************************************!*\ 2934 | !*** ./src/stylus/components/_bottom-navs.styl ***! 2935 | \*************************************************/ 2936 | 2937 | /*! no static exports found */ 2938 | 2939 | /*!***************************************************!*\ 2940 | !*** ./src/stylus/components/_bottom-sheets.styl ***! 2941 | \***************************************************/ 2942 | 2943 | /*! no static exports found */ 2944 | 2945 | /*!*************************************************!*\ 2946 | !*** ./src/stylus/components/_breadcrumbs.styl ***! 2947 | \*************************************************/ 2948 | 2949 | /*! no static exports found */ 2950 | 2951 | /*!***************************************************!*\ 2952 | !*** ./src/stylus/components/_button-toggle.styl ***! 2953 | \***************************************************/ 2954 | 2955 | /*! no static exports found */ 2956 | 2957 | /*!*********************************************!*\ 2958 | !*** ./src/stylus/components/_buttons.styl ***! 2959 | \*********************************************/ 2960 | 2961 | /*! no static exports found */ 2962 | 2963 | /*!*******************************************!*\ 2964 | !*** ./src/stylus/components/_cards.styl ***! 2965 | \*******************************************/ 2966 | 2967 | /*! no static exports found */ 2968 | 2969 | /*!**********************************************!*\ 2970 | !*** ./src/stylus/components/_carousel.styl ***! 2971 | \**********************************************/ 2972 | 2973 | /*! no static exports found */ 2974 | 2975 | /*!*******************************************!*\ 2976 | !*** ./src/stylus/components/_chips.styl ***! 2977 | \*******************************************/ 2978 | 2979 | /*! no static exports found */ 2980 | 2981 | /*!*********************************************!*\ 2982 | !*** ./src/stylus/components/_content.styl ***! 2983 | \*********************************************/ 2984 | 2985 | /*! no static exports found */ 2986 | 2987 | /*!**********************************************!*\ 2988 | !*** ./src/stylus/components/_counters.styl ***! 2989 | \**********************************************/ 2990 | 2991 | /*! no static exports found */ 2992 | 2993 | /*!***************************************************!*\ 2994 | !*** ./src/stylus/components/_data-iterator.styl ***! 2995 | \***************************************************/ 2996 | 2997 | /*! no static exports found */ 2998 | 2999 | /*!************************************************!*\ 3000 | !*** ./src/stylus/components/_data-table.styl ***! 3001 | \************************************************/ 3002 | 3003 | /*! no static exports found */ 3004 | 3005 | /*!********************************************************!*\ 3006 | !*** ./src/stylus/components/_date-picker-header.styl ***! 3007 | \********************************************************/ 3008 | 3009 | /*! no static exports found */ 3010 | 3011 | /*!*******************************************************!*\ 3012 | !*** ./src/stylus/components/_date-picker-table.styl ***! 3013 | \*******************************************************/ 3014 | 3015 | /*! no static exports found */ 3016 | 3017 | /*!*******************************************************!*\ 3018 | !*** ./src/stylus/components/_date-picker-title.styl ***! 3019 | \*******************************************************/ 3020 | 3021 | /*! no static exports found */ 3022 | 3023 | /*!*******************************************************!*\ 3024 | !*** ./src/stylus/components/_date-picker-years.styl ***! 3025 | \*******************************************************/ 3026 | 3027 | /*! no static exports found */ 3028 | 3029 | /*!*********************************************!*\ 3030 | !*** ./src/stylus/components/_dialogs.styl ***! 3031 | \*********************************************/ 3032 | 3033 | /*! no static exports found */ 3034 | 3035 | /*!**********************************************!*\ 3036 | !*** ./src/stylus/components/_dividers.styl ***! 3037 | \**********************************************/ 3038 | 3039 | /*! no static exports found */ 3040 | 3041 | /*!*****************************************************!*\ 3042 | !*** ./src/stylus/components/_expansion-panel.styl ***! 3043 | \*****************************************************/ 3044 | 3045 | /*! no static exports found */ 3046 | 3047 | /*!********************************************!*\ 3048 | !*** ./src/stylus/components/_footer.styl ***! 3049 | \********************************************/ 3050 | 3051 | /*! no static exports found */ 3052 | 3053 | /*!*******************************************!*\ 3054 | !*** ./src/stylus/components/_forms.styl ***! 3055 | \*******************************************/ 3056 | 3057 | /*! no static exports found */ 3058 | 3059 | /*!******************************************!*\ 3060 | !*** ./src/stylus/components/_grid.styl ***! 3061 | \******************************************/ 3062 | 3063 | /*! no static exports found */ 3064 | 3065 | /*!*******************************************!*\ 3066 | !*** ./src/stylus/components/_icons.styl ***! 3067 | \*******************************************/ 3068 | 3069 | /*! no static exports found */ 3070 | 3071 | /*!********************************************!*\ 3072 | !*** ./src/stylus/components/_images.styl ***! 3073 | \********************************************/ 3074 | 3075 | /*! no static exports found */ 3076 | 3077 | /*!********************************************!*\ 3078 | !*** ./src/stylus/components/_inputs.styl ***! 3079 | \********************************************/ 3080 | 3081 | /*! no static exports found */ 3082 | 3083 | /*!************************************************!*\ 3084 | !*** ./src/stylus/components/_item-group.styl ***! 3085 | \************************************************/ 3086 | 3087 | /*! no static exports found */ 3088 | 3089 | /*!************************************************!*\ 3090 | !*** ./src/stylus/components/_jumbotrons.styl ***! 3091 | \************************************************/ 3092 | 3093 | /*! no static exports found */ 3094 | 3095 | /*!********************************************!*\ 3096 | !*** ./src/stylus/components/_labels.styl ***! 3097 | \********************************************/ 3098 | 3099 | /*! no static exports found */ 3100 | 3101 | /*!*******************************************!*\ 3102 | !*** ./src/stylus/components/_lists.styl ***! 3103 | \*******************************************/ 3104 | 3105 | /*! no static exports found */ 3106 | 3107 | /*!*******************************************!*\ 3108 | !*** ./src/stylus/components/_menus.styl ***! 3109 | \*******************************************/ 3110 | 3111 | /*! no static exports found */ 3112 | 3113 | /*!**********************************************!*\ 3114 | !*** ./src/stylus/components/_messages.styl ***! 3115 | \**********************************************/ 3116 | 3117 | /*! no static exports found */ 3118 | 3119 | /*!*******************************************************!*\ 3120 | !*** ./src/stylus/components/_navigation-drawer.styl ***! 3121 | \*******************************************************/ 3122 | 3123 | /*! no static exports found */ 3124 | 3125 | /*!******************************************************!*\ 3126 | !*** ./src/stylus/components/_overflow-buttons.styl ***! 3127 | \******************************************************/ 3128 | 3129 | /*! no static exports found */ 3130 | 3131 | /*!*********************************************!*\ 3132 | !*** ./src/stylus/components/_overlay.styl ***! 3133 | \*********************************************/ 3134 | 3135 | /*! no static exports found */ 3136 | 3137 | /*!************************************************!*\ 3138 | !*** ./src/stylus/components/_pagination.styl ***! 3139 | \************************************************/ 3140 | 3141 | /*! no static exports found */ 3142 | 3143 | /*!**********************************************!*\ 3144 | !*** ./src/stylus/components/_parallax.styl ***! 3145 | \**********************************************/ 3146 | 3147 | /*! no static exports found */ 3148 | 3149 | /*!*********************************************!*\ 3150 | !*** ./src/stylus/components/_pickers.styl ***! 3151 | \*********************************************/ 3152 | 3153 | /*! no static exports found */ 3154 | 3155 | /*!*******************************************************!*\ 3156 | !*** ./src/stylus/components/_progress-circular.styl ***! 3157 | \*******************************************************/ 3158 | 3159 | /*! no static exports found */ 3160 | 3161 | /*!*****************************************************!*\ 3162 | !*** ./src/stylus/components/_progress-linear.styl ***! 3163 | \*****************************************************/ 3164 | 3165 | /*! no static exports found */ 3166 | 3167 | /*!*************************************************!*\ 3168 | !*** ./src/stylus/components/_radio-group.styl ***! 3169 | \*************************************************/ 3170 | 3171 | /*! no static exports found */ 3172 | 3173 | /*!********************************************!*\ 3174 | !*** ./src/stylus/components/_radios.styl ***! 3175 | \********************************************/ 3176 | 3177 | /*! no static exports found */ 3178 | 3179 | /*!***************************************************!*\ 3180 | !*** ./src/stylus/components/_range-sliders.styl ***! 3181 | \***************************************************/ 3182 | 3183 | /*! no static exports found */ 3184 | 3185 | /*!********************************************!*\ 3186 | !*** ./src/stylus/components/_rating.styl ***! 3187 | \********************************************/ 3188 | 3189 | /*! no static exports found */ 3190 | 3191 | /*!************************************************!*\ 3192 | !*** ./src/stylus/components/_responsive.styl ***! 3193 | \************************************************/ 3194 | 3195 | /*! no static exports found */ 3196 | 3197 | /*!********************************************!*\ 3198 | !*** ./src/stylus/components/_select.styl ***! 3199 | \********************************************/ 3200 | 3201 | /*! no static exports found */ 3202 | 3203 | /*!********************************************************!*\ 3204 | !*** ./src/stylus/components/_selection-controls.styl ***! 3205 | \********************************************************/ 3206 | 3207 | /*! no static exports found */ 3208 | 3209 | /*!*********************************************!*\ 3210 | !*** ./src/stylus/components/_sliders.styl ***! 3211 | \*********************************************/ 3212 | 3213 | /*! no static exports found */ 3214 | 3215 | /*!**************************************************!*\ 3216 | !*** ./src/stylus/components/_small-dialog.styl ***! 3217 | \**************************************************/ 3218 | 3219 | /*! no static exports found */ 3220 | 3221 | /*!***********************************************!*\ 3222 | !*** ./src/stylus/components/_snackbars.styl ***! 3223 | \***********************************************/ 3224 | 3225 | /*! no static exports found */ 3226 | 3227 | /*!************************************************!*\ 3228 | !*** ./src/stylus/components/_speed-dial.styl ***! 3229 | \************************************************/ 3230 | 3231 | /*! no static exports found */ 3232 | 3233 | /*!**********************************************!*\ 3234 | !*** ./src/stylus/components/_steppers.styl ***! 3235 | \**********************************************/ 3236 | 3237 | /*! no static exports found */ 3238 | 3239 | /*!************************************************!*\ 3240 | !*** ./src/stylus/components/_subheaders.styl ***! 3241 | \************************************************/ 3242 | 3243 | /*! no static exports found */ 3244 | 3245 | /*!********************************************!*\ 3246 | !*** ./src/stylus/components/_switch.styl ***! 3247 | \********************************************/ 3248 | 3249 | /*! no static exports found */ 3250 | 3251 | /*!*************************************************!*\ 3252 | !*** ./src/stylus/components/_system-bars.styl ***! 3253 | \*************************************************/ 3254 | 3255 | /*! no static exports found */ 3256 | 3257 | /*!********************************************!*\ 3258 | !*** ./src/stylus/components/_tables.styl ***! 3259 | \********************************************/ 3260 | 3261 | /*! no static exports found */ 3262 | 3263 | /*!******************************************!*\ 3264 | !*** ./src/stylus/components/_tabs.styl ***! 3265 | \******************************************/ 3266 | 3267 | /*! no static exports found */ 3268 | 3269 | /*!*************************************************!*\ 3270 | !*** ./src/stylus/components/_text-fields.styl ***! 3271 | \*************************************************/ 3272 | 3273 | /*! no static exports found */ 3274 | 3275 | /*!**********************************************!*\ 3276 | !*** ./src/stylus/components/_textarea.styl ***! 3277 | \**********************************************/ 3278 | 3279 | /*! no static exports found */ 3280 | 3281 | /*!*******************************************************!*\ 3282 | !*** ./src/stylus/components/_time-picker-clock.styl ***! 3283 | \*******************************************************/ 3284 | 3285 | /*! no static exports found */ 3286 | 3287 | /*!*******************************************************!*\ 3288 | !*** ./src/stylus/components/_time-picker-title.styl ***! 3289 | \*******************************************************/ 3290 | 3291 | /*! no static exports found */ 3292 | 3293 | /*!**********************************************!*\ 3294 | !*** ./src/stylus/components/_timeline.styl ***! 3295 | \**********************************************/ 3296 | 3297 | /*! no static exports found */ 3298 | 3299 | /*!*********************************************!*\ 3300 | !*** ./src/stylus/components/_toolbar.styl ***! 3301 | \*********************************************/ 3302 | 3303 | /*! no static exports found */ 3304 | 3305 | /*!**********************************************!*\ 3306 | !*** ./src/stylus/components/_tooltips.styl ***! 3307 | \**********************************************/ 3308 | 3309 | /*! no static exports found */ 3310 | 3311 | /*!**********************************************!*\ 3312 | !*** ./src/stylus/components/_treeview.styl ***! 3313 | \**********************************************/ 3314 | 3315 | /*! no static exports found */ 3316 | 3317 | /*!*********************************************!*\ 3318 | !*** ./src/stylus/components/_windows.styl ***! 3319 | \*********************************************/ 3320 | 3321 | /*! no static exports found */ 3322 | 3323 | /*!***********************************!*\ 3324 | !*** ./src/util/ThemeProvider.ts ***! 3325 | \***********************************/ 3326 | 3327 | /*! exports provided: default */ 3328 | 3329 | /*! ../mixins/themeable */ 3330 | 3331 | /*! ./mixins */ 3332 | 3333 | /*!*******************************************!*\ 3334 | !*** ./src/util/color/transformCIELAB.ts ***! 3335 | \*******************************************/ 3336 | 3337 | /*! exports provided: fromXYZ, toXYZ */ 3338 | 3339 | /*!*****************************************!*\ 3340 | !*** ./src/util/color/transformSRGB.ts ***! 3341 | \*****************************************/ 3342 | 3343 | /*! exports provided: fromXYZ, toXYZ */ 3344 | 3345 | /*!********************************!*\ 3346 | !*** ./src/util/colorUtils.ts ***! 3347 | \********************************/ 3348 | 3349 | /*! exports provided: colorToInt, intToHex, colorToHex */ 3350 | 3351 | /*! ./console */ 3352 | 3353 | /*!*****************************!*\ 3354 | !*** ./src/util/console.ts ***! 3355 | \*****************************/ 3356 | 3357 | /*! exports provided: consoleInfo, consoleWarn, consoleError, deprecate */ 3358 | 3359 | /*!******************************************!*\ 3360 | !*** ./src/util/dedupeModelListeners.ts ***! 3361 | \******************************************/ 3362 | 3363 | /*! exports provided: default */ 3364 | 3365 | /*!*************************************!*\ 3366 | !*** ./src/util/easing-patterns.js ***! 3367 | \*************************************/ 3368 | 3369 | /*! exports provided: linear, easeInQuad, easeOutQuad, easeInOutQuad, easeInCubic, easeOutCubic, easeInOutCubic, easeInQuart, easeOutQuart, easeInOutQuart, easeInQuint, easeOutQuint, easeInOutQuint */ 3370 | 3371 | /*!*****************************!*\ 3372 | !*** ./src/util/helpers.ts ***! 3373 | \*****************************/ 3374 | 3375 | /*! exports provided: createSimpleFunctional, createSimpleTransition, createJavaScriptTransition, directiveConfig, addOnceEventListener, getNestedValue, deepEqual, getObjectValueByPath, getPropertyFromItem, createRange, getZIndex, escapeHTML, filterObjectOnKeys, filterChildren, convertToUnit, kebabCase, isObject, keyCodes, remapInternalIcon, keys, camelize */ 3376 | 3377 | /*!**************************!*\ 3378 | !*** ./src/util/mask.js ***! 3379 | \**************************/ 3380 | 3381 | /*! exports provided: defaultDelimiters, isMaskDelimiter, maskText, unmaskText */ 3382 | 3383 | /*!****************************!*\ 3384 | !*** ./src/util/mixins.ts ***! 3385 | \****************************/ 3386 | 3387 | /*! exports provided: default */ 3388 | 3389 | /*! vue */ 3390 | 3391 | /*!********************************************!*\ 3392 | !*** ./src/util/rebuildFunctionalSlots.js ***! 3393 | \********************************************/ 3394 | 3395 | /*! exports provided: default */ 3396 | 3397 | /*!***************************!*\ 3398 | !*** ./src/util/theme.ts ***! 3399 | \***************************/ 3400 | 3401 | /*! exports provided: parse, genStyles, genVariations */ 3402 | 3403 | /*! ./colorUtils */ 3404 | 3405 | /*! ./color/transformSRGB */ 3406 | 3407 | /*! ./color/transformCIELAB */ 3408 | 3409 | /*!******************************************************************************!*\ 3410 | !*** external {"commonjs":"vue","commonjs2":"vue","amd":"vue","root":"Vue"} ***! 3411 | \******************************************************************************/ 3412 | 3413 | /*! no static exports found */ 3414 | 3415 | /*! 3416 | * Vue Highlight.js v2.2.0 3417 | * (c) 2017 Saran Tanpituckpong 3418 | * Released under the MIT License 3419 | */ 3420 | -------------------------------------------------------------------------------- /priv/_nuxt/aa286e6addf1ed5229a8.js: -------------------------------------------------------------------------------- 1 | !function(e){function t(t){for(var n,i,a=t[0],c=t[1],f=t[2],p=0,s=[];p 2 | 3 | 4 | log_viewer 5 | 6 | 7 |
Loading...
8 | 9 | 10 | -------------------------------------------------------------------------------- /src/.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | 12 | [*.md] 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /src/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | env: { 4 | browser: true, 5 | node: true 6 | }, 7 | parserOptions: { 8 | parser: 'babel-eslint' 9 | }, 10 | extends: ['plugin:vue/recommended', 'plugin:prettier/recommended'], 11 | // required to lint *.vue files 12 | plugins: ['vue', 'prettier'], 13 | // add your custom rules here 14 | rules: { 15 | 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', 16 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off' 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/.gitignore: -------------------------------------------------------------------------------- 1 | # Created by .ignore support plugin (hsz.mobi) 2 | ### Node template 3 | # Logs 4 | logs 5 | *.log 6 | npm-debug.log* 7 | yarn-debug.log* 8 | yarn-error.log* 9 | 10 | # Runtime data 11 | pids 12 | *.pid 13 | *.seed 14 | *.pid.lock 15 | 16 | # Directory for instrumented libs generated by jscoverage/JSCover 17 | lib-cov 18 | 19 | # Coverage directory used by tools like istanbul 20 | coverage 21 | 22 | # nyc test coverage 23 | .nyc_output 24 | 25 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 26 | .grunt 27 | 28 | # Bower dependency directory (https://bower.io/) 29 | bower_components 30 | 31 | # node-waf configuration 32 | .lock-wscript 33 | 34 | # Compiled binary addons (https://nodejs.org/api/addons.html) 35 | build/Release 36 | 37 | # Dependency directories 38 | node_modules/ 39 | jspm_packages/ 40 | 41 | # TypeScript v1 declaration files 42 | typings/ 43 | 44 | # Optional npm cache directory 45 | .npm 46 | 47 | # Optional eslint cache 48 | .eslintcache 49 | 50 | # Optional REPL history 51 | .node_repl_history 52 | 53 | # Output of 'npm pack' 54 | *.tgz 55 | 56 | # Yarn Integrity file 57 | .yarn-integrity 58 | 59 | # dotenv environment variables file 60 | .env 61 | 62 | # parcel-bundler cache (https://parceljs.org/) 63 | .cache 64 | 65 | # next.js build output 66 | .next 67 | 68 | # nuxt.js build output 69 | .nuxt 70 | 71 | # Nuxt generate 72 | dist 73 | 74 | # vuepress build output 75 | .vuepress/dist 76 | 77 | # Serverless directories 78 | .serverless 79 | 80 | # IDE 81 | .idea 82 | -------------------------------------------------------------------------------- /src/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": false, 3 | "singleQuote": true 4 | } 5 | -------------------------------------------------------------------------------- /src/README.md: -------------------------------------------------------------------------------- 1 | # logger 2 | 3 | > My splendiferous Nuxt.js project 4 | 5 | ## Build Setup 6 | 7 | ``` bash 8 | # install dependencies 9 | $ yarn install 10 | 11 | # serve with hot reload at localhost:3000 12 | $ yarn run dev 13 | 14 | # build for production and launch server 15 | $ yarn run build 16 | $ yarn start 17 | 18 | # generate static project 19 | $ yarn run generate 20 | ``` 21 | 22 | For detailed explanation on how things work, checkout [Nuxt.js docs](https://nuxtjs.org). 23 | -------------------------------------------------------------------------------- /src/assets/README.md: -------------------------------------------------------------------------------- 1 | # ASSETS 2 | 3 | **This directory is not required, you can delete it if you don't want to use it.** 4 | 5 | This directory contains your un-compiled assets such as LESS, SASS, or JavaScript. 6 | 7 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/assets#webpacked). 8 | -------------------------------------------------------------------------------- /src/components/LogDetail.vue: -------------------------------------------------------------------------------- 1 | 43 | 44 | 62 | -------------------------------------------------------------------------------- /src/components/PieChart.js: -------------------------------------------------------------------------------- 1 | import { Pie, mixins } from 'vue-chartjs' 2 | const { reactiveProp } = mixins 3 | 4 | export default { 5 | extends: Pie, 6 | mixins: [reactiveProp], 7 | props: ['chartData', 'options'], 8 | mounted() { 9 | this.renderChart(this.chartData, this.options) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/layouts/default.vue: -------------------------------------------------------------------------------- 1 | 120 | 121 | 224 | 234 | -------------------------------------------------------------------------------- /src/middleware/websocket.js: -------------------------------------------------------------------------------- 1 | export class WebSocketClient { 2 | constructor(endpoint, context) { 3 | this.endpoint = endpoint 4 | this.context = context 5 | this.handlers = [] 6 | } 7 | 8 | init() { 9 | this.ws = new WebSocket(this.endpoint) 10 | this.setWebsocketHandlers() 11 | this.startHeartbeat() 12 | } 13 | 14 | setWebsocketHandlers() { 15 | this.ws.onopen = event => { 16 | this.clearHandlers() 17 | } 18 | 19 | this.ws.onclose = () => { 20 | this.ws.close() 21 | this.clearHandlers() 22 | let handle = setInterval(() => { 23 | this.ws = new WebSocket(this.endpoint) 24 | this.setWebsocketHandlers() 25 | }, 3000) 26 | this.handlers.push(handle) 27 | } 28 | 29 | this.ws.onmessage = event => { 30 | if (event.data != 'heartbeat') { 31 | this.context.store.dispatch('addLog', JSON.parse(event.data)) 32 | } 33 | } 34 | } 35 | 36 | clearHandlers() { 37 | this.handlers.forEach(element => { 38 | clearInterval(element) 39 | }) 40 | } 41 | 42 | startHeartbeat() { 43 | setInterval(() => { 44 | if (this.ws.readyState === this.ws.OPEN) { 45 | this.ws.send('heartbeat') 46 | } 47 | }, 10000) 48 | } 49 | 50 | startDebugLog() { 51 | setInterval(() => { 52 | const date = new Date() 53 | const levels = ['info', 'debug', 'warn', 'error'] 54 | const debugData = { 55 | ts: { 56 | year: date.getFullYear(), 57 | month: date.getMonth(), 58 | day: date.getDay(), 59 | hour: date.getHours(), 60 | minute: date.getMinutes(), 61 | second: date.getSeconds(), 62 | millisecond: date.getMilliseconds() 63 | }, 64 | id: this.uuid(), 65 | msg: 'debug', 66 | md: { 67 | level: levels[Math.floor(Math.random() * levels.length)] 68 | } 69 | } 70 | if (this.ws.readyState === this.ws.OPEN) { 71 | this.ws.send(JSON.stringify(debugData)) 72 | } 73 | }, 5000) 74 | } 75 | 76 | uuid() { 77 | return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { 78 | var r = (Math.random() * 16) | 0, 79 | v = c == 'x' ? r : (r & 0x3) | 0x8 80 | return v.toString(16) 81 | }) 82 | } 83 | } 84 | 85 | export default function(context) { 86 | const path = window.location.pathname.endsWith('/') 87 | ? window.location.pathname.slice(0, -1) 88 | : window.location.pathname 89 | const transportPath = '/websocket' 90 | const host = context.isDev ? 'localhost:5900' : window.location.host 91 | const endpoint = 'ws://' + host + path + transportPath 92 | const client = new WebSocketClient(endpoint, context) 93 | 94 | client.init() 95 | 96 | if (context.isDev) { 97 | client.startDebugLog() 98 | } 99 | } 100 | -------------------------------------------------------------------------------- /src/nuxt.config.js: -------------------------------------------------------------------------------- 1 | const pkg = require('./package') 2 | 3 | module.exports = { 4 | mode: 'spa', 5 | 6 | dev: process.env.NODE_ENV !== 'production', 7 | 8 | /* 9 | ** Headers of the page 10 | */ 11 | head: { 12 | title: pkg.name, 13 | meta: [ 14 | { charset: 'utf-8' }, 15 | { name: 'viewport', content: 'width=device-width, initial-scale=1' }, 16 | { hid: 'description', name: 'description', content: pkg.description } 17 | ], 18 | link: [{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }] 19 | }, 20 | 21 | /* 22 | ** Customize the progress-bar color 23 | */ 24 | loading: { color: '#fff' }, 25 | 26 | /* 27 | ** Global CSS 28 | */ 29 | css: [], 30 | 31 | /* 32 | ** Plugins to load before mounting the App 33 | */ 34 | plugins: ['~/plugins/vue-highlight'], 35 | 36 | /* 37 | ** Nuxt.js modules 38 | */ 39 | modules: ['@nuxtjs/vuetify'], 40 | /* 41 | ** Build configuration 42 | */ 43 | build: { 44 | /* 45 | ** You can extend webpack config here 46 | */ 47 | extend(config, ctx) { 48 | // Run ESLint on save 49 | if (ctx.isDev && ctx.isClient) { 50 | config.module.rules.push({ 51 | enforce: 'pre', 52 | test: /\.(js|vue)$/, 53 | loader: 'eslint-loader', 54 | exclude: /(node_modules)/ 55 | }) 56 | } 57 | } 58 | }, 59 | generate: { 60 | dir: '../priv', 61 | fallback: true 62 | }, 63 | router: { 64 | base: process.env.NODE_ENV === 'production' ? './' : undefined, 65 | extendRoutes(routes, resolve) { 66 | routes.push({ 67 | name: 'return_to_index', 68 | path: '/*', 69 | component: resolve(__dirname, 'pages/index.vue') 70 | }) 71 | } 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /src/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "log_viewer", 3 | "version": "1.0.0", 4 | "description": "An Web based elixir log viewer", 5 | "author": "shufo", 6 | "private": true, 7 | "scripts": { 8 | "dev": "cross-env NODE_ENV=development nuxt", 9 | "build": "cross-env NODE_ENV=production nuxt build", 10 | "start": "cross-env NODE_ENV=development nuxt start", 11 | "generate": "cross-env NODE_ENV=production nuxt generate", 12 | "lint": "eslint --ext .js,.vue --ignore-path .gitignore .", 13 | "precommit": "npm run lint" 14 | }, 15 | "dependencies": { 16 | "@nuxtjs/vuetify": "^0.4.3", 17 | "chart.js": "^2.7.3", 18 | "highlight.js": "^9.13.1", 19 | "nuxt": "^2.0.0", 20 | "vue-chartjs": "^3.4.0", 21 | "vue-highlight.js": "^2.2.0" 22 | }, 23 | "devDependencies": { 24 | "babel-eslint": "^8.2.1", 25 | "cross-env": "^5.2.0", 26 | "eslint": "^5.0.1", 27 | "eslint-config-prettier": "^3.1.0", 28 | "eslint-loader": "^2.0.0", 29 | "eslint-plugin-prettier": "2.6.2", 30 | "eslint-plugin-vue": "^4.0.0", 31 | "node-sass": "^4.10.0", 32 | "nodemon": "^1.11.0", 33 | "prettier": "1.14.3", 34 | "sass-loader": "^7.1.0" 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/pages/index.vue: -------------------------------------------------------------------------------- 1 | 106 | 107 | 190 | -------------------------------------------------------------------------------- /src/plugins/vue-highlight.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import VueHighlightJS from 'vue-highlight.js' 3 | 4 | /* 5 | * Use Vue Highlight.js 6 | */ 7 | Vue.use(VueHighlightJS) 8 | import 'highlight.js/styles/solarized-light.css' 9 | -------------------------------------------------------------------------------- /src/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shufo/log_viewer/90acac4f178160e411ffdfde30980f79cf51a6ec/src/static/favicon.ico -------------------------------------------------------------------------------- /src/store/actions.js: -------------------------------------------------------------------------------- 1 | export default { 2 | addLog({ commit }, log) { 3 | commit('ADD_LOG', log) 4 | }, 5 | changeSearchText({ commit }, text) { 6 | commit('CHANGE_SEARCH_TEXT', text) 7 | }, 8 | setLevelFilter({ commit }, level) { 9 | commit('SET_LEVEL_FILTER', level) 10 | }, 11 | changeMaxLogs({ commit }, maxLogs) { 12 | commit('CHANGE_MAX_LOGS', maxLogs) 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/store/getters.js: -------------------------------------------------------------------------------- 1 | export default { 2 | searchText(state) { 3 | return state.searchText 4 | }, 5 | filterLevel(state) { 6 | return state.filterLevel 7 | }, 8 | logs(state) { 9 | return state.logs 10 | }, 11 | filteredLogs(state) { 12 | return state.logs.filter(function(log) { 13 | if (state.filterLevel == 'all') { 14 | return log.msg.toLowerCase().includes(state.searchText.toLowerCase()) 15 | } 16 | 17 | return ( 18 | log.msg.toLowerCase().includes(state.searchText.toLowerCase()) && 19 | log.md.level == state.filterLevel 20 | ) 21 | }) 22 | }, 23 | logsWithId(state) { 24 | return state.logs.reduce((acc, log) => { 25 | acc[log.id] = log 26 | return acc 27 | }, {}) 28 | }, 29 | logCount(state) { 30 | return state.logs.length 31 | }, 32 | infoLogs(state) { 33 | return state.logs.filter((log, index) => log.md.level == 'info') 34 | }, 35 | infoLogsCount(state, getters) { 36 | return getters.infoLogs.length 37 | }, 38 | debugLogs(state) { 39 | return state.logs.filter((log, index) => log.md.level == 'debug') 40 | }, 41 | debugLogsCount(state, getters) { 42 | return getters.debugLogs.length 43 | }, 44 | warnLogs(state) { 45 | return state.logs.filter(log => log.md.level == 'warn') 46 | }, 47 | warnLogsCount(state, getters) { 48 | return getters.warnLogs.length 49 | }, 50 | errorLogs(state) { 51 | return state.logs.filter(log => log.md.level == 'error') 52 | }, 53 | errorLogsCount(state, getters) { 54 | return getters.errorLogs.length 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /src/store/mutations.js: -------------------------------------------------------------------------------- 1 | export default { 2 | ADD_LOG(state, log) { 3 | state.logs.unshift(log) 4 | state.logs.splice(state.maxLogs) 5 | }, 6 | CHANGE_SEARCH_TEXT(state, text) { 7 | state.searchText = text 8 | }, 9 | SET_LEVEL_FILTER(state, level) { 10 | state.filterLevel = level 11 | }, 12 | CHANGE_MAX_LOGS(state, maxLogs) { 13 | state.maxLogs = maxLogs 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/store/state.js: -------------------------------------------------------------------------------- 1 | export default () => ({ 2 | logs: [], 3 | searchText: '', 4 | filterLevel: 'all', 5 | maxLogs: 100 6 | }) 7 | -------------------------------------------------------------------------------- /test/browser/boot.test.js: -------------------------------------------------------------------------------- 1 | beforeAll(async () => { 2 | await page.goto("http://localhost:5900/", { waitUntil: "domcontentloaded" }); 3 | }); 4 | 5 | afterAll(async done => { 6 | done(); 7 | }); 8 | 9 | it("should get info logs", async () => { 10 | await page.waitForSelector("#app_message_key", { visible: true, timeout: 30000 }); 11 | const log = await page.evaluate( 12 | () => document.querySelector("#app_message_key").textContent 13 | ); 14 | expect(log).toBe("test_log"); 15 | }); 16 | -------------------------------------------------------------------------------- /test/log_viewer_test.exs: -------------------------------------------------------------------------------- 1 | defmodule LogViewerTest do 2 | use ExUnit.Case 3 | doctest LogViewer 4 | 5 | test "greets the world" do 6 | assert LogViewer.hello() == :world 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /test/test_helper.exs: -------------------------------------------------------------------------------- 1 | ExUnit.start() 2 | --------------------------------------------------------------------------------