lookbook 0.3.1 → 0.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/controllers/lookbook/app_controller.rb +3 -3
- data/app/views/lookbook/app/index.html.erb +2 -2
- data/app/views/lookbook/app/show.html.erb +1 -1
- data/app/views/lookbook/layouts/app.html.erb +3 -3
- data/app/views/lookbook/nav/_collection.html.erb +4 -4
- data/app/views/lookbook/nav/_node.html.erb +2 -2
- data/app/views/lookbook/nav/_preview.html.erb +4 -4
- data/app/views/lookbook/shared/_header.html.erb +1 -1
- data/app/views/lookbook/{_sidebar.html.erb → shared/_sidebar.html.erb} +3 -3
- data/app/views/lookbook/{_workbench.html.erb → shared/_workbench.html.erb} +5 -5
- data/app/views/lookbook/workbench/_header.html.erb +2 -2
- data/app/views/lookbook/workbench/_inspector.html.erb +3 -3
- data/lib/lookbook/collection.rb +3 -3
- data/lib/lookbook/engine.rb +14 -4
- data/lib/lookbook/null_logger.rb +47 -0
- data/lib/lookbook/parser.rb +1 -1
- data/lib/lookbook/preview.rb +1 -3
- data/lib/lookbook/taggable.rb +5 -3
- data/lib/lookbook/version.rb +1 -1
- data/lib/lookbook.rb +1 -0
- data/lib/tasks/lookbook_tasks.rake +1 -1
- data/public/lookbook-assets/app.css +102 -87
- data/public/lookbook-assets/app.js +329 -212
- metadata +5 -5
- data/lib/lookbook/navigation.rb +0 -68
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9d2f6afc23ec83a6ed2c19314540d26f83406da564385337fe29f9769253a432
|
4
|
+
data.tar.gz: bc239282a1bbbca50a72da683e270efafd60f515cf59a9b56ffc98b73f5e53a6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '08d4cf77cc06512be08c1f1baf567b55ac4e8d0328281896ddb2dd7381051b9ed538e8c2333a4437629cfc3e7852f5398672d013a271cacfae4dad0bc8769d97'
|
7
|
+
data.tar.gz: b748d37275d69d82522b7e7746d31ed54d296dac939c5610d3559834207fc0488d682ee86b161c42418af71a80eaee79ec10f16cd276b4d510a87e3446379253
|
@@ -50,7 +50,7 @@ module Lookbook
|
|
50
50
|
def find_preview
|
51
51
|
candidates = []
|
52
52
|
params[:path].to_s.scan(%r{/|$}) { candidates << $` }
|
53
|
-
match = candidates.detect { |candidate| Lookbook::Preview.exists?(candidate) }
|
53
|
+
match = candidates.reverse.detect { |candidate| Lookbook::Preview.exists?(candidate) }
|
54
54
|
@preview = match ? Lookbook::Preview.find(match) : nil
|
55
55
|
end
|
56
56
|
|
@@ -95,7 +95,7 @@ module Lookbook
|
|
95
95
|
html: preview_controller.render_example_to_string(@preview, example.name)
|
96
96
|
}
|
97
97
|
end
|
98
|
-
joined = render_to_string "
|
98
|
+
joined = render_to_string "lookbook/preview_group", locals: {examples: examples}, layout: nil
|
99
99
|
preview_controller.render_in_layout_to_string(joined, @preview.lookbook_layout)
|
100
100
|
else
|
101
101
|
preview_controller.request.params[:path] = "#{@preview.preview_name}/#{@example.name}".chomp("/")
|
@@ -152,7 +152,7 @@ module Lookbook
|
|
152
152
|
end
|
153
153
|
|
154
154
|
def previews
|
155
|
-
Lookbook::Preview.all
|
155
|
+
Lookbook::Preview.all.sort_by(&:label)
|
156
156
|
end
|
157
157
|
|
158
158
|
def preview_controller
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<div class="flex flex-col h-full min-h-fill w-full">
|
2
|
-
<%= render "
|
2
|
+
<%= render "shared/header" %>
|
3
3
|
<div class="flex flex-col items-center justify-center h-full min-h-fill">
|
4
4
|
<div class="p-4 text-center">
|
5
5
|
<svg class="feather w-10 h-10 text-gray-300 mx-auto">
|
@@ -8,4 +8,4 @@
|
|
8
8
|
<h5 class="mt-4 text-gray-400 text-base">Select a preview to get started</h5>
|
9
9
|
</div>
|
10
10
|
</div>
|
11
|
-
</div>
|
11
|
+
</div>
|
@@ -1 +1 @@
|
|
1
|
-
<%= render "
|
1
|
+
<%= render "shared/workbench" %>
|
@@ -10,7 +10,7 @@
|
|
10
10
|
|
11
11
|
<% if config.auto_refresh %>
|
12
12
|
<script>
|
13
|
-
window.SOCKET_PATH = "
|
13
|
+
window.SOCKET_PATH = "<%= Lookbook::Engine.websocket_mount_path %>";
|
14
14
|
</script>
|
15
15
|
<% end %>
|
16
16
|
<script src="/lookbook-assets/app.js" defer></script>
|
@@ -21,14 +21,14 @@
|
|
21
21
|
<div
|
22
22
|
x-data="page"
|
23
23
|
x-effect="updateTitle"
|
24
|
-
@refresh.document="fetchHTML().then(doc => $dispatch('document:updated', {doc}))"
|
24
|
+
@refresh.document="fetchHTML().then(doc => $dispatch('document:updated', {doc}))"
|
25
25
|
@popstate.window="fetchHTML().then(doc => { $dispatch('document:loaded', {doc}); sidebarOpenMobile = false})"
|
26
26
|
@sidebar:toggle.window="sidebarOpenMobile = !sidebarOpenMobile"
|
27
27
|
:style="`grid-template-columns: ${$store.nav.width}px 1px 1fr;`"
|
28
28
|
class="md:grid w-screen h-screen"
|
29
29
|
>
|
30
30
|
<div class="h-full bg-gray-100 overflow-hidden" x-show="$screen('md') || sidebarOpenMobile" x-cloak>
|
31
|
-
<%= render "
|
31
|
+
<%= render "shared/sidebar" %>
|
32
32
|
</div>
|
33
33
|
<div x-data="split(splitProps)" class="h-full gutter border-r border-gray-300 relative" x-show="$screen('md')" x-cloak>
|
34
34
|
<div class="w-[9px] h-full bg-transparent hover:bg-indigo-100 hover:bg-opacity-20 transition absolute top-0 bottom-0 transform -translate-x-1/2 cursor-[col-resize] z-10"></div>
|
@@ -1,5 +1,5 @@
|
|
1
|
-
<%= render "
|
1
|
+
<%= render "nav/node", node: node do %>
|
2
2
|
<% node.items.each do |item| %>
|
3
|
-
<%= render "
|
4
|
-
<% end %>
|
5
|
-
<% end %>
|
3
|
+
<%= render "nav/#{item.type.to_s}", node: item %>
|
4
|
+
<% end %>
|
5
|
+
<% end %>
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<li id="<%= node.id %>" x-data="navNode" <% if node.hierarchy_depth == 1 %> class="py-1 border-b border-gray-300 cursor-pointer"<% end %> :class="{hidden}" x-cloak>
|
2
|
-
<div @click="toggle
|
2
|
+
<div @click="toggle" style="<%= nav_padding_style(node.hierarchy_depth) %>" class="hover:bg-gray-200 hover:bg-opacity-50">
|
3
3
|
<div class="flex items-center cursor-pointer pr-3 py-[5px]">
|
4
4
|
<svg class="feather w-3 h-3 mr-1 text-gray-500 flex-none">
|
5
5
|
<use xlink:href="/lookbook-assets/feather-sprite.svg#chevron-down" x-show="open" x-cloak />
|
@@ -8,7 +8,7 @@
|
|
8
8
|
<svg class="feather h-3.5 w-3.5 mr-1.5 flex-none text-indigo-500">
|
9
9
|
<use xlink:href="/lookbook-assets/feather-sprite.svg#<%= node.type == :preview ? 'layers' : 'folder' %>" />
|
10
10
|
</svg>
|
11
|
-
<div class="truncate whitespace-nowrap text-left <%= "font-bold" if node.type == :preview %>">
|
11
|
+
<div class="truncate w-full whitespace-nowrap text-left <%= "font-bold" if node.type == :preview %>" @click.stop="toggle(); if (open()) { <%= "navigate('#{path}')" if defined?(path) %>}">
|
12
12
|
<%= node.label %>
|
13
13
|
</div>
|
14
14
|
</div>
|
@@ -1,11 +1,11 @@
|
|
1
1
|
<% examples = node.get_examples %>
|
2
2
|
<% if examples.many? %>
|
3
|
-
<%= render "
|
3
|
+
<%= render "nav/node", node: node, path: show_path(examples.first.path) do %>
|
4
4
|
<% examples.each do |example| %>
|
5
|
-
<%= render "
|
5
|
+
<%= render "nav/leaf", leaf: example, depth: example.hierarchy_depth + 1 %>
|
6
6
|
<% end %>
|
7
7
|
<% end %>
|
8
8
|
<% else %>
|
9
9
|
<% example = examples.first %>
|
10
|
-
<%= render "
|
11
|
-
<% end %>
|
10
|
+
<%= render "nav/leaf", leaf: example, depth: example.hierarchy_depth, label: node.label, display: :node %>
|
11
|
+
<% end %>
|
@@ -27,7 +27,7 @@
|
|
27
27
|
<% if @nav.items.any? %>
|
28
28
|
<ul x-ref="items">
|
29
29
|
<% @nav.items.each do |item| %>
|
30
|
-
<%= render "
|
30
|
+
<%= render "nav/#{item.type.to_s}", node: item %>
|
31
31
|
<% end %>
|
32
32
|
</ul>
|
33
33
|
<div class="p-4 text-center" x-show="hidden" x-cloak>
|
@@ -41,5 +41,5 @@
|
|
41
41
|
<% end %>
|
42
42
|
</nav>
|
43
43
|
</div>
|
44
|
-
</div>
|
45
|
-
</div>
|
44
|
+
</div>
|
45
|
+
</div>
|
@@ -1,12 +1,12 @@
|
|
1
1
|
<div id="workbench" class="bg-gray-50 h-screen flex flex-col" x-data="workbench">
|
2
|
-
<%= render "
|
2
|
+
<%= render "workbench/header" %>
|
3
3
|
<div class="md:grid flex-grow" :style="`grid-template-rows: 1fr 1px ${$store.inspector.height}px`">
|
4
|
-
<%= render "
|
4
|
+
<%= render "workbench/preview" %>
|
5
5
|
<div class="w-full gutter border-t border-gray-300 relative" x-data="split(splitProps)" x-show="$screen('md')">
|
6
6
|
<div class="h-[11px] w-full bg-transparent hover:bg-indigo-100 hover:bg-opacity-20 transition absolute left-0 right-0 transform -translate-y-1/2 cursor-[row-resize]"></div>
|
7
7
|
</div>
|
8
8
|
<% if @inspector %>
|
9
|
-
<%= render "
|
9
|
+
<%= render "workbench/inspector", **@inspector %>
|
10
10
|
<% end %>
|
11
|
-
</div>
|
12
|
-
</div>
|
11
|
+
</div>
|
12
|
+
</div>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<%= render "
|
1
|
+
<%= render "shared/header" do %>
|
2
2
|
<div class="flex items-center">
|
3
3
|
<div class="flex items-center space-x-1">
|
4
4
|
<strong class="whitespace-nowrap truncate"><%= @preview.label %></strong>
|
@@ -36,4 +36,4 @@
|
|
36
36
|
</svg>
|
37
37
|
</a>
|
38
38
|
</div>
|
39
|
-
<% end %>
|
39
|
+
<% end %>
|
@@ -21,12 +21,12 @@
|
|
21
21
|
<% panes.each do |key, props| %>
|
22
22
|
<div class="flex flex-col h-full relative" x-show="active('<%= key %>')" x-cloak>
|
23
23
|
<% if props[:clipboard].present? %>
|
24
|
-
<%= render "
|
24
|
+
<%= render "shared/clipboard" do %><%= h props[:clipboard].strip %><% end %>
|
25
25
|
<% end %>
|
26
26
|
<div class="flex flex-col h-full overflow-auto">
|
27
|
-
<%= render "
|
27
|
+
<%= render "workbench/inspector/#{props[:template]}", key: key, **props %>
|
28
28
|
</div>
|
29
29
|
</div>
|
30
30
|
<% end %>
|
31
31
|
</div>
|
32
|
-
</div>
|
32
|
+
</div>
|
data/lib/lookbook/collection.rb
CHANGED
@@ -12,11 +12,11 @@ module Lookbook
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def name
|
15
|
-
@path ? @path.split("/").last : "root"
|
15
|
+
@path.present? ? @path.split("/").last : "root"
|
16
16
|
end
|
17
17
|
|
18
18
|
def label
|
19
|
-
name
|
19
|
+
name&.titleize
|
20
20
|
end
|
21
21
|
|
22
22
|
def hierarchy_depth
|
@@ -24,7 +24,7 @@ module Lookbook
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def items(sorted = true)
|
27
|
-
sorted ? @items.sort_by(&:
|
27
|
+
sorted ? @items.sort_by(&:label) : @items
|
28
28
|
end
|
29
29
|
|
30
30
|
def add(item)
|
data/lib/lookbook/engine.rb
CHANGED
@@ -23,6 +23,7 @@ module Lookbook
|
|
23
23
|
|
24
24
|
options.auto_refresh = true if options.auto_refresh.nil?
|
25
25
|
options.sort_examples = false if options.sort_examples.nil?
|
26
|
+
options.debug = false unless options.debug == true
|
26
27
|
|
27
28
|
options.preview_paths = options.preview_paths.map(&:to_s)
|
28
29
|
options.preview_paths += vc_options.preview_paths
|
@@ -43,10 +44,6 @@ module Lookbook
|
|
43
44
|
end
|
44
45
|
end
|
45
46
|
|
46
|
-
initializer "lookbook.cable.logger" do
|
47
|
-
Lookbook::Engine.cable.logger ||= Rails.logger
|
48
|
-
end
|
49
|
-
|
50
47
|
initializer "lookbook.parser.tags" do
|
51
48
|
Lookbook::Parser.define_tags
|
52
49
|
end
|
@@ -58,6 +55,15 @@ module Lookbook
|
|
58
55
|
)
|
59
56
|
end
|
60
57
|
|
58
|
+
initializer "lookbook.logging" do
|
59
|
+
if config.lookbook.debug == true
|
60
|
+
Lookbook::Engine.cable.logger ||= Rails.logger
|
61
|
+
else
|
62
|
+
Lookbook::Engine.cable.logger = Lookbook::NullLogger.new
|
63
|
+
config.action_view.logger = Lookbook::NullLogger.new
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
61
67
|
initializer "lookbook.preview.extend" do
|
62
68
|
ActiveSupport.on_load(:view_component) do
|
63
69
|
ViewComponent::Preview.extend Lookbook::Preview
|
@@ -93,6 +99,10 @@ module Lookbook
|
|
93
99
|
end
|
94
100
|
end
|
95
101
|
|
102
|
+
def websocket_mount_path
|
103
|
+
"#{Lookbook::Engine.routes.find_script_name({})}#{cable.mount_path}"
|
104
|
+
end
|
105
|
+
|
96
106
|
def cable
|
97
107
|
@cable ||= ActionCable::Server::Configuration.new
|
98
108
|
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Lookbook
|
2
|
+
class NullLogger
|
3
|
+
def unknown(*)
|
4
|
+
nil
|
5
|
+
end
|
6
|
+
|
7
|
+
def fatal(*)
|
8
|
+
nil
|
9
|
+
end
|
10
|
+
|
11
|
+
def fatal?
|
12
|
+
false
|
13
|
+
end
|
14
|
+
|
15
|
+
def error(*)
|
16
|
+
nil
|
17
|
+
end
|
18
|
+
|
19
|
+
def error?
|
20
|
+
false
|
21
|
+
end
|
22
|
+
|
23
|
+
def warn(*)
|
24
|
+
nil
|
25
|
+
end
|
26
|
+
|
27
|
+
def warn?
|
28
|
+
false
|
29
|
+
end
|
30
|
+
|
31
|
+
def info(*)
|
32
|
+
nil
|
33
|
+
end
|
34
|
+
|
35
|
+
def info?
|
36
|
+
false
|
37
|
+
end
|
38
|
+
|
39
|
+
def debug(*)
|
40
|
+
nil
|
41
|
+
end
|
42
|
+
|
43
|
+
def debug?
|
44
|
+
false
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
data/lib/lookbook/parser.rb
CHANGED
data/lib/lookbook/preview.rb
CHANGED
@@ -80,7 +80,7 @@ module Lookbook
|
|
80
80
|
|
81
81
|
class << self
|
82
82
|
def all
|
83
|
-
ViewComponent::Preview.all
|
83
|
+
ViewComponent::Preview.all.sort_by(&:label)
|
84
84
|
end
|
85
85
|
|
86
86
|
def find(path)
|
@@ -90,8 +90,6 @@ module Lookbook
|
|
90
90
|
def exists?(path)
|
91
91
|
!!find(path)
|
92
92
|
end
|
93
|
-
|
94
|
-
|
95
93
|
end
|
96
94
|
|
97
95
|
private
|
data/lib/lookbook/taggable.rb
CHANGED
@@ -1,17 +1,19 @@
|
|
1
1
|
module Lookbook
|
2
2
|
module Taggable
|
3
3
|
def lookbook_hidden?
|
4
|
-
if code_object
|
4
|
+
if code_object&.tag(:hidden)
|
5
5
|
code_object.tag(:hidden).text.strip != "false"
|
6
6
|
end
|
7
7
|
end
|
8
8
|
|
9
9
|
def lookbook_label
|
10
|
-
code_object
|
10
|
+
code_object&.tag(:label)&.text
|
11
11
|
end
|
12
12
|
|
13
13
|
def lookbook_notes
|
14
|
-
code_object
|
14
|
+
if code_object&.docstring
|
15
|
+
code_object.docstring.to_s.strip
|
16
|
+
end
|
15
17
|
end
|
16
18
|
|
17
19
|
def lookbook_group
|
data/lib/lookbook/version.rb
CHANGED
data/lib/lookbook.rb
CHANGED
@@ -6,7 +6,7 @@ namespace :lookbook do
|
|
6
6
|
task :bump_version, [:version] do |t, args|
|
7
7
|
filename = Lookbook::Engine.root.join("lib/lookbook/version.rb")
|
8
8
|
current_version = Lookbook::VERSION.to_s
|
9
|
-
new_version = args[:version].sub("v", "").
|
9
|
+
new_version = args[:version].sub("v", "").tr("-", ".")
|
10
10
|
file = File.open(filename)
|
11
11
|
contents = file.read
|
12
12
|
File.write(filename, contents.gsub(current_version, new_version))
|