lookbook 1.0.0 → 1.0.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5617d397419ae8b9e95fa6c53ceb94dd3a7dffe83ea1fae0f643f17f6c15b995
4
- data.tar.gz: 1fb037740def1192fa5aa9d0c076419dc06ed629996e7cc82ed741e7aefa000f
3
+ metadata.gz: 741dcc6296e79ba365a64945fb70b7ba7e8b8df2eee9e83e72ef4e32c619b2fc
4
+ data.tar.gz: aa5d6647abc755e54b37837847f5929803eba7545272e6c33b887f2f7c5ef54e
5
5
  SHA512:
6
- metadata.gz: a5710f8a40f7594bc4d9ac3347ca8c04102f708b50c21d96d1695b26ab4d6ccc23436e1288cea7d43516264260c31f091530cb15d3ea144707d2ae280442c333
7
- data.tar.gz: 1bfdcf6ce5bb68e2af399b5920ec821a73057e77aaf4732216da498b1745c5c8eb15b220ce56115dd8c14d757febe75315c2620c6c6c929b3e973d001a5b7797
6
+ metadata.gz: d19a7567121be4be2c010f61d9c7d62ecff33d53d034a138124516883cbb190102aa0f8c9e9457a0aaf1d33c6d9d5250d3a60ad507af9973348f3c08c03c26bb
7
+ data.tar.gz: 8cc77046623125e88550cfd7ff4dd626a2deda064fee6cf3171d5a5cd59bed8ec2277e8091d48d995763db7b3fe66c730e99bde1380a4e5703986e7cc0808ff4
data/README.md CHANGED
@@ -1,12 +1,12 @@
1
1
  # Lookbook
2
2
 
3
3
  <div>
4
- <a href="https://rubygems.org/gems/lookbook"><img src="https://img.shields.io/gem/v/lookbook?include_prereleases" alt="Gem version"></a>
4
+ <a href="https://rubygems.org/gems/lookbook"><img src="https://img.shields.io/gem/v/lookbook" alt="Gem version"></a>
5
5
  <a href="https://github.com/allmarkedup/lookbook/actions/workflows/ci.yml"><img src="https://github.com/allmarkedup/lookbook/actions/workflows/ci.yml/badge.svg?branch=main" alt="CI status"></a>
6
6
  </div>
7
7
  <br>
8
8
 
