lookbook 1.0.0.beta.4 → 1.0.0.beta.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/app/components/lookbook/base_component.rb +6 -4
  3. data/app/components/lookbook/copy_button/component.html.erb +3 -3
  4. data/app/components/lookbook/embed/component.html.erb +33 -33
  5. data/app/components/lookbook/header/component.html.erb +2 -2
  6. data/app/components/lookbook/nav/component.html.erb +4 -8
  7. data/app/components/lookbook/nav/component.rb +5 -7
  8. data/app/components/lookbook/nav/item/component.html.erb +12 -6
  9. data/app/components/lookbook/nav/item/component.rb +9 -2
  10. data/app/components/lookbook/page_tabs/component.html.erb +1 -1
  11. data/app/components/lookbook/split_layout/component.html.erb +1 -1
  12. data/app/components/lookbook/tab_panels/panel/component.html.erb +2 -2
  13. data/app/components/lookbook/tabs/component.html.erb +2 -2
  14. data/app/components/lookbook/tabs/dropdown_tab/component.html.erb +1 -1
  15. data/app/components/lookbook/tabs/tab/component.html.erb +1 -1
  16. data/app/components/lookbook/tag_component.rb +5 -10
  17. data/app/controllers/lookbook/application_controller.rb +1 -1
  18. data/app/views/layouts/lookbook/application.html.erb +76 -60
  19. data/app/views/layouts/lookbook/page.html.erb +35 -35
  20. data/app/views/lookbook/index.html.erb +24 -11
  21. data/app/views/lookbook/pages/show.html.erb +1 -1
  22. data/app/views/lookbook/previews/show.html.erb +7 -7
  23. data/lib/lookbook/config.rb +9 -1
  24. data/lib/lookbook/engine.rb +16 -6
  25. data/lib/lookbook/markdown.rb +3 -1
  26. data/lib/lookbook/page.rb +4 -0
  27. data/lib/lookbook/preview.rb +35 -5
  28. data/lib/lookbook/version.rb +1 -1
  29. data/lib/tasks/lookbook_tasks.rake +1 -1
  30. data/public/lookbook-assets/css/lookbook.css +12 -12
  31. data/public/lookbook-assets/js/lookbook.js +108 -108
  32. data/public/lookbook-assets/js/lookbook.js.map +1 -1
  33. metadata +2 -2
@@ -1,14 +1,27 @@
1
- <div id="welcome-message" class="flex flex-col h-full w-full">
2
- <div class="flex flex-col items-center justify-center h-full">
3
- <div class="p-4 text-center mx-auto">
4
- <%= icon :layers, size: 10, class: "opacity-30 mx-auto" %>
5
- <div class="mt-6 text-base opacity-40">
6
- <% if Lookbook.previews.any? %>
7
- <h5>Select a preview to get started</h5>
8
- <% else %>
9
- <p>Create a <a href="https://viewcomponent.org/guide/previews.html" target="_blank">preview file</a> to get started.</p>
10
- <% end %>
1
+ <div id="landing" class="flex flex-col items-center justify-center h-full w-full">
2
+ <div class="p-4 text-center mx-auto">
3
+ <% if Lookbook.previews? %>
4
+ <div id="landing-with-content">
5
+ <h5 class="text-lg opacity-50"><%= config.project_name %></h5>
6
+ <div class="mt-2 italic opacity-30 max-w-[400px]">
7
+ <p>
8
+ Select a preview from the nav to get started.
9
+ </p>
10
+ </div>
11
11
  </div>
12
- </div>
12
+ <% else %>
13
+ <div id="landing-no-content">
14
+ <h5 class="text-lg font-bold opacity-80"><%= config.project_name %></h5>
15
+ <div class="mt-3 italic opacity-40 max-w-[400px]">
16
+ <p>
17
+ Nothing here yet!
18
+ <a class="underline" href="https://viewcomponent.org/guide/previews.html" target="_blank">
19
+ Create a preview
20
+ </a>
21
+ to get started.
22
+ </p>
23
+ </div>
24
+ </div>
25
+ <% end %>
13
26
  </div>
