lookbook 2.0.0.rc.1 → 2.0.0.rc.2

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: 174a4ec48c4ecd1c29e75dfe398b67432344d13e37129b24c344e54519b29734
4
- data.tar.gz: d1d3165449445809fa7ec6aad3b8005fb8607c7bd01a7a5752ff7802f0095778
3
+ metadata.gz: 8e65ff18c2a7f112552e6b9a7ef3936628b84690a03123736bfbd2d69734319a
4
+ data.tar.gz: 841ccc4584b2b66bf165f822a3be984370d9bc0df0095ded20ef9800e5f76877
5
5
  SHA512:
6
- metadata.gz: 65a1324e145f01c7287d016395bf98d3278bc6b552c4fba3dbfa9c525c98d8622d463d48787dc1aaccd2eac0f1fc32126547ef3f80f13128e83089b9088166a9
7
- data.tar.gz: 85ae77aa8223fb11f60e6d4ea075827f49f809f96dd3e017be0176e89ffe58b373a55e52079391132b5253ab241b33df4200c8ebeee4cfe97956ba4a51bc83e7
6
+ metadata.gz: 6e67bf7cf970cfb18166050d582b8daf29a9d13ceec465ce7e9ad49c3fdd12f04b9d5a72bba7786cb62be56a8be29464e34602f9758d68660b1f38bf0f2cddec
7
+ data.tar.gz: 50b18c05c31bd207acc07f40a07a564926aae7865f0770fe1612bab661a8342418fe3662f50a2fbfa13f105c48b66786e8ed67c261eb96962182b7abf63357ea
@@ -3,12 +3,23 @@ module Lookbook
3
3
  extend ActiveSupport::Concern
4
4
 
5
5
  def preview_controller
6
- return @_preview_controller if @_preview_controller
6
+ @_preview_controller ||= begin
7
+ # In order to get URL helpers working correctly in the preview,
8
+ # the request needs to look like it's coming from the host app,
9
+ # not the Lookbook engine. So we try to get the controller and action
10
+ # for the root path and use that as the 'fake' request context instead.
11
+ request_path = main_app.respond_to?(:root_path) ? main_app.root_path : "/"
12
+ path_parameters = Rails.application.routes.recognize_path(request_path)
7
13
 
8
- controller = Engine.preview_controller.new
9
- controller.request = request
10
- controller.response = response
11
- @_preview_controller ||= controller
14
+ preview_request = request.clone
15
+ preview_request.path_parameters = path_parameters if path_parameters.present?
16
+
17
+ controller = Engine.preview_controller.new
18
+ controller.request = preview_request
19
+ controller.response = response
20
+
21
+ controller
22
+ end
12
23
  end
13
24
  end
14
25
  end
@@ -1,5 +1,9 @@
1
1
  <% if @render_args[:component] %>
2
- <%= render(@render_args[:component], @render_args[:args], &@render_args[:block]) %>
2
+ <% if defined?(Phlex::SGML) && @render_args[:component].is_a?(Phlex::SGML) %>
3
+ <%= raw(@render_args[:component].call(view_context: self, &@render_args[:block])) %>
4
+ <% else %>
5
+ <%= render(@render_args[:component], @render_args[:args], &@render_args[:block]) %>
6
+ <% end %>
3
7
  <% else %>
4
8
  <%= render(@render_args[:template], **@render_args[:locals], &@render_args[:block]) %>
5
9
  <% end %>
data/config/app.yml CHANGED
@@ -42,7 +42,7 @@ shared:
42
42
  theme: github
43
43
  dark: false
44
44
 
45
- component_paths: [app/views]
45
+ component_paths: [app/views, app/components]
46
46
 
47
47
  reload_on_change: ~
48
48
  live_updates: false
@@ -10,9 +10,5 @@ module Lookbook
10
10
  def lookbook_data(key, fallback = nil)
11
11
  Lookbook.data.fetch(key.to_sym, fallback)