9
- A tool to help develop, test and document [ViewComponents](https://viewcomponent.org/) in isolation.
9
+ A tool to help browse, develop, test & document [ViewComponents](https://viewcomponent.org/) in Ruby on Rails apps.
10
10
 
11
11
  ## Documentation
12
12
 
@@ -17,9 +17,9 @@ A tool to help develop, test and document [ViewComponents](https://viewcomponent
17
17
 
18
18
  ## Demo
19
19
 
20
- **Online Demo:** [https://lookbook-demo-app-v1-0-beta.herokuapp.com/lookbook](https://lookbook-demo-app-v1-0-beta.herokuapp.com/lookbook)
20
+ **Online Demo:** [https://lookbook-demo-app.herokuapp.com/lookbook](https://lookbook-demo-app.herokuapp.com/lookbook)
21
21
 
22
- [![Lookbook UI](.github/assets/lookbook_screenshot_v1.0_beta.png)](https://lookbook-demo-app-v1-0-beta.herokuapp.com/lookbook/)
22
+ [![Lookbook UI](.github/assets/lookbook_screenshot_v1.0_beta.png)](https://lookbook-demo-app.herokuapp.com/lookbook/)
23
23
 
24
24
 
25
25
  ## Development
@@ -1,19 +1,19 @@
1
- <% if @example.present? %>
1
+ <% if @target.present? %>
2
2
  <%= render_component_tag class: "not-prose border-b border-lookbook-divider rounded-sm overflow-hidden", "@navigation:start.window": "cleanup" do %>
3
3
 
4
4
  <%= render_component :toolbar, class: "border border-b-0 border-lookbook-divider" do |toolbar| %>
5
5
  <% toolbar.section padded: true do %>
6
6
  <h3>
7
- <%= @example.preview.label %> (<%= @example.label %>)
7
+ <%= @target.preview.label %> (<%= @target.label %>)
8
8
  </h3>
9
9
  <% end %>
10
10
  <% toolbar.section align: :right, divide: :left do %>
11
11
  <%= render_component :button_group do |group| %>
12
12
  <% group.button icon: :eye,
13
- href: lookbook_inspect_path(@example.path, @params),
13
+ href: lookbook_inspect_path(@target.path, @params),
14
14
  tooltip: "View in Inspector" %>
15
15
  <% group.button icon: :external_link,
16
- href: lookbook_preview_path(@example.path, @params),
16
+ href: lookbook_preview_path(@target.path, @params),
17
17
  tooltip: "Open in new window",
18
18
  target: "_blank" %>
19
19
  <% end %>
@@ -28,7 +28,7 @@
28
28
  @viewport:resize-complete="resizeIframe"
29
29
  @tabs:change.window="resizeIframe">
30
30
  <%= render_component :viewport,
31
- src: lookbook_preview_path(@example.path, @params.merge(lookbook_embed: true)),
31
+ src: lookbook_preview_path(@target.path, @params.merge(lookbook_embed: true)),
32
32
  alpine_data: "store",
33
33
  resize_height: false,
34
34
  max_height: @max_height,
@@ -2,7 +2,7 @@ module Lookbook
2
2
  class Embed::Component < Lookbook::BaseComponent
3
3
  def initialize(id:, example:, params: {}, opts: {}, max_height: nil, **html_attrs)
4
4
  @id = id
5
- @example = example
5
+ @target = example
6
6
  @params = params
7
7
  @opts = opts
8
8
  @max_height = max_height
@@ -46,11 +46,11 @@
46
46
  <span class="opacity-70 mr-1">Lookbook</span>
47
47
  <span class="mr-6">v<%= Lookbook::VERSION %></span>
48
48
  <div class="flex items-center space-x-2">
49
- <!-- a href="https://github.com/allmarkedup/lookbook" target="_blank" class="ml-auto opacity-70" title="Documentation">
50
- <%= icon :book, size: 3 %>
51
- </a -->
49
+ <a href="https://lookbook.build/guide" target="_blank" class="ml-auto opacity-70" title="Documentation">
50
+ <%= icon :book, size: 3 %>
51
+ </a>
52
52
  <a href="https://github.com/allmarkedup/lookbook" target="_blank" class="ml-auto opacity-70" title="Github">
53
- <%= icon :github, size: 3 %>
53
+ <%= icon :github, size: 3 %>
54
54
  </a>
55
55
  </div>
56
56
  </div>
@@ -1,4 +1,4 @@
1
- <%= render_component_tag :i, style: "height: #{size_rems}; width: #{size_rems}" do %>
1
+ <%= render_component_tag :i, style: "height: #{size_rems}; width: #{size_rems}; #{@html_attrs[:style]}" do %>
2
2
  <svg>
3
3
  <use :href="`/lookbook-assets/feather-sprite.svg#${iconName}`" x-cloak />
4
4
  </svg>
@@ -25,9 +25,8 @@ module Lookbook
25
25
  css_parser.each_selector do |selector, declarations, specificity|
26
26
  @panel_styles += "##{id} #{selector} { #{declarations} }\n"
27
27
  end
28
- style_tag.unlink
29
28
  end
30
- @panel_html = panel_dom.to_html.html_safe
29
+ @panel_html = content.gsub(/<style(?:\s[^>]*)?>.*<\/style>/, "").html_safe
31
30
  end
32
31
  end
33
32
  @panel_html ||= content
@@ -13,7 +13,7 @@ module Lookbook
13
13
  before_action :set_params
14
14
 
15
15
  def preview
16
- if @example
16
+ if @target
17
17
  begin
18
18
  opts = {layout: @preview.layout}
19
19
  if params[:lookbook_embed] == "true"
@@ -32,7 +32,7 @@ module Lookbook
32
32
  end
33
33
 
34
34
  def show
35
- if @example
35
+ if @target
36
36
  begin
37
37
  @main_panels = main_panels
38
38
  @drawer_panels = drawer_panels
@@ -52,9 +52,9 @@ module Lookbook
52
52
  private
53
53
 
54
54
  def lookup_entities
55
- @example = Lookbook.previews.find_example(params[:path])
56
- if @example.present?
57
- @preview = @example.preview
55
+ @target = Lookbook.previews.find_example(params[:path])
56
+ if @target.present?
57
+ @preview = @target.preview
58
58
  if params[:path] == @preview&.lookup_path
59
59
  redirect_to lookbook_inspect_path "#{params[:path]}/#{@preview.default_example.name}"
60
60
  end
@@ -85,17 +85,17 @@ module Lookbook
85
85
  end
86
86
 
87
87
  def target_examples
88
- @example.type == :group ? @example.examples : [@example]
88
+ @target.type == :group ? @target.examples : [@target]
89
89
  end
90
90
 
91
91
  def set_title
92
- @title = @example.present? ? [@example&.label, @preview&.label].compact.join(" :: ") : "Not found"
92
+ @title = @target.present? ? [@target&.label, @preview&.label].compact.join(" :: ") : "Not found"
93
93
  end
94
94
 
95
95
  def set_params
96
- if @example
96
+ if @target
97
97
  # cast known params to type
98
- @example.params.each do |param|
98
+ @target.params.each do |param|
99
99
  if preview_controller.params.key?(param[:name])
100
100
  preview_controller.params[param[:name]] = Lookbook::Params.cast(preview_controller.params[param[:name]], param[:type])
101
101
  end
@@ -103,7 +103,7 @@ module Lookbook
103
103
  # set display and data params
104
104
  preview_controller.params.merge!({
105
105
  lookbook: {
106
- display: @example.display_params,
106
+ display: @target.display_params,
107
107
  data: Lookbook.data
108
108
  }
109
109
  })
@@ -113,7 +113,7 @@ module Lookbook
113
113
  def preview_params
114
114
  preview_controller.params.permit!
115
115
  preview_controller.params.to_h.select do |key, value|
116
- !!@example.params.find { |param| param[:name] == key }
116
+ !!@target.params.find { |param| param[:name] == key }
117
117
  end
118
118
  end
119
119
 
@@ -125,12 +125,7 @@ module Lookbook
125
125
  path: params[:path]
126
126
  }
127
127
 
128
- example = @example
129
128
  preview = @preview
130
- preview.define_singleton_method(:params, proc {
131
- example.params
132
- })
133
-
134
129
  examples = target_examples.map do |example|
135
130
  render_args = @preview.render_args(example.name, params: preview_controller.params)
136
131
  has_template = render_args[:template] != "view_components/preview"
@@ -144,11 +139,18 @@ module Lookbook
144
139
  example
145
140
  end
146
141
 
142
+ target = @target.type == :group ? @target : examples.find { |e| e.lookup_path == @target.lookup_path }
143
+
144
+ preview.define_singleton_method(:params, proc {
145
+ target.params
146
+ })
147
+
147
148
  @inspector_data ||= Lookbook::Store.new({
148
149
  context: context_data,
149
150
  preview: preview,
150
151
  examples: examples,
151
- example: example,
152
+ example: examples.first,
153
+ target: target,
152
154
  data: Lookbook.data,
153
155
  app: Lookbook
154
156
  })
@@ -198,7 +200,7 @@ module Lookbook
198
200
  {
199
201
  file_path: @preview&.full_path,
200
202
  line_number: 0,
201
- source_code: @example&.source
203
+ source_code: @target&.source
202
204
  }
203
205
  elsif exception.is_a?(ActionView::Template::Error) & exception.message.include?("implements a reserved method")
204
206
  message_parts = exception.message.split("\n").first.split
@@ -6,6 +6,10 @@ module Lookbook
6
6
  render Lookbook::Icon::Component.new(name: name, **attrs)
7
7
  end
8
8
 
9
+ def code(**attrs, &block)
10
+ render Lookbook::Code::Component.new(**attrs), &block
11
+ end
12
+
9
13
  def render_component(ref, **attrs, &block)
10
14
  klass = component_class(ref)
11
15
  comp = attrs.key?(:content) ? klass.new(**attrs.except(:content)).with_content(attrs[:content]) : klass.new(**attrs)
@@ -7,7 +7,7 @@
7
7
  <% if Lookbook.previews? %>
8
8
  <p>Select a preview from the nav to get started.</p>
9
9
  <% else %>
10
- <p><a class="underline" href="https://beta.lookbook.build/guide/previews" target="_blank">Create a preview</a> to get started.</p>
10
+ <p><a class="underline" href="https://lookbook.build/guide/previews" target="_blank">Create a preview</a> to get started.</p>
11
11
  <% end %>
12
12
  </div>
13
13
  </div>
@@ -29,7 +29,7 @@
29
29
  <% group.button icon: :code,
30
30
  tooltip: "Copy page embed code",
31
31
  copy: true do %>
32
- &lt;%= embed <%= @preview.preview_class %>, :<%= @example.name %>, params: <%= request.query_parameters.deep_symbolize_keys.to_s %> %&gt;
32
+ &lt;%= embed <%= @preview.preview_class %>, :<%= @target.name %>, params: <%= request.query_parameters.deep_symbolize_keys.to_s %> %&gt;
33
33
  <% end %>
34
34
  <% end %>
35
35
 
@@ -38,7 +38,7 @@
38
38
  "@click.stop": "startSpin(); $dispatch('viewport:reload'); stopSpin(500);" %>
39
39
 
40
40
  <% group.button icon: :external_link,
41
- href: lookbook_preview_path(@example.lookup_path, request.query_parameters),
41
+ href: lookbook_preview_path(@target.lookup_path, request.query_parameters),
42
42
  tooltip: "Open preview in new window",
43
43
  target: "_blank" %>
44
44
 
data/config/routes.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  Lookbook::Engine.routes.draw do
2
- if Lookbook.config.auto_refresh
2
+ if Lookbook::Engine.websocket?
3
3
  mount Lookbook::Engine.websocket => Lookbook.config.cable_mount_path
4
4
  end
5
5
 
@@ -11,6 +11,10 @@ module Lookbook
11
11
  name.underscore
12
12
  end
13
13
 
14
+ def rel_path
15
+ Pathname.new("#{path}.rb")
16
+ end
17
+
14
18
  def full_path
15
19
  Pathname.new("#{Lookbook.config.components_path}/#{path}.rb")
16
20
  end
@@ -1,7 +1,6 @@
1
1
  require "view_component"
2
2
  require "action_cable/engine"
3
3
  require "listen"
4
- require "rake"
5
4
 
6
5
  module Lookbook
7
6
  autoload :Config, "lookbook/config"
@@ -107,7 +106,7 @@ module Lookbook
107
106
  end
108
107
  else
109
108
  # Fallback for older Rails versions - don't start listeners if running in a rake task.
110
- unless File.basename($0) == "rake" || Rake.application.top_level_tasks.any?
109
+ unless Lookbook::Engine.prevent_listening?
111
110
  init_listeners
112
111
  end
113
112
  end
@@ -127,69 +126,75 @@ module Lookbook
127
126
  Lookbook::Engine.run_hooks(:after_initialize)
128
127
  end
129
128
 
130
- def init_listeners
131
- return unless config.lookbook.listen == true
132
- Listen.logger = Lookbook.logger
133
- Lookbook.logger.info "Initializing listeners"
134
-
135
- preview_listener = Listen.to(
136
- *config.lookbook.listen_paths,
137
- only: /\.(#{config.lookbook.listen_extensions.join("|")})$/,
138
- force_polling: config.lookbook.listen_use_polling
139
- ) do |modified, added, removed|
140
- changes = {modified: modified, added: added, removed: removed}
141
- begin
142
- Lookbook::Engine.parser.parse
143
- rescue
144
- end
145
- Lookbook::Preview.clear_cache
146
- Lookbook::Engine.reload_ui(changes)
147
- Lookbook::Engine.run_hooks(:after_change, changes)
148
- end
149
- Lookbook::Engine.register_listener(preview_listener)
150
-
151
- page_listener = Listen.to(
152
- *config.lookbook.page_paths,
153
- only: /\.(html.*|md.*)$/,
154
- force_polling: config.lookbook.listen_use_polling
155
- ) do |modified, added, removed|
156
- changes = {modified: modified, added: added, removed: removed}
157
- Lookbook::Engine.reload_ui(changes)
158
- Lookbook::Engine.run_hooks(:after_change, changes)
159
- end
160
- Lookbook::Engine.register_listener(page_listener)
161
- end
162
-
163
129
  at_exit do
164
130
  if Lookbook::Engine.listeners.any?
165
131
  Lookbook.logger.debug "Stopping listeners"
166
- Lookbook::Engine.listeners.each { |listener| listener.stop }
132
+ Lookbook::Engine.stop_listeners
167
133
  end
168
134
  Lookbook::Engine.run_hooks(:before_exit)
169
135
  end
170
136
 
171
137
  class << self
138
+ def init_listeners
139
+ config = Lookbook.config
140
+ return unless config.listen == true
141
+ Listen.logger = Lookbook.logger
142
+
143
+ preview_listener = Listen.to(
144
+ *config.listen_paths,
145
+ only: /\.(#{config.listen_extensions.join("|")})$/,
146
+ force_polling: config.listen_use_polling
147
+ ) do |modified, added, removed|
148
+ changes = {modified: modified, added: added, removed: removed}
149
+ begin
150
+ parser.parse
151
+ rescue
152
+ end
153
+ Lookbook::Preview.clear_cache
154
+ reload_ui(changes)
155
+ run_hooks(:after_change, changes)
156
+ end
157
+ register_listener(preview_listener)
158
+
159
+ page_listener = Listen.to(
160
+ *config.page_paths,
161
+ only: /\.(html.*|md.*)$/,
162
+ force_polling: config.listen_use_polling
163
+ ) do |modified, added, removed|
164
+ changes = {modified: modified, added: added, removed: removed}
165
+ reload_ui(changes)
166
+ run_hooks(:after_change, changes)
167
+ end
168
+ register_listener(page_listener)
169
+ end
170
+
172
171
  def websocket
172
+ config = Lookbook.config
173
173
  return @websocket unless @websocket.nil?
174
- if config.lookbook.auto_refresh
175
- cable = ActionCable::Server::Configuration.new
176
- cable.cable = {adapter: "async"}.with_indifferent_access
177
- cable.mount_path = config.lookbook.cable_mount_path
178
- cable.connection_class = -> { Lookbook::Connection }
179
- cable.logger = config.lookbook.cable_logger
180
-
181
- @websocket ||= if Rails.version.to_f >= 6.0
182
- ActionCable::Server::Base.new(config: cable)
183
- else
184
- ws = ActionCable::Server::Base.new
185
- ws.config = cable
186
- ws
187
- end
174
+ return unless config.auto_refresh == true
175
+ Lookbook.logger.info "Initializing websocket"
176
+
177
+ cable = ActionCable::Server::Configuration.new
178
+ cable.cable = {adapter: "async"}.with_indifferent_access
179
+ cable.mount_path = config.cable_mount_path
180
+ cable.connection_class = -> { Lookbook::Connection }
181
+ cable.logger = config.cable_logger
182
+
183
+ @websocket ||= if Gem::Version.new(Rails.version) >= Gem::Version.new(6.0)
184
+ ActionCable::Server::Base.new(config: cable)
185
+ else
186
+ ws = ActionCable::Server::Base.new
187
+ ws.config = cable
188
+ ws
188
189
  end
189
190
  end
190
191
 
191
192
  def websocket_mount_path
192
- "#{mounted_path}#{config.lookbook.cable_mount_path}" if websocket
193
+ "#{mounted_path}#{config.lookbook.cable_mount_path}" if websocket?
194
+ end
195
+
196
+ def websocket?
197
+ websocket.present?
193
198
  end
194
199
 
195
200
  def mounted_path
@@ -222,6 +227,10 @@ module Lookbook
222
227
  @listeners ||= []
223
228
  end
224
229
 
230
+ def stop_listeners
231
+ listeners.each { |listener| listener.stop }
232
+ end
233
+
225
234
  def run_hooks(event_name, *args)
226
235
  config.lookbook.hooks[event_name].each do |hook|
227
236
  hook.call(Lookbook, *args)
@@ -232,6 +241,18 @@ module Lookbook
232
241
  websocket&.broadcast("reload", changed)
233
242
  end
234
243
 
244
+ def prevent_listening?
245
+ Rails.env.test? || running_in_rake_task?
246
+ end
247
+
248
+ def running_in_rake_task?
249
+ if defined?(Rake) && Rake.respond_to?(:application)
250
+ File.basename($0) == "rake" || Rake.application.top_level_tasks.any?
251
+ else
252
+ false
253
+ end
254
+ end
255
+
235
256
  attr_reader :preview_controller
236
257
  end
237
258
  end
data/lib/lookbook/page.rb CHANGED
@@ -13,7 +13,7 @@ module Lookbook
13
13
  :data
14
14
  ]
15
15
 
16
- attr_reader :errors
16
+ attr_reader :errors, :rel_path
17
17
  attr_accessor :sections
18
18
 
19
19
  def initialize(path, base_path)
@@ -23,8 +23,8 @@ module Lookbook
23
23
  @errors = []
24
24
  @sections = []
25
25
  @page_name = remove_position_prefix(path_name)
26
- rel_path = @pathname.relative_path_from(@base_path)
27
- page_path = rel_path.dirname.to_s == "." ? @page_name : "#{rel_path.dirname}/#{@page_name}"
26
+ @rel_path = @pathname.relative_path_from(@base_path)
27
+ page_path = @rel_path.dirname.to_s == "." ? @page_name : "#{@rel_path.dirname}/#{@page_name}"
28
28
  super(page_path)
29
29
  end
30
30
 
@@ -33,7 +33,7 @@ module Lookbook
33
33
  end
34
34
 
35
35
  def full_path
36
- Rails.root.join(@pathname.to_s)
36
+ Pathname.new Rails.root.join(@pathname.to_s)
37
37
  end
38
38
 
39
39
  def name
@@ -61,11 +61,15 @@ module Lookbook
61
61
  examples.first
62
62
  end
63
63
 
64
+ def rel_path
65
+ "#{name.underscore}.rb"
66
+ end
67
+
64
68
  def full_path
65
69
  base_path = Array(Lookbook.config.preview_paths).detect do |preview_path|
66
- Dir["#{preview_path}/#{name.underscore}.rb"].first
70
+ Dir["#{preview_path}/#{rel_path}"].first
67
71
  end
68
- Pathname.new(Dir["#{base_path}/#{name.underscore}.rb"].first)
72
+ Pathname.new(Dir["#{base_path}/#{rel_path}"].first)
69
73
  end
70
74
 
71
75
  def url_path
@@ -1,3 +1,3 @@
1
1
  module Lookbook
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.3"
3
3
  end
@@ -7701,7 +7701,7 @@ function $5439cede634b2921$var$toCamel(s) {
7701
7701
  }
7702
7702
 
7703
7703
 
7704
- var $6ff830cc0b6487a5$exports = {};
7704
+ var $6d30a58562f349fe$exports = {};
7705
7705
  var $cbd28b10fa9798c7$exports = {};
7706
7706
 
7707
7707
  $parcel$defineInteropFlag($cbd28b10fa9798c7$exports);
@@ -11364,39 +11364,6 @@ function $99486586f6691564$export$2e2bcd8739ae039() {
11364
11364
  }
11365
11365
 
11366
11366
 
11367
- var $e398acaded942bbe$exports = {};
11368
-
11369
- $parcel$defineInteropFlag($e398acaded942bbe$exports);
11370
-
11371
- $parcel$export($e398acaded942bbe$exports, "default", () => $e398acaded942bbe$export$2e2bcd8739ae039);
11372
-
11373
- function $e398acaded942bbe$export$2e2bcd8739ae039(targetSelector) {
11374
- return {
11375
- width: 0,
11376
- height: 0,
11377
- resizing: false,
11378
- target: null,
11379
- init () {
11380
- this.target = document.querySelector(targetSelector);
11381
- if (this.target) {
11382
- this.width = Math.round(this.target.clientWidth);
11383
- this.height = Math.round(this.target.clientHeight);
11384
- this.createObserver();
11385
- }
11386
- },
11387
- createObserver () {
11388
- if (this.target) this.observer = (0, $9930d46698775b42$export$a2214cc2adb2dc44)(document.querySelector(targetSelector), ({ width: width , height: height })=>{
11389
- this.width = width;
11390
- this.height = height;
11391
- });
11392
- },
11393
- tearDown () {
11394
- if (this.observer) this.observer.disconnect();
11395
- }
11396
- };
11397
- }
11398
-
11399
-
11400
11367
  var $47a1c62621be0c54$exports = {};
11401
11368
 
11402
11369
  $parcel$defineInteropFlag($47a1c62621be0c54$exports);
@@ -12318,6 +12285,39 @@ function $e1f51f020443edd4$export$2e2bcd8739ae039(id, embedStore) {
12318
12285
  }
12319
12286
 
12320
12287
 
12288
+ var $e398acaded942bbe$exports = {};
12289
+
12290
+ $parcel$defineInteropFlag($e398acaded942bbe$exports);
12291
+
12292
+ $parcel$export($e398acaded942bbe$exports, "default", () => $e398acaded942bbe$export$2e2bcd8739ae039);
12293
+
12294
+ function $e398acaded942bbe$export$2e2bcd8739ae039(targetSelector) {
12295
+ return {
12296
+ width: 0,
12297
+ height: 0,
12298
+ resizing: false,
12299
+ target: null,
12300
+ init () {
12301
+ this.target = document.querySelector(targetSelector);
12302
+ if (this.target) {
12303
+ this.width = Math.round(this.target.clientWidth);
12304
+ this.height = Math.round(this.target.clientHeight);
12305
+ this.createObserver();
12306
+ }
12307
+ },
12308
+ createObserver () {
12309
+ if (this.target) this.observer = (0, $9930d46698775b42$export$a2214cc2adb2dc44)(document.querySelector(targetSelector), ({ width: width , height: height })=>{
12310
+ this.width = width;
12311
+ this.height = height;
12312
+ });
12313
+ },
12314
+ tearDown () {
12315
+ if (this.observer) this.observer.disconnect();
12316
+ }
12317
+ };
12318
+ }
12319
+
12320
+
12321
12321
  var $e9904a14dabf652d$exports = {};
12322
12322
 
12323
12323
  $parcel$defineInteropFlag($e9904a14dabf652d$exports);
@@ -13210,12 +13210,12 @@ function $6d64716f0b34fdf4$export$2e2bcd8739ae039(store) {
13210
13210
  }
13211
13211
 
13212
13212
 
13213
- $6ff830cc0b6487a5$exports = {
13213
+ $6d30a58562f349fe$exports = {
13214
13214
  "button": $cbd28b10fa9798c7$exports,
13215
13215
  "code": $99486586f6691564$exports,
13216
- "dimensions_display": $e398acaded942bbe$exports,
13217
13216
  "copy_button": $47a1c62621be0c54$exports,
13218
13217
  "embed": $e1f51f020443edd4$exports,
13218
+ "dimensions_display": $e398acaded942bbe$exports,
13219
13219
  "filter": $e9904a14dabf652d$exports,
13220
13220
  "icon": $36506012e0c6e9e3$exports,
13221
13221
  "nav": $d92d9d5253f84566$exports,
@@ -13367,7 +13367,7 @@ const $d73574cc5e9b9e72$var$prefix = window.APP_NAME;
13367
13367
  // Components
13368
13368
  (0, $caa9439642c6336c$export$2e2bcd8739ae039).data("app", (0, $d709d0f4027033b2$export$2e2bcd8739ae039));
13369
13369
  [
13370
- $6ff830cc0b6487a5$exports,
13370
+ $6d30a58562f349fe$exports,
13371
13371
  $e4eab7529959b73b$exports,
13372
13372
  $4979d2d897a1c01f$exports
13373
13373
  ].forEach((scripts)=>{