14
27
  </div>
@@ -1,5 +1,5 @@
1
1
  <div class="px-4 md:px-10 pt-8 md:pt-10 overflow-auto scroll-smooth w-full max-h-full pb-12" x-ref="scroller">
2
- <div class="w-full max-w-3xl mx-auto h-full flex flex-col">
2
+ <div class="w-full max-w-screen-lg mx-auto h-full flex flex-col">
3
3
  <% if @page.header? %>
4
4
  <header id="page-header" class="mb-8 prose max-w-none flex-none">
5
5
  <h1><%= @page.title %></h1>
@@ -3,7 +3,7 @@
3
3
  ":class": "($store.inspector.drawer.hidden || #{@drawer_panels.none?}) && '!grid-rows-[1fr] !grid-cols-[1fr]'" do |layout| %>
4
4
 
5
5
  <%= layout.pane class: "flex flex-col h-full overflow-hidden",
6
- x_effect: "forceOrientation = (layoutWidth < $store.inspector.minVerticalSplitWidth) ? 'horizontal' : null" do %>
6
+ "x-effect": "forceOrientation = (layoutWidth < $store.inspector.minVerticalSplitWidth) ? 'horizontal' : null" do %>
7
7
 
8
8
  <%= render_component :toolbar do |toolbar| %>
9
9
  <% toolbar.section ":class": "layoutResizing && 'overflow-hidden'" do %>
@@ -46,7 +46,7 @@
46
46
  tooltip: "Show drawer",
47
47
  "@click": "$store.inspector.drawer.hidden = false",
48
48
  class: "rotate-180",
49
- x_show: "$store.inspector.drawer.hidden",
49
+ "x-show": "$store.inspector.drawer.hidden",
50
50
  cloak: true %>
51
51
  <% end %>
52
52
  <% end %>
@@ -64,7 +64,7 @@
64
64
  <% end %>
65
65
 
66
66
  <%= layout.pane class: "flex flex-col h-full overflow-hidden bg-lookbook-drawer",
67
- x_show: "!$store.inspector.drawer.hidden && #{@drawer_panels.any?}" do %>
67
+ "x-show": "!$store.inspector.drawer.hidden && #{@drawer_panels.any?}" do %>
68
68
 
69
69
  <%= render_component :toolbar do |toolbar| %>
70
70
  <% toolbar.section ":class": "layoutResizing && 'overflow-hidden'" do %>
@@ -84,7 +84,7 @@
84
84
  <% group.button icon: :copy,
85
85
  tooltip: "Copy panel contents",
86
86
  copy: !!panel.copy,
87
- x_show: "$store.inspector.drawer.activeTab === '#{panel.name}'",
87
+ "x-show": "$store.inspector.drawer.activeTab === '#{panel.name}'",
88
88
  cloak: true do %>
89
89
  <%== panel.copy ? panel.copy : "" %>
90
90
  <% end %>
@@ -98,18 +98,18 @@
98
98
  <% group.button icon: :corner_up_right,
99
99
  tooltip: "Move drawer to right",
100
100
  "@click": "switchOrientation",
101
- x_show: "horizontal && layoutWidth > $store.inspector.minVerticalSplitWidth",
101
+ "x-show": "horizontal && layoutWidth > $store.inspector.minVerticalSplitWidth",
102
102
  cloak: true %>
103
103
 
104
104
  <% group.button icon: :corner_up_right,
105
- x_show: "horizontal && layoutWidth <= $store.inspector.minVerticalSplitWidth",
105
+ "x-show": "horizontal && layoutWidth <= $store.inspector.minVerticalSplitWidth",
106
106
  disabled: true,
107
107
  cloak: true %>
108
108
 
109
109
  <% group.button icon: :corner_left_down,
110
110
  tooltip: "Move drawer to bottom",
111
111
  "@click": "switchOrientation",
112
- x_show: "vertical",
112
+ "x-show": "vertical",
113
113
  cloak: true %>
114
114
 
