├── .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 | 
2 | [](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 | 
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 | 
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 | 
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 | 
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 |
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 |
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 |
2 |
3 |
4 |
5 |
6 | {{ message.msg }}
7 |
8 |
9 |
10 |
13 | {{ show ? 'keyboard_arrow_up' : 'keyboard_arrow_down' }}
14 | metadata
15 |
16 |
17 |
18 |
19 |
20 |
26 |
29 |
30 | {{ props.item.key }}
31 | |
32 |
33 |
34 | {{ props.item.value }}
35 |
36 | |
37 |
38 |
39 |
40 |
41 |
42 |
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 |
2 |
3 |
8 |
9 |
14 |
15 |
22 |
23 |
24 |
25 | {{ draw.text }}
26 |
27 |
28 |
29 |
32 |
33 |
46 |
47 |
48 |
49 |
50 | build
51 |
52 |
53 |
62 |
63 |
64 |
65 |
66 |
71 |
72 |
82 |
83 |
84 |
87 |
88 |
89 |
90 |
95 |
100 |
108 | powered by
109 |
110 | Log Viewer
114 |
115 |
116 |
117 |
118 |
119 |
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 |
2 |
5 |
10 |
11 |
12 |
16 |
21 |
29 |
33 |
37 |
41 |
42 |
43 |
44 |
49 |
52 |
53 |
54 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
77 | arrow_downward
78 |
79 |
80 |
81 |
92 | arrow_upward
93 |
94 |
95 |
97 | Waiting for logs matching the conditions to coming in...
98 |
101 |
102 |
103 |
104 |
105 |
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 |
--------------------------------------------------------------------------------