12
12
  end
13
-
14
- def url_for(*args)
15
- main_app.url_for(*args)
16
- end
17
13
  end
18
14
  end
@@ -4,57 +4,58 @@ module Lookbook
4
4
 
5
5
  included do
6
6
  helper PreviewHelper
7
+ helper Rails.application.routes.url_helpers
7
8
  prepend_view_path Engine.root.join("app/views")
9
+ end
8
10
 
9
- def render_scenario_to_string(preview, scenario)
10
- prepend_application_view_paths
11
- prepend_preview_examples_view_path
12
-
13
- @preview = preview
14
- @scenario_name = scenario.name
15
- @render_args = @preview.render_args(@scenario_name, params: params.permit!)
16
- template = @render_args[:template]
17
- locals = @render_args[:locals]
18
- opts = {}
19
- opts[:layout] = nil
20
- opts[:locals] = locals if locals.present?
21
-
22
- rendered = render_to_string(template, **opts)
23
-
24
- if scenario.after_render_method.present?
25
- render_context = Store.new({
26
- preview: preview,
27
- scenario: scenario,
28
- params: user_request_parameters
29
- })
30
- rendered = @preview.after_render(method: scenario.after_render_method, html: rendered, context: render_context)
31
- end
11
+ def render_scenario_to_string(preview, scenario)
12
+ prepend_application_view_paths
13
+ prepend_preview_examples_view_path
14
+
15
+ @preview = preview
16
+ @scenario_name = scenario.name
17
+ @render_args = @preview.render_args(@scenario_name, params: params.permit!)
18
+ template = @render_args[:template]
19
+ locals = @render_args[:locals]
20
+ opts = {}
21
+ opts[:layout] = nil
22
+ opts[:locals] = locals if locals.present?
23
+
24
+ rendered = render_to_string(template, **opts)
25
+
26
+ if scenario.after_render_method.present?
27
+ render_context = Store.new({
28
+ preview: preview,
29
+ scenario: scenario,
30
+ params: user_request_parameters
31
+ })
32
+ rendered = @preview.after_render(method: scenario.after_render_method, html: rendered, context: render_context)
33
+ end
32
34
 
33
- with_optional_action_view_annotations do
34
- render html: rendered
35
- end
35
+ with_optional_action_view_annotations do
36
+ render html: rendered
36
37
  end
38
+ end
37
39
 
38
- def render_in_layout_to_string(template, locals, opts = {})
39
- with_optional_action_view_annotations do
40
- html = render_to_string(template, locals: locals, **determine_layout(opts[:layout]))
41
- if opts[:append_html].present?
42
- html += opts[:append_html]
43
- end
44
- render html: html
40
+ def render_in_layout_to_string(template, locals, opts = {})
41
+ with_optional_action_view_annotations do
42
+ html = render_to_string(template, locals: locals, **determine_layout(opts[:layout]))
43
+ if opts[:append_html].present?
44
+ html += opts[:append_html]
45
45
  end
46
+ render html: html
46
47
  end
48
+ end
47
49
 
48
- protected
50
+ protected
49
51
 
50
- def with_optional_action_view_annotations(&block)
51
- disable = Lookbook.config.preview_disable_action_view_annotations
52
- ActionViewAnnotationsHandler.call(disable_annotations: disable, &block)
53
- end
52
+ def with_optional_action_view_annotations(&block)
53
+ disable = Lookbook.config.preview_disable_action_view_annotations
54
+ ActionViewAnnotationsHandler.call(disable_annotations: disable, &block)
55
+ end
54
56
 
55
- def user_request_parameters
56
- request.query_parameters.to_h.filter { |k, v| !k.start_with?("_") }
57
- end
57
+ def user_request_parameters
58
+ request.query_parameters.to_h.filter { |k, v| !k.start_with?("_") }
58
59
  end
59
60
  end
60
61
  end
@@ -1,3 +1,3 @@
1
1
  module Lookbook