115
115
  <% group.button icon: :x_circle,
@@ -28,6 +28,7 @@ module Lookbook
28
28
 
29
29
  listen: Rails.env.development?,
30
30
  listen_paths: [],
31
+ listen_extensions: ["rb", "html.*"],
31
32
  listen_use_polling: false,
32
33
 
33
34
  cable_mount_path: "/lookbook-cable",
@@ -133,6 +134,12 @@ module Lookbook
133
134
  normalize_paths(@options.listen_paths)
134
135
  end
135
136
 
137
+ def listen_extensions
138
+ @options.listen_extensions += ["rb", "html.*"]
139
+ @options.listen_extensions.uniq!
140
+ @options.listen_extensions
141
+ end
142
+
136
143
  def parser_registry_path
137
144
  absolute_path(@options.parser_registry_path)
138
145
  end
@@ -219,7 +226,8 @@ module Lookbook
219
226
 
220
227
  def normalize_paths(paths)
221
228
  paths.map! { |path| absolute_path(path) }
222
- paths.select { |path| Dir.exist?(path) }
229
+ paths.select! { |path| Dir.exist?(path) }
230
+ paths
223
231
  end
224
232
 
225
233
  def absolute_path(path)
@@ -36,10 +36,18 @@ module Lookbook
36
36
  Preview.all
37
37
  end
38
38
 
39
+ def previews?
40
+ Preview.any?
41
+ end
42
+
39
43
  def pages
40
44
  Page.all
41
45
  end
42
46
 
47
+ def pages?
48
+ Page.any?
49
+ end
50
+
43
51
  def after_initialize(&block)
44
52
  add_hook(:after_initialize, block)
45
53
  end
@@ -112,10 +120,11 @@ module Lookbook
112
120
 
113
121
  if config.lookbook.listen
114
122
  Listen.logger = Lookbook.logger
123
+
115
124
  preview_listener = Listen.to(
116
125
  *config.lookbook.listen_paths,
117
- only: /\.(rb|html.*)$/,
118
- force_polling: Lookbook.config.listen_use_polling
126
+ only: /\.(#{config.lookbook.listen_extensions.join("|")})$/,
127
+ force_polling: config.lookbook.listen_use_polling
119
128
  ) do |modified, added, removed|
120
129
  changes = { modified: modified, added: added, removed: removed }
121
130
  begin
@@ -131,7 +140,7 @@ module Lookbook
131
140
  page_listener = Listen.to(
132
141
  *config.lookbook.page_paths,
133
142
  only: /\.(html.*|md.*)$/,
134
- force_polling: Lookbook.config.listen_use_polling
143
+ force_polling: config.lookbook.listen_use_polling
135
144
  ) do |modified, added, removed|
136
145
  changes = { modified: modified, added: added, removed: removed }
137
146
  Lookbook::Engine.reload_ui(changes)
@@ -166,6 +175,7 @@ module Lookbook
166
175
  class << self
167
176
 
168
177
  def websocket
178
+ return @websocket unless @websocket.nil?
169
179
  if config.lookbook.auto_refresh
170
180
  cable = ActionCable::Server::Configuration.new
171
181
  cable.cable = {adapter: "async"}.with_indifferent_access
@@ -176,9 +186,9 @@ module Lookbook
176
186
  @websocket ||= if Rails.version.to_f >= 6.0
177
187
  ActionCable::Server::Base.new(config: cable)
178
188
  else
179
- websocket ||= ActionCable::Server::Base.new
180
- websocket.config = cable
181
- websocket
189
+ @websocket ||= ActionCable::Server::Base.new
190
+ @websocket.config = cable
191
+ @websocket
182
192
  end
183
193
  end
184
194
  end
@@ -8,10 +8,12 @@ module Lookbook
8
8
  disable_indented_code_blocks: true,
9
9
  strikethrough: true,
10
10
  highlight: true,
11
- with_toc_data: true
11
+ with_toc_data: true,
12
+ lax_spacing: true
12
13
  }
13
14
 
