lib/lookbook/preview.rb in lookbook-0.9.8 vs lib/lookbook/preview.rb in lookbook-1.0.0.beta.0
- old
+ new
@@ -1,15 +1,16 @@
module Lookbook
- class Preview
+ class Preview < Collection
include Utils
delegate :name, :render_args, to: :@preview
delegate :position, :group, :notes, :hidden?, to: :@preview_inspector
def initialize(preview)
@preview = preview
- @preview_inspector = CodeInspector.new(@preview.name)
+ @preview_inspector = SourceInspector.new(@preview.name)
+ super(preview_class_name(preview_class_basename(@preview.name)))
end
def id
@preview_inspector&.id || generate_id(lookup_path)
end
@@ -31,11 +32,11 @@
end
def examples
return @examples if @examples.present?
public_methods = @preview.public_instance_methods(false)
- public_method_objects = @preview_inspector&.methods&.select { |m| public_methods.include?(m.name) }
+ public_method_objects = @preview_inspector&.methods&.filter { |m| public_methods.include?(m.name) }
examples = (public_method_objects || []).map { |m| PreviewExample.new(m.name.to_s, self) }
sorted = Lookbook.config.sort_examples ? examples.sort_by(&:label) : examples
@examples = []
if @preview_inspector&.groups&.any?
sorted.group_by { |m| m.group }.each do |name, examples|
@@ -50,25 +51,29 @@
@examples = sorted
end
@examples = @examples.compact
end
+ def items
+ examples.reject { |i| i.hidden? }
+ end
+
def default_example
examples.first
end
- def path
- preview_class_name(preview_class_basename(name))
- end
-
def full_path
base_path = Array(preview_paths).detect do |preview_path|
Dir["#{preview_path}/#{name.underscore}.rb"].first
end
Pathname.new(Dir["#{base_path}/#{name.underscore}.rb"].first)
end
+ def url_path
+ inspect_path lookup_path
+ end
+
def preview_paths
ViewComponent::Base.preview_paths
end
def parent_collections_names
@@ -83,9 +88,13 @@
@preview.instance_variable_get(:@layout)
end
def display_params
Lookbook.config.preview_display_params.deep_merge(@preview_inspector&.display_params)
+ end
+
+ def collapsible?
+ true
end
class << self
def find(path)
all.find { |p| p.lookup_path == path }