2
- VERSION = "2.0.0.rc.1"
2
+ VERSION = "2.0.0.rc.2"
3
3
  end
@@ -7815,7 +7815,49 @@ function $12b7aa006b8a97e1$var$toCamel(s) {
7815
7815
  }
7816
7816
 
7817
7817
 
7818
- var $52abf2efa3492135$exports = {};
7818
+ var $57df4ec1d6bb80f5$exports = {};
7819
+ var $47a1c62621be0c54$exports = {};
7820
+
7821
+ $parcel$defineInteropFlag($47a1c62621be0c54$exports);
7822
+
7823
+ $parcel$export($47a1c62621be0c54$exports, "default", () => $47a1c62621be0c54$export$2e2bcd8739ae039);
7824
+ var $4e31c85e11272811$exports = {};
7825
+
7826
+ $parcel$defineInteropFlag($4e31c85e11272811$exports);
7827
+
7828
+ $parcel$export($4e31c85e11272811$exports, "initClipboard", () => $4e31c85e11272811$export$c6684e6159b21de3);
7829
+ $parcel$export($4e31c85e11272811$exports, "default", () => $4e31c85e11272811$export$2e2bcd8739ae039);
7830
+
7831
+ function $4e31c85e11272811$export$c6684e6159b21de3(context = {}) {
7832
+ let copyTimeout = null;
7833
+ return Object.assign(context, {
7834
+ copied: false,
7835
+ async copyToClipboard (target = null) {
7836
+ let targetEl;
7837
+ if (this.$refs.copyTarget) targetEl = this.$refs.copyTarget;
7838
+ else if (typeof target === "string") targetEl = document.querySelector(target);
7839
+ if (!targetEl) {
7840
+ this.warn("Could not find copy target");
7841
+ return false;
7842
+ }
7843
+ const content = (0, $fb8f79f7dd40b68f$export$6cb344a21ca18aec)(targetEl.innerHTML.trim());
7844
+ await window.navigator.clipboard.writeText(content);
7845
+ this.copied = true;
7846
+ if (copyTimeout) clearTimeout(copyTimeout);
7847
+ copyTimeout = setTimeout(()=>{
7848
+ this.copied = false;
7849
+ this.onCopyComplete();
7850
+ }, 1000);
7851
+ return content;
7852
+ },
7853
+ onCopyComplete () {}
7854
+ });
7855
+ }
7856
+ function $4e31c85e11272811$export$2e2bcd8739ae039() {
7857
+ return $4e31c85e11272811$export$c6684e6159b21de3({});
7858
+ }
7859
+
7860
+
7819
7861
  var $cbd28b10fa9798c7$exports = {};
7820
7862
 
7821
7863
  $parcel$defineInteropFlag($cbd28b10fa9798c7$exports);
@@ -11346,59 +11388,6 @@ function $cbd28b10fa9798c7$export$2e2bcd8739ae039() {
11346
11388
  }
11347
11389
 
11348
11390
 