14
15
  def self.render(text)
16
+ text&.gsub!(/\<\!\-\- (BEGIN|END) (.*) \-\-\>/, "")
15
17
  markdown = Redcarpet::Markdown.new(Renderer, Lookbook.config.markdown_options)
16
18
  markdown.render(text).html_safe
17
19
  end
data/lib/lookbook/page.rb CHANGED
@@ -154,6 +154,10 @@ module Lookbook
154
154
  !!find(path)
155
155
  end
156
156
 
157
+ def any?
158
+ all.any?
159
+ end
160
+
157
161
  def all
158
162
  pages, sections =
159
163
  Array(page_paths).flat_map do |dir|
@@ -122,14 +122,15 @@ module Lookbook
122
122
  !!find(path)
123
123
  end
124
124
 
125
- def clear_cache
126
- @previews = nil
125
+ def any?
126
+ all.any?
127
127
  end
128
128
 
129
129
  def all
130
130
  load_previews if preview_files.size > ViewComponent::Preview.descendants.size
131
131
 
132
- return @previews if @previews.present?
132
+ @previews = nil if cache_stale?
133
+ return @previews unless @previews.nil?
133
134
 
134
135
  previews = ViewComponent::Preview.descendants.map do |p|
135
136
  new(p)
@@ -144,15 +145,44 @@ module Lookbook
144
145
  end
145
146
 
146
147
  sorted_previews = previews.compact.sort_by { |preview| [preview.position, preview.label] }
147
- @previews ||= PreviewCollection.new(sorted_previews)
148
+ @previews = PreviewCollection.new(sorted_previews)
149
+ mark_as_cached if Lookbook.config.listen == true
150
+ @previews
148
151
  end
149
152
 
150
153
  def errors
151
154
  @errors ||= []
152
155
  end
153
156
 
157
+ def clear_cache
158
+ cache_dir = File.dirname(cache_marker_path)
159
+ FileUtils.mkdir_p(cache_dir) unless File.exists?(cache_dir)
160
+ File.write(cache_marker_path, Time.now.to_i)
161
+ end
162
+
154
163
  protected
155
164
 
165
+ def cache_marker_path
166
+ Rails.root.join("tmp/cache/lookbook-previews")
167
+ end
168
+
169
+ def cache_stale?
170
+ return false if !File.exists?(cache_marker_path)
171
+ cache_timestamp = File.read(cache_marker_path).to_i
172
+ if @last_cache_timestamp.nil? || cache_timestamp > @last_cache_timestamp
173
+ @last_cache_timestamp = cache_timestamp
174
+ true
175
+ else
176
+ false
177
+ end
178
+ end
179
+
180
+ def mark_as_cached
181
+ cache_dir = File.dirname(cache_marker_path)
182
+ FileUtils.mkdir_p(cache_dir) unless File.exists?(cache_dir)
183
+ File.write(cache_marker_path, Time.now)
184
+ end
185
+
156
186
  def load_previews
157
187
  @errors = []
158
188
  preview_files.each do |file|
@@ -166,7 +196,7 @@ module Lookbook
166
196
  )
167
197
  end
168
198
  end
169
-
199
+
170
200
  def preview_files
171
201
  files = Array(Lookbook.config.preview_paths).map do |preview_path|
172
202
  Dir["#{preview_path}/**/*preview.rb"].map do |path|
@@ -1,3 +1,3 @@
1
1
  module Lookbook
2
- VERSION = "1.0.0.beta.4"
2
+ VERSION = "1.0.0.beta.5"
3
3
  end
@@ -16,7 +16,7 @@ namespace :lookbook do
16
16
 
17
17
  namespace :previews do
18
18
  desc "Preparse the previews"
19
- task :preparse do
19
+ task :preparse => :environment do
20
20
  Lookbook::Engine.parser.parse
21
21
  puts "Lookbook preview parsing complete"
22
22
  end
@@ -1756,14 +1756,14 @@ pre[class*="language-"] {
1756
1756
  margin-top: 2rem;
1757
1757
  }
