lookbook 0.3.1 → 0.3.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e1f01b55ea75634f7e4cf2f7fe438ce6b56042daa5d7f178e50d0db7c267a644
4
- data.tar.gz: 81fddb93ab9aed2d51a59ecd00deced19c97a395ced5de3223db0d229f3a57dd
3
+ metadata.gz: 9d2f6afc23ec83a6ed2c19314540d26f83406da564385337fe29f9769253a432
4
+ data.tar.gz: bc239282a1bbbca50a72da683e270efafd60f515cf59a9b56ffc98b73f5e53a6
5
5
  SHA512:
6
- metadata.gz: 535340241df2352ba1c0fa5983f178cdb76d5fc39f0b4c9bcc8c34e4dc782177a4110f85a47ac6632064ac52b064f6936fe9cb764d5a5f2a8b527c9a80342bff
7
- data.tar.gz: 1d580f19491db04693d6e31941c198c4b1416665836d90436e84ddf4dadad7e325612be88c959fd2fff1900c061e2e54e2b8cbf82cda5ce947addcdba7bd251d
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 "./preview_group", locals: {examples: examples}, layout: nil
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 "./shared/header" %>
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 "./workbench" %>
1
+ <%= render "shared/workbench" %>
@@ -10,7 +10,7 @@
10
10
 
11
11
  <% if config.auto_refresh %>
12
12
  <script>
13
- window.SOCKET_PATH = "/lookbook/cable";
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 "./sidebar" %>
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 "./nav/node", node: node do %>
1
+ <%= render "nav/node", node: node do %>
2
2
  <% node.items.each do |item| %>
3
- <%= render "./nav/#{item.type.to_s}", node: item %>
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(); if (open()) { <%= "navigate('#{path}')" if defined?(path) %>}" style="<%= nav_padding_style(node.hierarchy_depth) %>" class="hover:bg-gray-200 hover:bg-opacity-50">
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 "./nav/node", node: node, path: show_path(examples.first.path) do %>
3
+ <%= render "nav/node", node: node, path: show_path(examples.first.path) do %>
4
4
  <% examples.each do |example| %>
5
- <%= render "./nav/leaf", leaf: example, depth: example.hierarchy_depth + 1 %>
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 "./nav/leaf", leaf: example, depth: example.hierarchy_depth, label: node.label, display: :node %>
11
- <% end %>
10
+ <%= render "nav/leaf", leaf: example, depth: example.hierarchy_depth, label: node.label, display: :node %>
11
+ <% end %>
@@ -5,4 +5,4 @@
5
5
  </svg>
6
6
  </button>
7
7
  <%= yield %>
8
- </header>
8
+ </header>
@@ -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 "./nav/#{item.type.to_s}", node: item %>
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 "./workbench/header" %>
2
+ <%= render "workbench/header" %>
3
3
  <div class="md:grid flex-grow" :style="`grid-template-rows: 1fr 1px ${$store.inspector.height}px`">
4
- <%= render "./workbench/preview" %>
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 "./workbench/inspector", **@inspector %>
9
+ <%= render "workbench/inspector", **@inspector %>
10
10
  <% end %>
11
- </div>
12
- </div>
11
+ </div>
12
+ </div>
@@ -1,4 +1,4 @@
1
- <%= render "./shared/header" do %>
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 "./shared/clipboard" do %><%= h props[:clipboard].strip %><% end %>
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 "./workbench/inspector/#{props[:template]}", key: key, **props %>
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>
@@ -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.titleize
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(&:name) : @items
27
+ sorted ? @items.sort_by(&:label) : @items
28
28
  end
29
29
 
30
30
  def add(item)
@@ -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
@@ -5,7 +5,7 @@ module Lookbook
5
5
  YARDOC_FILE_PATH = Rails.root.join("tmp/storage/.yardoc").to_s
6
6
 
7
7
  def initialize(paths)
8
- @paths = paths.map { |p| "#{p}/**/*.rb" }
8
+ @paths = paths.map { |p| "#{p}/**/*_preview.rb" }
9
9
  YARD::Registry.yardoc_file = YARDOC_FILE_PATH
10
10
  end
11
11
 
@@ -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
@@ -1,17 +1,19 @@
1
1
  module Lookbook
2
2
  module Taggable
3
3
  def lookbook_hidden?
4
- if code_object.tag(:hidden)
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.tag(:label)&.text
10
+ code_object&.tag(:label)&.text
11
11
  end
12
12
 
13
13
  def lookbook_notes
14
- code_object.docstring.to_s.strip
14
+ if code_object&.docstring
15
+ code_object.docstring.to_s.strip
16
+ end
15
17
  end
16
18
 
17
19
  def lookbook_group
@@ -1,3 +1,3 @@
1
1
  module Lookbook
2
- VERSION = "0.3.1"
2
+ VERSION = "0.3.5"
3
3
  end
data/lib/lookbook.rb CHANGED
@@ -12,4 +12,5 @@ module Lookbook
12
12
  autoload :PreviewExample, "lookbook/preview_example"
13
13
  autoload :PreviewGroup, "lookbook/preview_group"
14
14
  autoload :Taggable, "lookbook/taggable"
15
+ autoload :NullLogger, "lookbook/null_logger"
15
16
  end
@@ -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", "").gsub("-",".")
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))