11349
- var $99486586f6691564$exports = {};
11350
-
11351
- $parcel$defineInteropFlag($99486586f6691564$exports);
11352
-
11353
- $parcel$export($99486586f6691564$exports, "default", () => $99486586f6691564$export$2e2bcd8739ae039);
11354
- function $99486586f6691564$export$2e2bcd8739ae039() {
11355
- return {};
11356
- }
11357
-
11358
-
11359
- var $47a1c62621be0c54$exports = {};
11360
-
11361
- $parcel$defineInteropFlag($47a1c62621be0c54$exports);
11362
-
11363
- $parcel$export($47a1c62621be0c54$exports, "default", () => $47a1c62621be0c54$export$2e2bcd8739ae039);
11364
- var $4e31c85e11272811$exports = {};
11365
-
11366
- $parcel$defineInteropFlag($4e31c85e11272811$exports);
11367
-
11368
- $parcel$export($4e31c85e11272811$exports, "initClipboard", () => $4e31c85e11272811$export$c6684e6159b21de3);
11369
- $parcel$export($4e31c85e11272811$exports, "default", () => $4e31c85e11272811$export$2e2bcd8739ae039);
11370
-
11371
- function $4e31c85e11272811$export$c6684e6159b21de3(context = {}) {
11372
- let copyTimeout = null;
11373
- return Object.assign(context, {
11374
- copied: false,
11375
- async copyToClipboard (target = null) {
11376
- let targetEl;
11377
- if (this.$refs.copyTarget) targetEl = this.$refs.copyTarget;
11378
- else if (typeof target === "string") targetEl = document.querySelector(target);
11379
- if (!targetEl) {
11380
- this.warn("Could not find copy target");
11381
- return false;
11382
- }
11383
- const content = (0, $fb8f79f7dd40b68f$export$6cb344a21ca18aec)(targetEl.innerHTML.trim());
11384
- await window.navigator.clipboard.writeText(content);
11385
- this.copied = true;
11386
- if (copyTimeout) clearTimeout(copyTimeout);
11387
- copyTimeout = setTimeout(()=>{
11388
- this.copied = false;
11389
- this.onCopyComplete();
11390
- }, 1000);
11391
- return content;
11392
- },
11393
- onCopyComplete () {}
11394
- });
11395
- }
11396
- function $4e31c85e11272811$export$2e2bcd8739ae039() {
11397
- return $4e31c85e11272811$export$c6684e6159b21de3({});
11398
- }
11399
-
11400
-
11401
-
11402
11391
  function $47a1c62621be0c54$export$2e2bcd8739ae039() {
11403
11392
  const button = (0, $cbd28b10fa9798c7$export$2e2bcd8739ae039)();
11404
11393
  return {
@@ -11412,6 +11401,17 @@ function $47a1c62621be0c54$export$2e2bcd8739ae039() {
11412
11401
  }
11413
11402
 
11414
11403
 
11404
+
11405
+ var $99486586f6691564$exports = {};
11406
+
11407
+ $parcel$defineInteropFlag($99486586f6691564$exports);
11408
+
11409
+ $parcel$export($99486586f6691564$exports, "default", () => $99486586f6691564$export$2e2bcd8739ae039);
11410
+ function $99486586f6691564$export$2e2bcd8739ae039() {
11411
+ return {};
11412
+ }
11413
+
11414
+
11415
11415
  var $e398acaded942bbe$exports = {};
11416
11416
 
11417
11417
  $parcel$defineInteropFlag($e398acaded942bbe$exports);
@@ -12336,10 +12336,10 @@ function $6d64716f0b34fdf4$export$2e2bcd8739ae039(store) {
12336
12336
  }
12337
12337
 
12338
12338
 
12339
- $52abf2efa3492135$exports = {
12339
+ $57df4ec1d6bb80f5$exports = {
12340
+ "copy_button": $47a1c62621be0c54$exports,
12340
12341
  "button": $cbd28b10fa9798c7$exports,
12341
12342
  "code": $99486586f6691564$exports,
12342
- "copy_button": $47a1c62621be0c54$exports,
12343
12343
  "dimensions_display": $e398acaded942bbe$exports,
12344
12344
  "embed_code_dropdown": $216ef7001f59f21d$exports,
12345
12345
  "filter": $e9904a14dabf652d$exports,
@@ -13521,7 +13521,7 @@ const $22969b543678f572$var$prefix = window.APP_NAME;
13521
13521
  // Components
13522
13522
  (0, $caa9439642c6336c$export$2e2bcd8739ae039).data("app", (0, $5792afa4170ed552$export$2e2bcd8739ae039));
13523
13523
  [
13524
- $52abf2efa3492135$exports,
13524
+ $57df4ec1d6bb80f5$exports,
13525
13525
  $3b154185c6273749$exports,
13526
13526
  $338da9a25bc5c332$exports
13527
13527
  ].forEach((scripts)=>{