1758
1758
 
1759
- .mt-6 {
1760
- margin-top: 1.5rem;
1761
- }
1762
-
1763
1759
  .ml-2 {
1764
1760
  margin-left: .5rem;
1765
1761
  }
1766
1762
 
1763
+ .mt-6 {
1764
+ margin-top: 1.5rem;
1765
+ }
1766
+
1767
1767
  .mt-12 {
1768
1768
  margin-top: 3rem;
1769
1769
  }
@@ -1976,12 +1976,12 @@ pre[class*="language-"] {
1976
1976
  max-width: 1024px;
1977
1977
  }
1978
1978
 
1979
- .max-w-\[420px\] {
1980
- max-width: 420px;
1979
+ .max-w-\[400px\] {
1980
+ max-width: 400px;
1981
1981
  }
1982
1982
 
1983
- .max-w-3xl {
1984
- max-width: 48rem;
1983
+ .max-w-\[420px\] {
1984
+ max-width: 420px;
1985
1985
  }
1986
1986
 
1987
1987
  .max-w-none {
@@ -2687,14 +2687,14 @@ pre[class*="language-"] {
2687
2687
  opacity: .3;
2688
2688
  }
2689
2689
 
2690
- .opacity-40 {
2691
- opacity: .4;
2692
- }
2693
-
2694
2690
  .opacity-80 {
2695
2691
  opacity: .8;
2696
2692
  }
2697
2693
 
2694
+ .opacity-40 {
2695
+ opacity: .4;
2696
+ }
2697
+
2698
2698
  .opacity-0 {
2699
2699
  opacity: 0;
2700
2700
  }
@@ -7849,7 +7849,7 @@ function $5439cede634b2921$var$toCamel(s) {
7849
7849
  }
7850
7850
 
7851
7851
 
7852
- var $392c8629951fa7df$exports = {};
7852
+ var $8827b5620b152958$exports = {};
7853
7853
  var $cbd28b10fa9798c7$exports = {};
7854
7854
 
7855
7855
  $parcel$defineInteropFlag($cbd28b10fa9798c7$exports);
@@ -11502,72 +11502,6 @@ function $cbd28b10fa9798c7$export$2e2bcd8739ae039() {
11502
11502
  }
11503
11503
 
11504
11504
 
11505
- var $99486586f6691564$exports = {};
11506
-
11507
- $parcel$defineInteropFlag($99486586f6691564$exports);
11508
-
11509
- $parcel$export($99486586f6691564$exports, "default", () => $99486586f6691564$export$2e2bcd8739ae039);
11510
- function $99486586f6691564$export$2e2bcd8739ae039() {
11511
- return {};
11512
- }
11513
-
11514
-
11515
- var $47a1c62621be0c54$exports = {};
11516
-
11517
- $parcel$defineInteropFlag($47a1c62621be0c54$exports);
11518
-
11519
- $parcel$export($47a1c62621be0c54$exports, "default", () => $47a1c62621be0c54$export$2e2bcd8739ae039);
11520
- var $122263eab94cad08$exports = {};
11521
-
11522
- $parcel$defineInteropFlag($122263eab94cad08$exports);
11523
-
11524
- $parcel$export($122263eab94cad08$exports, "initClipboard", () => $122263eab94cad08$export$c6684e6159b21de3);
11525
- $parcel$export($122263eab94cad08$exports, "default", () => $122263eab94cad08$export$2e2bcd8739ae039);
11526
-
11527
- function $122263eab94cad08$export$c6684e6159b21de3(context = {}) {
11528
- let copyTimeout = null;
11529
- return Object.assign(context, {
11530
- copied: false,
11531
- async copyToClipboard (target = null) {
11532
- let targetEl;
11533
- if (this.$refs.copyTarget) targetEl = this.$refs.copyTarget;
11534
- else if (typeof target === "string") targetEl = document.querySelector(target);
11535
- if (!targetEl) {
11536
- this.warn("Could not find copy target");
11537
- return false;
11538
- }
11539
- const content = $7ae6ae39c2ec9059$export$6cb344a21ca18aec(targetEl.innerText.trim());
11540
- await window.navigator.clipboard.writeText(content);
11541
- this.copied = true;
11542
- if (copyTimeout) clearTimeout(copyTimeout);
11543
- copyTimeout = setTimeout(()=>{
11544
- this.copied = false;
11545
- this.onCopyComplete();
11546
- }, 1000);
11547
- return content;
11548
- },
11549
- onCopyComplete () {}
11550
- });
11551
- }
11552
- function $122263eab94cad08$export$2e2bcd8739ae039() {
11553
- return $122263eab94cad08$export$c6684e6159b21de3({});
11554
- }
11555
-
11556
-
11557
-
11558
- function $47a1c62621be0c54$export$2e2bcd8739ae039() {
11559
- const button = $cbd28b10fa9798c7$export$2e2bcd8739ae039();
11560
- return {
11561
- ...button,
11562
- copied: false,
11563
- init () {
11564
- button.init.bind(this)();
11565
- $122263eab94cad08$export$c6684e6159b21de3(this);
11566
- }
11567
- };
11568
- }
11569
-
11570
-
11571
11505
  var $e398acaded942bbe$exports = {};
11572
11506
 
11573
11507
  $parcel$defineInteropFlag($e398acaded942bbe$exports);
@@ -12466,6 +12400,16 @@ function $e1f51f020443edd4$export$2e2bcd8739ae039(id, embedStore) {
12466
12400
  }
12467
12401
 
12468
12402
 
12403
+ var $99486586f6691564$exports = {};
12404
+
12405
+ $parcel$defineInteropFlag($99486586f6691564$exports);
12406
+
12407
+ $parcel$export($99486586f6691564$exports, "default", () => $99486586f6691564$export$2e2bcd8739ae039);
12408
+ function $99486586f6691564$export$2e2bcd8739ae039() {
12409
+ return {};
12410
+ }
12411
+
12412
+
12469
12413
  var $e9904a14dabf652d$exports = {};
12470
12414
 
12471
12415
  $parcel$defineInteropFlag($e9904a14dabf652d$exports);
@@ -12491,36 +12435,74 @@ function $e9904a14dabf652d$export$2e2bcd8739ae039(store) {
12491
12435
  }
12492
12436
 
12493
12437
 
12494
- var $36506012e0c6e9e3$exports = {};
12438
+ var $47a1c62621be0c54$exports = {};
12495
12439
 
12496
- $parcel$defineInteropFlag($36506012e0c6e9e3$exports);
12440
+ $parcel$defineInteropFlag($47a1c62621be0c54$exports);
12497
12441
 
12498
- $parcel$export($36506012e0c6e9e3$exports, "default", () => $36506012e0c6e9e3$export$2e2bcd8739ae039);
12499
- function $36506012e0c6e9e3$export$2e2bcd8739ae039(iconName) {
12500
- return {
12501
- iconName: iconName
12502
- };
12503
- }
12442
+ $parcel$export($47a1c62621be0c54$exports, "default", () => $47a1c62621be0c54$export$2e2bcd8739ae039);
12443
+ var $122263eab94cad08$exports = {};
12504
12444
 
12445
+ $parcel$defineInteropFlag($122263eab94cad08$exports);
12505
12446
 
12506
- var $b63b9c6d236b3f65$exports = {};
12447
+ $parcel$export($122263eab94cad08$exports, "initClipboard", () => $122263eab94cad08$export$c6684e6159b21de3);
12448
+ $parcel$export($122263eab94cad08$exports, "default", () => $122263eab94cad08$export$2e2bcd8739ae039);
12507
12449
 
12508
- $parcel$defineInteropFlag($b63b9c6d236b3f65$exports);
12450
+ function $122263eab94cad08$export$c6684e6159b21de3(context = {}) {
12451
+ let copyTimeout = null;
12452
+ return Object.assign(context, {
12453
+ copied: false,
12454
+ async copyToClipboard (target = null) {
12455
+ let targetEl;
12456
+ if (this.$refs.copyTarget) targetEl = this.$refs.copyTarget;
12457
+ else if (typeof target === "string") targetEl = document.querySelector(target);
12458
+ if (!targetEl) {
12459
+ this.warn("Could not find copy target");
12460
+ return false;
12461
+ }
12462
+ const content = $7ae6ae39c2ec9059$export$6cb344a21ca18aec(targetEl.innerText.trim());
12463
+ await window.navigator.clipboard.writeText(content);
12464
+ this.copied = true;
12465
+ if (copyTimeout) clearTimeout(copyTimeout);
12466
+ copyTimeout = setTimeout(()=>{
12467
+ this.copied = false;
12468
+ this.onCopyComplete();
12469
+ }, 1000);
12470
+ return content;
12471
+ },
12472
+ onCopyComplete () {}
12473
+ });
12474
+ }
12475
+ function $122263eab94cad08$export$2e2bcd8739ae039() {
12476
+ return $122263eab94cad08$export$c6684e6159b21de3({});
12477
+ }
12509
12478
 
12510
- $parcel$export($b63b9c6d236b3f65$exports, "default", () => $b63b9c6d236b3f65$export$2e2bcd8739ae039);
12511
12479
 
12512
- function $b63b9c6d236b3f65$export$2e2bcd8739ae039() {
12480
+
12481
+ function $47a1c62621be0c54$export$2e2bcd8739ae039() {
12482
+ const button = $cbd28b10fa9798c7$export$2e2bcd8739ae039();
12513
12483
  return {
12514
- narrow: false,
12484
+ ...button,
12485
+ copied: false,
12515
12486
  init () {
12516
- $9930d46698775b42$export$a2214cc2adb2dc44(this.$el, ({ width: width })=>{
12517
- this.narrow = width < 450;
12518
- });
12487
+ button.init.bind(this)();
12488
+ $122263eab94cad08$export$c6684e6159b21de3(this);
12519
12489
  }
12520
12490
  };
12521
12491
  }
12522
12492
 
12523
12493
 
12494
+ var $36506012e0c6e9e3$exports = {};
12495
+
12496
+ $parcel$defineInteropFlag($36506012e0c6e9e3$exports);
12497
+
12498
+ $parcel$export($36506012e0c6e9e3$exports, "default", () => $36506012e0c6e9e3$export$2e2bcd8739ae039);
12499
+ function $36506012e0c6e9e3$export$2e2bcd8739ae039(iconName) {
12500
+ return {
12501
+ iconName: iconName
12502
+ };
12503
+ }
12504
+
12505
+
12524
12506
  var $d92d9d5253f84566$exports = {};
12525
12507
 
12526
12508
  $parcel$defineInteropFlag($d92d9d5253f84566$exports);
@@ -12563,28 +12545,19 @@ function $d92d9d5253f84566$export$2e2bcd8739ae039(store) {
12563
12545
  }
12564
12546
 
12565
12547
 
12566
- var $a87dacf5139b5e2f$exports = {};
12548
+ var $b63b9c6d236b3f65$exports = {};
12567
12549
 
12568
- $parcel$defineInteropFlag($a87dacf5139b5e2f$exports);
12550
+ $parcel$defineInteropFlag($b63b9c6d236b3f65$exports);
12569
12551
 
12570
- $parcel$export($a87dacf5139b5e2f$exports, "default", () => $a87dacf5139b5e2f$export$2e2bcd8739ae039);
12571
- function $a87dacf5139b5e2f$export$2e2bcd8739ae039(store) {
12552
+ $parcel$export($b63b9c6d236b3f65$exports, "default", () => $b63b9c6d236b3f65$export$2e2bcd8739ae039);
12553
+
12554
+ function $b63b9c6d236b3f65$export$2e2bcd8739ae039() {
12572
12555
  return {
12573
- get store () {
12574
- return store || this;
12575
- },
12576
- get id () {
12577
- return this.$root.id;
12578
- },
12579
- get panels () {
12580
- return Array.from(this.$refs.panels.children);
12581
- },
12582
- isActive (el) {
12583
- return this.store.activeTab === this._getRef(el);
12584
- },
12585
- // protected
12586
- _getRef (el) {
12587
- return el.getAttribute("x-ref");
12556
+ narrow: false,
12557
+ init () {
12558
+ $9930d46698775b42$export$a2214cc2adb2dc44(this.$el, ({ width: width })=>{
12559
+ this.narrow = width < 450;
12560
+ });
12588
12561
  }
12589
12562
  };
12590
12563
  }
@@ -13143,6 +13116,33 @@ function $506dabb2bf255b38$var$sizeSplits(sizes) {
13143
13116
  }
13144
13117
 
13145
13118
 
13119
+ var $a87dacf5139b5e2f$exports = {};
13120
+
13121
+ $parcel$defineInteropFlag($a87dacf5139b5e2f$exports);
13122
+
13123
+ $parcel$export($a87dacf5139b5e2f$exports, "default", () => $a87dacf5139b5e2f$export$2e2bcd8739ae039);
13124
+ function $a87dacf5139b5e2f$export$2e2bcd8739ae039(store) {
13125
+ return {
13126
+ get store () {
13127
+ return store || this;
13128
+ },
13129
+ get id () {
13130
+ return this.$root.id;
13131
+ },
13132
+ get panels () {
13133
+ return Array.from(this.$refs.panels.children);
13134
+ },
13135
+ isActive (el) {
13136
+ return this.store.activeTab === this._getRef(el);
13137
+ },
13138
+ // protected
13139
+ _getRef (el) {
13140
+ return el.getAttribute("x-ref");
13141
+ }
13142
+ };
13143
+ }
13144
+
13145
+
13146
13146
  var $0db07828cadc68e0$exports = {};
13147
13147
 
13148
13148
  $parcel$defineInteropFlag($0db07828cadc68e0$exports);
@@ -13364,18 +13364,18 @@ function $6d64716f0b34fdf4$export$2e2bcd8739ae039(store) {
13364
13364
  }
13365
13365
 
13366
13366
 
13367
- $392c8629951fa7df$exports = {
13367
+ $8827b5620b152958$exports = {
13368
13368
  "button": $cbd28b10fa9798c7$exports,
13369
- "code": $99486586f6691564$exports,
13370
- "copy_button": $47a1c62621be0c54$exports,
13371
13369
  "dimensions_display": $e398acaded942bbe$exports,
13372
13370
  "embed": $e1f51f020443edd4$exports,
13371
+ "code": $99486586f6691564$exports,
13373
13372
  "filter": $e9904a14dabf652d$exports,
13373
+ "copy_button": $47a1c62621be0c54$exports,
13374
13374
  "icon": $36506012e0c6e9e3$exports,
13375
- "params_editor": $b63b9c6d236b3f65$exports,
13376
13375
  "nav": $d92d9d5253f84566$exports,
13377
- "tab_panels": $a87dacf5139b5e2f$exports,
13376
+ "params_editor": $b63b9c6d236b3f65$exports,
13378
13377
  "split_layout": $506dabb2bf255b38$exports,
13378
+ "tab_panels": $a87dacf5139b5e2f$exports,
13379
13379
  "tabs": $0db07828cadc68e0$exports,
13380
13380
  "viewport": $6d64716f0b34fdf4$exports
13381
13381
  };
@@ -13524,7 +13524,7 @@ $caa9439642c6336c$export$2e2bcd8739ae039.store("settings", $96e0343bbb13096b$exp
13524
13524
  // Components
13525
13525
  $caa9439642c6336c$export$2e2bcd8739ae039.data("app", $d709d0f4027033b2$export$2e2bcd8739ae039);
13526
13526
  [
13527
- $392c8629951fa7df$exports,
13527
+ $8827b5620b152958$exports,
13528
13528
  $e4eab7529959b73b$exports,
13529
13529
  $4979d2d897a1c01f$exports
13530
13530
  ].forEach((scripts)=>{