lookbook 0.2.1 → 0.3.0.beta.0
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/README.md +155 -77
- data/app/assets/lookbook/css/app.css +28 -0
- data/app/assets/lookbook/js/app.js +51 -24
- data/app/assets/lookbook/js/nav/leaf.js +20 -0
- data/app/assets/lookbook/js/nav/node.js +31 -0
- data/app/assets/lookbook/js/nav.js +36 -0
- data/app/assets/lookbook/js/page.js +33 -0
- data/app/assets/lookbook/js/utils/clipboard.js +13 -0
- data/app/assets/lookbook/js/utils/morph.js +16 -0
- data/app/assets/lookbook/js/{reloader.js → utils/reloader.js} +0 -0
- data/app/assets/lookbook/js/utils/screen.js +44 -0
- data/app/assets/lookbook/js/{size_observer.js → utils/size_observer.js} +1 -1
- data/app/assets/lookbook/js/{split.js → utils/split.js} +4 -4
- data/app/assets/lookbook/js/workbench/inspector.js +11 -0
- data/app/assets/lookbook/js/workbench/preview.js +39 -0
- data/app/assets/lookbook/js/workbench.js +14 -0
- data/app/controllers/lookbook/{browser_controller.rb → app_controller.rb} +58 -31
- data/app/helpers/lookbook/application_helper.rb +1 -1
- data/app/views/lookbook/_sidebar.html.erb +45 -0
- data/app/views/lookbook/_workbench.html.erb +12 -0
- data/app/views/lookbook/{browser → app}/error.html.erb +0 -0
- data/app/views/lookbook/app/index.html.erb +11 -0
- data/app/views/lookbook/{browser → app}/not_found.html.erb +1 -1
- data/app/views/lookbook/app/show.html.erb +1 -0
- data/app/views/lookbook/layouts/app.html.erb +22 -30
- data/app/views/lookbook/layouts/group.html.erb +6 -0
- data/app/views/lookbook/nav/_collection.html.erb +5 -0
- data/app/views/lookbook/nav/_node.html.erb +19 -0
- data/app/views/lookbook/nav/_preview.html.erb +29 -0
- data/app/views/lookbook/shared/_clipboard.html.erb +11 -0
- data/app/views/lookbook/shared/_header.html.erb +8 -0
- data/app/views/lookbook/workbench/_header.html.erb +37 -0
- data/app/views/lookbook/workbench/_inspector.html.erb +32 -0
- data/app/views/lookbook/workbench/_preview.html.erb +24 -0
- data/app/views/lookbook/workbench/inspector/_code.html.erb +3 -0
- data/app/views/lookbook/workbench/inspector/_notes.html.erb +24 -0
- data/app/views/lookbook/{partials → workbench}/inspector/_plain.html.erb +0 -0
- data/config/routes.rb +6 -4
- data/lib/lookbook/engine.rb +6 -4
- data/lib/lookbook/preview.rb +25 -3
- data/lib/lookbook/preview_controller.rb +6 -1
- data/lib/lookbook/preview_example.rb +3 -2
- data/lib/lookbook/preview_group.rb +37 -0
- data/lib/lookbook/taggable.rb +5 -1
- 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 +267 -113
- data/public/lookbook-assets/app.js +1014 -116
- data/{app/views/lookbook/partials/_icon_sprite.html.erb → public/lookbook-assets/feather-sprite.svg} +1 -1
- metadata +54 -27
- data/app/assets/lookbook/js/preview.js +0 -76
- data/app/views/lookbook/browser/index.html.erb +0 -8
- data/app/views/lookbook/browser/show.html.erb +0 -33
- data/app/views/lookbook/partials/_preview.html.erb +0 -18
- data/app/views/lookbook/partials/_sidebar.html.erb +0 -21
- data/app/views/lookbook/partials/inspector/_code.html.erb +0 -1
- data/app/views/lookbook/partials/inspector/_inspector.html.erb +0 -43
- data/app/views/lookbook/partials/inspector/_prose.html.erb +0 -3
- data/app/views/lookbook/partials/nav/_collection.html.erb +0 -17
- data/app/views/lookbook/partials/nav/_label.html.erb +0 -13
- data/app/views/lookbook/partials/nav/_nav.html.erb +0 -27
- data/app/views/lookbook/partials/nav/_preview.html.erb +0 -48
- data/config/lookbook_cable.yml +0 -8
    
        data/lib/lookbook/engine.rb
    CHANGED
    
    | @@ -28,6 +28,7 @@ module Lookbook | |
| 28 28 | 
             
                  options.preview_paths += vc_options.preview_paths
         | 
| 29 29 |  | 
| 30 30 | 
             
                  options.preview_controller = vc_options.preview_controller if options.preview_controller.nil?
         | 
