lookbook 1.4.0 → 1.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/components/lookbook/nav/directory/component.html.erb +2 -0
- data/app/components/lookbook/nav/entity/component.html.erb +2 -0
- data/app/components/lookbook/nav/entity/component.rb +1 -1
- data/app/components/lookbook/nav/item/component.rb +1 -1
- data/lib/lookbook/entities/collections/concerns/hierarchical_collection.rb +0 -4
- data/lib/lookbook/entities/collections/entity_collection.rb +9 -14
- data/lib/lookbook/entities/collections/preview_example_collection.rb +0 -5
- data/lib/lookbook/entities/concerns/navigable.rb +19 -3
- data/lib/lookbook/entities/entity.rb +5 -0
- data/lib/lookbook/entities/preview.rb +1 -1
- data/lib/lookbook/entities/preview_example.rb +10 -1
- data/lib/lookbook/services/data/resolvers/file_resolver.rb +1 -1
- data/lib/lookbook/support/tree_node.rb +10 -6
- data/lib/lookbook/version.rb +1 -1
- data/public/lookbook-assets/js/lookbook.js +42 -42
- data/public/lookbook-assets/js/lookbook.js.map +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 18630747bc279477cc077cccfd3f2df3611d6d277c1140f1d63616cb9fc4cc4e
|
4
|
+
data.tar.gz: 40ca16f9e0f8ad6a44b93c7678700f728fdeaf149e1bc14cd36efd17a2c58b8b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8c13c64ca2591b32c832efbd7624106562990e2eda63bb1260af07ac1ed26727d1f716751b43a82470b638158374e16fa5128871d6f6a656c9fca59c2f00669f
|
7
|
+
data.tar.gz: 6ccd1a92b40b72734a27568a6461158cffd59ca0a6d87eb4f997453ce3a60fa30face2b0cbe1ed83facc181b9d1c6b6373559e32fd6c0d026406c024b09be309
|
@@ -1,10 +1,12 @@
|
|
1
1
|
<%= render_component_tag :li,
|
2
2
|
id: id,
|
3
|
+
key: "#{id}-directory",
|
3
4
|
class: "list-none",
|
4
5
|
"x-show": "!filteredOut",
|
5
6
|
data: { "entity-type": :directory },
|
6
7
|
cloak: true do %>
|
7
8
|
<%= lookbook_tag :button,
|
9
|
+
key: "#{id}-action",
|
8
10
|
class: "nav-action",
|
9
11
|
style: "padding-left: #{left_pad}px",
|
10
12
|
"x-bind": "bindings.toggle" do %>
|
@@ -1,11 +1,13 @@
|
|
1
1
|
<%= render_component_tag :li,
|
2
2
|
id: id,
|
3
|
+
key: "#{id}-entity-#{type}",
|
3
4
|
class: "list-none",
|
4
5
|
"x-show": "!filteredOut",
|
5
6
|
data: { "entity-type": type },
|
6
7
|
cloak: true do %>
|
7
8
|
<%= lookbook_tag href.present? ? :a : :button,
|
8
9
|
href: href,
|
10
|
+
key: "#{id}-action",
|
9
11
|
class: "nav-action",
|
10
12
|
style: "padding-left: #{left_pad}px",
|
11
13
|
"x-bind": "bindings.#{href.present? ? "link" : "toggle"}" do %>
|
@@ -12,53 +12,48 @@ module Lookbook
|
|
12
12
|
add(entities)
|
13
13
|
end
|
14
14
|
|
15
|
-
def add(
|
16
|
-
Array(
|
15
|
+
def add(to_add = nil)
|
16
|
+
Array(to_add).each do |entity|
|
17
17
|
unless find_by_path(entity.path)
|
18
|
-
clear_cache
|
19
18
|
@entities.push(entity)
|
20
19
|
end
|
21
20
|
end
|
22
|
-
|
21
|
+
clear_cache
|
23
22
|
end
|
24
23
|
|
25
24
|
def find_by_id(id)
|
26
25
|
id = Utils.id(id)
|
27
|
-
find { |entity| entity.id == id }
|
26
|
+
entities.find { |entity| entity.id == id }
|
28
27
|
end
|
29
28
|
|
30
29
|
def find_by_path(path)
|
31
|
-
find { |entity| entity.path.to_s == path.to_s }
|
30
|
+
entities.find { |entity| entity.path.to_s == path.to_s }
|
32
31
|
end
|
33
32
|
|
34
33
|
def next(entity)
|
35
|
-
index = find_index { |i| i.path == entity.path }
|
34
|
+
index = entities.find_index { |i| i.path == entity.path }
|
36
35
|
entities[index + 1] unless index.nil?
|
37
36
|
end
|
38
37
|
|
39
38
|
def previous(entity)
|
40
|
-
index = find_index { |i| i.path == entity.path }
|
39
|
+
index = entities.find_index { |i| i.path == entity.path }
|
41
40
|
entities[index - 1] if !index.nil? && index > 0
|
42
41
|
end
|
43
42
|
|
44
43
|
def each(&block)
|
45
44
|
if block
|
46
|
-
entities.each { |entity| yield entity }
|
45
|
+
entities.sort.each { |entity| yield entity }
|
47
46
|
else
|
48
47
|
to_enum(:each)
|
49
48
|
end
|
50
49
|
end
|
51
50
|
|
52
51
|
def flat_map(...)
|
53
|
-
map(...).map(&:to_a).flatten
|
52
|
+
entities.map(...).map(&:to_a).flatten
|
54
53
|
end
|
55
54
|
|
56
55
|
protected
|
57
56
|
|
58
|
-
def sort_entities
|
59
|
-
@entities.sort_by! { |entity| [entity.label] }
|
60
|
-
end
|
61
|
-
|
62
57
|
def clear_cache
|
63
58
|
@_cache = {}
|
64
59
|
end
|
@@ -12,16 +12,32 @@ module Lookbook
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def position
|
15
|
-
|
16
|
-
|
15
|
+
return @_position if @_position
|
16
|
+
|
17
|
+
pos = if @position_prefixes && respond_to?(:file_name)
|
18
|
+
PositionPrefixParser.call(file_name).first || default_position
|
17
19
|
else
|
18
|
-
fetch_config(:position,
|
20
|
+
fetch_config(:position, default_position)
|
19
21
|
end
|
22
|
+
|
23
|
+
@_position ||= pos.to_i
|
20
24
|
end
|
21
25
|
|
22
26
|
def depth
|
23
27
|
path.split("/").size
|
24
28
|
end
|
29
|
+
|
30
|
+
def default_position
|
31
|
+
@default_position || 10000
|
32
|
+
end
|
33
|
+
|
34
|
+
def <=>(other)
|
35
|
+
if respond_to?(:sort_handler, true)
|
36
|
+
sort_handler(other)
|
37
|
+
else
|
38
|
+
[position, label] <=> [other.position, other.label]
|
39
|
+
end
|
40
|
+
end
|
25
41
|
end
|
26
42
|
end
|
27
43
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
module Lookbook
|
2
2
|
class Entity
|
3
|
+
include Comparable
|
3
4
|
include Lookbook::Engine.routes.url_helpers
|
4
5
|
|
5
6
|
def initialize(lookup_path = nil)
|
@@ -36,6 +37,10 @@ module Lookbook
|
|
36
37
|
@_type ||= self.class.name.demodulize.underscore.downcase.to_sym
|
37
38
|
end
|
38
39
|
|
40
|
+
def <=>(other)
|
41
|
+
label <=> other.label
|
42
|
+
end
|
43
|
+
|
39
44
|
alias_method :path, :lookup_path
|
40
45
|
alias_method :logical_path, :lookup_path
|
41
46
|
|
@@ -81,7 +81,7 @@ module Lookbook
|
|
81
81
|
def example_entities
|
82
82
|
public_methods = preview_class.public_instance_methods(false)
|
83
83
|
method_objects = code_object.meths.select { |m| public_methods.include?(m.name) }
|
84
|
-
method_objects.map { |code_object| PreviewExample.new(code_object, self) }
|
84
|
+
method_objects.map.with_index { |code_object, i| PreviewExample.new(code_object, self, position: i) }
|
85
85
|
end
|
86
86
|
end
|
87
87
|
end
|
@@ -8,9 +8,10 @@ module Lookbook
|
|
8
8
|
|
9
9
|
attr_reader :preview
|
10
10
|
|
11
|
-
def initialize(code_object, preview)
|
11
|
+
def initialize(code_object, preview, position: nil)
|
12
12
|
@code_object = code_object
|
13
13
|
@preview = preview
|
14
|
+
@default_position = position
|
14
15
|
@lookup_path = "#{parent.lookup_path}/#{name}"
|
15
16
|
end
|
16
17
|
|
@@ -65,6 +66,14 @@ module Lookbook
|
|
65
66
|
|
66
67
|
protected
|
67
68
|
|
69
|
+
def sort_handler(other_entity)
|
70
|
+
if Lookbook.config.sort_examples
|
71
|
+
label <=> other_entity.label
|
72
|
+
else
|
73
|
+
[position, label] <=> [other_entity.position, other_entity.label]
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
68
77
|
def format_source(source)
|
69
78
|
source.sub(/^def \w+\s?(\([^)]+\))?/m, "").split("\n")[0..-2].join("\n")
|
70
79
|
end
|
@@ -22,7 +22,7 @@ module Lookbook
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def resolve_path(path, base_dir)
|
25
|
-
path.start_with?(".") ? File.expand_path(path, base_dir) : Rails.root.join(path)
|
25
|
+
Pathname(path.start_with?(".") ? File.expand_path(path, base_dir) : Rails.root.join(path))
|
26
26
|
end
|
27
27
|
end
|
28
28
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
module Lookbook
|
2
2
|
class TreeNode
|
3
3
|
include Enumerable
|
4
|
+
include Comparable
|
4
5
|
|
5
6
|
delegate_missing_to :content
|
6
7
|
|
@@ -40,7 +41,6 @@ module Lookbook
|
|
40
41
|
|
41
42
|
def add_child(name, content = nil, position: 10000)
|
42
43
|
children << TreeNode.new("#{path}/#{name}", content, position: position)
|
43
|
-
sort_children
|
44
44
|
end
|
45
45
|
|
46
46
|
def has_child?(name)
|
@@ -57,7 +57,7 @@ module Lookbook
|
|
57
57
|
|
58
58
|
def each(&block)
|
59
59
|
if block
|
60
|
-
children.each do |child|
|
60
|
+
children.sort.each do |child|
|
61
61
|
yield child
|
62
62
|
end
|
63
63
|
else
|
@@ -65,6 +65,14 @@ module Lookbook
|
|
65
65
|
end
|
66
66
|
end
|
67
67
|
|
68
|
+
def <=>(other)
|
69
|
+
if content?
|
70
|
+
content <=> (other.content? ? other.content : other)
|
71
|
+
else
|
72
|
+
[position, label] <=> [other.position, other.label]
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
68
76
|
protected
|
69
77
|
|
70
78
|
def content_value(method_name, fallback = nil)
|
@@ -72,10 +80,6 @@ module Lookbook
|
|
72
80
|
value || fallback
|
73
81
|
end
|
74
82
|
|
75
|
-
def sort_children
|
76
|
-
@children.sort_by! { |child| [child.position, child.label] }
|
77
|
-
end
|
78
|
-
|
79
83
|
def segments
|
80
84
|
path.split("/")
|
81
85
|
end
|
data/lib/lookbook/version.rb
CHANGED
@@ -7705,7 +7705,7 @@ function $5439cede634b2921$var$toCamel(s) {
|
|
7705
7705
|
}
|
7706
7706
|
|
7707
7707
|
|
7708
|
-
var $
|
7708
|
+
var $068816311f4006ce$exports = {};
|
7709
7709
|
var $cbd28b10fa9798c7$exports = {};
|
7710
7710
|
|
7711
7711
|
$parcel$defineInteropFlag($cbd28b10fa9798c7$exports);
|
@@ -11327,6 +11327,31 @@ function $e398acaded942bbe$export$2e2bcd8739ae039(targetSelector) {
|
|
11327
11327
|
}
|
11328
11328
|
|
11329
11329
|
|
11330
|
+
var $e9904a14dabf652d$exports = {};
|
11331
|
+
|
11332
|
+
$parcel$defineInteropFlag($e9904a14dabf652d$exports);
|
11333
|
+
|
11334
|
+
$parcel$export($e9904a14dabf652d$exports, "default", () => $e9904a14dabf652d$export$2e2bcd8739ae039);
|
11335
|
+
function $e9904a14dabf652d$export$2e2bcd8739ae039(store) {
|
11336
|
+
return {
|
11337
|
+
focussed: false,
|
11338
|
+
get active () {
|
11339
|
+
return store.active;
|
11340
|
+
},
|
11341
|
+
get text () {
|
11342
|
+
return store.text;
|
11343
|
+
},
|
11344
|
+
clear () {
|
11345
|
+
if (store.raw === "") this.$refs.input.blur();
|
11346
|
+
else store.raw = "";
|
11347
|
+
},
|
11348
|
+
focus () {
|
11349
|
+
this.$refs.input.focus();
|
11350
|
+
}
|
11351
|
+
};
|
11352
|
+
}
|
11353
|
+
|
11354
|
+
|
11330
11355
|
var $e1f51f020443edd4$exports = {};
|
11331
11356
|
|
11332
11357
|
$parcel$defineInteropFlag($e1f51f020443edd4$exports);
|
@@ -12201,43 +12226,6 @@ function $e1f51f020443edd4$export$2e2bcd8739ae039(id, embedStore) {
|
|
12201
12226
|
}
|
12202
12227
|
|
12203
12228
|
|
12204
|
-
var $e9904a14dabf652d$exports = {};
|
12205
|
-
|
12206
|
-
$parcel$defineInteropFlag($e9904a14dabf652d$exports);
|
12207
|
-
|
12208
|
-
$parcel$export($e9904a14dabf652d$exports, "default", () => $e9904a14dabf652d$export$2e2bcd8739ae039);
|
12209
|
-
function $e9904a14dabf652d$export$2e2bcd8739ae039(store) {
|
12210
|
-
return {
|
12211
|
-
focussed: false,
|
12212
|
-
get active () {
|
12213
|
-
return store.active;
|
12214
|
-
},
|
12215
|
-
get text () {
|
12216
|
-
return store.text;
|
12217
|
-
},
|
12218
|
-
clear () {
|
12219
|
-
if (store.raw === "") this.$refs.input.blur();
|
12220
|
-
else store.raw = "";
|
12221
|
-
},
|
12222
|
-
focus () {
|
12223
|
-
this.$refs.input.focus();
|
12224
|
-
}
|
12225
|
-
};
|
12226
|
-
}
|
12227
|
-
|
12228
|
-
|
12229
|
-
var $36506012e0c6e9e3$exports = {};
|
12230
|
-
|
12231
|
-
$parcel$defineInteropFlag($36506012e0c6e9e3$exports);
|
12232
|
-
|
12233
|
-
$parcel$export($36506012e0c6e9e3$exports, "default", () => $36506012e0c6e9e3$export$2e2bcd8739ae039);
|
12234
|
-
function $36506012e0c6e9e3$export$2e2bcd8739ae039(iconName) {
|
12235
|
-
return {
|
12236
|
-
iconName: iconName
|
12237
|
-
};
|
12238
|
-
}
|
12239
|
-
|
12240
|
-
|
12241
12229
|
var $d92d9d5253f84566$exports = {};
|
12242
12230
|
|
12243
12231
|
$parcel$defineInteropFlag($d92d9d5253f84566$exports);
|
@@ -12282,6 +12270,18 @@ function $d92d9d5253f84566$export$2e2bcd8739ae039(store) {
|
|
12282
12270
|
}
|
12283
12271
|
|
12284
12272
|
|
12273
|
+
var $36506012e0c6e9e3$exports = {};
|
12274
|
+
|
12275
|
+
$parcel$defineInteropFlag($36506012e0c6e9e3$exports);
|
12276
|
+
|
12277
|
+
$parcel$export($36506012e0c6e9e3$exports, "default", () => $36506012e0c6e9e3$export$2e2bcd8739ae039);
|
12278
|
+
function $36506012e0c6e9e3$export$2e2bcd8739ae039(iconName) {
|
12279
|
+
return {
|
12280
|
+
iconName: iconName
|
12281
|
+
};
|
12282
|
+
}
|
12283
|
+
|
12284
|
+
|
12285
12285
|
var $506dabb2bf255b38$exports = {};
|
12286
12286
|
|
12287
12287
|
$parcel$defineInteropFlag($506dabb2bf255b38$exports);
|
@@ -13078,15 +13078,15 @@ function $6d64716f0b34fdf4$export$2e2bcd8739ae039(store) {
|
|
13078
13078
|
}
|
13079
13079
|
|
13080
13080
|
|
13081
|
-
$
|
13081
|
+
$068816311f4006ce$exports = {
|
13082
13082
|
"button": $cbd28b10fa9798c7$exports,
|
13083
13083
|
"code": $99486586f6691564$exports,
|
13084
13084
|
"copy_button": $47a1c62621be0c54$exports,
|
13085
13085
|
"dimensions_display": $e398acaded942bbe$exports,
|
13086
|
-
"embed": $e1f51f020443edd4$exports,
|
13087
13086
|
"filter": $e9904a14dabf652d$exports,
|
13088
|
-
"
|
13087
|
+
"embed": $e1f51f020443edd4$exports,
|
13089
13088
|
"nav": $d92d9d5253f84566$exports,
|
13089
|
+
"icon": $36506012e0c6e9e3$exports,
|
13090
13090
|
"split_layout": $506dabb2bf255b38$exports,
|
13091
13091
|
"tabs": $0db07828cadc68e0$exports,
|
13092
13092
|
"tab_panels": $a87dacf5139b5e2f$exports,
|
@@ -13379,7 +13379,7 @@ const $d73574cc5e9b9e72$var$prefix = window.APP_NAME;
|
|
13379
13379
|
// Components
|
13380
13380
|
(0, $caa9439642c6336c$export$2e2bcd8739ae039).data("app", (0, $d709d0f4027033b2$export$2e2bcd8739ae039));
|
13381
13381
|
[
|
13382
|
-
$
|
13382
|
+
$068816311f4006ce$exports,
|
13383
13383
|
$fe98e3f2bf49b28f$exports,
|
13384
13384
|
$6c10158820e535ef$exports
|
13385
13385
|
].forEach((scripts)=>{
|