| 31 | 
            +
                  options.preview_srcdoc = true if options.preview_srcdoc.nil?
         | 
| 31 32 |  | 
| 32 33 | 
             
                  options.listen_paths = options.listen_paths.map(&:to_s)
         | 
| 33 34 | 
             
                  options.listen_paths += options.preview_paths
         | 
| @@ -35,10 +36,11 @@ module Lookbook | |
| 35 36 | 
             
                end
         | 
| 36 37 |  | 
| 37 38 | 
             
                initializer "lookbook.cable.config" do |app|
         | 
| 38 | 
            -
                   | 
| 39 | 
            -
             | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 39 | 
            +
                  if app.config.lookbook.auto_refresh
         | 
| 40 | 
            +
                    Lookbook::Engine.cable.cable = {adapter: "async"}.with_indifferent_access
         | 
| 41 | 
            +
                    Lookbook::Engine.cable.mount_path = "/cable"
         | 
| 42 | 
            +
                    Lookbook::Engine.cable.connection_class = -> { Lookbook::Connection }
         | 
| 43 | 
            +
                  end
         | 
| 42 44 | 
             
                end
         | 
| 43 45 |  | 
| 44 46 | 
             
                initializer "lookbook.cable.logger" do
         | 
    
        data/lib/lookbook/preview.rb
    CHANGED
    
    | @@ -2,6 +2,10 @@ module Lookbook | |
| 2 2 | 
             
              module Preview
         | 
| 3 3 | 
             
                include Taggable
         | 
| 4 4 |  | 
| 5 | 
            +
                def id
         | 
| 6 | 
            +
                  lookbook_path.tr("_", "-")
         | 
| 7 | 
            +
                end
         | 
| 8 | 
            +
             | 
| 5 9 | 
             
                # Examples::FooBarComponent::Preview -> "Foo Bar"
         | 
| 6 10 | 
             
                def lookbook_label
         | 
| 7 11 | 
             
                  super.presence || lookbook_path.split("/").last.titleize
         | 
| @@ -19,9 +23,21 @@ module Lookbook | |
| 19 23 | 
             
                  return @lookbook_examples if @lookbook_examples.present?
         | 
| 20 24 | 
             
                  public_methods = public_instance_methods(false)
         | 
| 21 25 | 
             
                  public_method_objects = code_object.meths.filter { |m| public_methods.include?(m.name) }
         | 
| 22 | 
            -
                   | 
| 23 | 
            -
                   | 
| 24 | 
            -
                  @lookbook_examples  | 
| 26 | 
            +
                  visible = public_method_objects.map { |m| PreviewExample.new(m.name.to_s, self) }.reject(&:hidden?)
         | 
| 27 | 
            +
                  sorted = Lookbook.config.sort_examples ? visible.sort_by(&:label) : visible
         | 
| 28 | 
            +
                  @lookbook_examples = []
         | 
| 29 | 
            +
                  if code_object.groups.any?
         | 
| 30 | 
            +
                    sorted.group_by { |m| m.group }.each do |name, examples|
         | 
| 31 | 
            +
                      if name.nil?
         | 
| 32 | 
            +
                        @lookbook_examples += examples
         | 
| 33 | 
            +
                      else
         | 
| 34 | 
            +
                        @lookbook_examples << PreviewGroup.new(name.underscore, self, examples)
         | 
| 35 | 
            +
                      end
         | 
| 36 | 
            +
                    end
         | 
| 37 | 
            +
                  else
         | 
| 38 | 
            +
                    @lookbook_examples = sorted
         | 
| 39 | 
            +
                  end
         | 
| 40 | 
            +
                  @lookbook_examples
         | 
| 25 41 | 
             
                end
         | 
| 26 42 |  | 
| 27 43 | 
             
                # Examples::FooBarComponentPreview -> "Examples::FooBar"
         | 
| @@ -57,6 +73,10 @@ module Lookbook | |
| 57 73 | 
             
                  lookbook_path.tr("_", "-")
         | 
| 58 74 | 
             
                end
         | 
| 59 75 |  | 
| 76 | 
            +
                def lookbook_layout
         | 
| 77 | 
            +
                  defined?(@layout) ? @layout : nil
         | 
| 78 | 
            +
                end
         | 
| 79 | 
            +
             | 
| 60 80 | 
             
                class << self
         | 
| 61 81 | 
             
                  def all
         | 
| 62 82 | 
             
                    ViewComponent::Preview.all
         | 
| @@ -69,6 +89,8 @@ module Lookbook | |
| 69 89 | 
             
                  def exists?(path)
         | 
| 70 90 | 
             
                    !!find(path)
         | 
| 71 91 | 
             
                  end
         | 
| 92 | 
            +
             | 
| 93 | 
            +
                  
         | 
| 72 94 | 
             
                end
         | 
| 73 95 |  | 
| 74 96 | 
             
                private
         | 
| @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            module Lookbook
         | 
| 2 2 | 
             
              module PreviewController
         | 
| 3 | 
            -
                def  | 
| 3 | 
            +
                def render_example_to_string(preview, example_name)
         | 
| 4 4 | 
             
                  prepend_application_view_paths
         | 
| 5 5 | 
             
                  prepend_preview_examples_view_path
         | 
| 6 6 | 
             
                  @preview = preview
         | 
| @@ -13,5 +13,10 @@ module Lookbook | |
| 13 13 | 
             
                  opts[:locals] = locals if locals.present?
         | 
| 14 14 | 
             
                  render_to_string template, opts
         | 
| 15 15 | 
             
                end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                def render_in_layout_to_string(content, layout_override)
         | 
| 18 | 
            +
                  layout = determine_layout(layout_override, prepend_views: false)[:layout]
         | 
| 19 | 
            +
                  render_to_string html: content, layout: layout
         | 
| 20 | 
            +
                end
         | 
| 16 21 | 
             
              end
         | 
| 17 22 | 
             
            end
         | 
| @@ -41,8 +41,8 @@ module Lookbook | |
| 41 41 | 
             
                  :example
         | 
| 42 42 | 
             
                end
         | 
| 43 43 |  | 
| 44 | 
            -
                def  | 
| 45 | 
            -
                  [ | 
| 44 | 
            +
                def matchers
         | 
| 45 | 
            +
                  [@preview.label, label].map { |m| m.gsub(/\s/, "").downcase }
         | 
| 46 46 | 
             
                end
         | 
| 47 47 |  | 
| 48 48 | 
             
                def hierarchy_depth
         | 
| @@ -62,6 +62,7 @@ module Lookbook | |
| 62 62 | 
             
                  Pathname.new(Dir["#{base_path}/#{template_path}.html.*"].first)
         | 
| 63 63 | 
             
                end
         | 
| 64 64 |  | 
| 65 | 
            +
                alias_method :group, :lookbook_group
         | 
| 65 66 | 
             
                alias_method :notes, :lookbook_notes
         | 
| 66 67 | 
             
                alias_method :hidden?, :lookbook_hidden?
         | 
| 67 68 | 
             
              end
         | 
| @@ -0,0 +1,37 @@ | |
| 1 | 
            +
            module Lookbook
         | 
| 2 | 
            +
              class PreviewGroup
         | 
| 3 | 
            +
                include Taggable
         | 
| 4 | 
            +
             | 
| 5 | 
            +
                attr_reader :name, :examples
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                def initialize(name, preview, examples)
         | 
| 8 | 
            +
                  @name = name
         | 
| 9 | 
            +
                  @preview = preview
         | 
| 10 | 
            +
                  @examples = examples
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                def id
         | 
| 14 | 
            +
                  path.underscore.tr("_", "-")
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                def path
         | 
| 18 | 
            +
                  "#{@preview.lookbook_path}/#{name}"
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                def label
         | 
| 22 | 
            +
                  name.titleize
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                def type
         | 
| 26 | 
            +
                  :group
         | 
| 27 | 
            +
                end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                def matchers
         | 
| 30 | 
            +
                  [@preview.label, label].map { |m| m.gsub(/\s/, "").downcase }
         | 
| 31 | 
            +
                end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                def hierarchy_depth
         | 
| 34 | 
            +
                  @preview.lookbook_hierarchy_depth + 1
         | 
| 35 | 
            +
                end
         | 
| 36 | 
            +
              end
         | 
| 37 | 
            +
            end
         | 
    
        data/lib/lookbook/taggable.rb
    CHANGED
    
    
    
        data/lib/lookbook/version.rb
    CHANGED
    
    
    
        data/lib/lookbook.rb
    CHANGED
    
    | @@ -10,5 +10,6 @@ module Lookbook | |
| 10 10 | 
             
              autoload :Preview, "lookbook/preview"
         | 
| 11 11 | 
             
              autoload :PreviewController, "lookbook/preview_controller"
         | 
| 12 12 | 
             
              autoload :PreviewExample, "lookbook/preview_example"
         | 
| 13 | 
            +
              autoload :PreviewGroup, "lookbook/preview_group"
         | 
| 13 14 | 
             
              autoload :Taggable, "lookbook/taggable"
         | 
| 14 15 | 
             
            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", "")
         | 
| 9 | 
            +
                  new_version = args[:version].sub("v", "").gsub("-",".")
         | 
| 10 10 | 
             
                  file = File.open(filename)
         | 
| 11 11 | 
             
                  contents = file.read
         | 
| 12 12 | 
             
                  File.write(filename, contents.gsub(current_version, new_version))
         |