Module: ProductTours::Widget
- Defined in:
- lib/product_tours/widget.rb
Constant Summary collapse
- SOURCE =
File.('widget.js', __dir__)
- DASHBOARD_SOURCE =
File.('dashboard.js', __dir__)
- DASHBOARD_STYLESHEET_SOURCE =
File.('dashboard.css', __dir__)
- RTL_LANGUAGES =
%w[ar arc ckb dv fa ha he ks ku ps sd ug ur yi].freeze
Class Method Summary collapse
- .config_json(locale:) ⇒ Object
- .dashboard_fingerprint ⇒ Object
- .dashboard_javascript ⇒ Object
- .dashboard_stylesheet ⇒ Object
-
.dashboard_stylesheet_fingerprint ⇒ Object
Not an endless def like its neighbours: the one-liner is 126 characters.
- .fingerprint ⇒ Object
- .javascript ⇒ Object
- .snippet(locale:, nonce: nil) ⇒ Object
Class Method Details
.config_json(locale:) ⇒ Object
32 33 34 35 36 37 38 39 |
# File 'lib/product_tours/widget.rb', line 32 def config_json(locale:) { endpoint: ProductTours.config., locale: locale.to_s, rtl: rtl?(locale), labels: labels }.to_json.gsub('</', '<\\/') end |
.dashboard_fingerprint ⇒ Object
18 |
# File 'lib/product_tours/widget.rb', line 18 def dashboard_fingerprint = @dashboard_fingerprint ||= Digest::MD5.hexdigest(dashboard_javascript) |
.dashboard_javascript ⇒ Object
15 |
# File 'lib/product_tours/widget.rb', line 15 def dashboard_javascript = @dashboard_javascript ||= File.read(DASHBOARD_SOURCE) |
.dashboard_stylesheet ⇒ Object
16 |
# File 'lib/product_tours/widget.rb', line 16 def dashboard_stylesheet = @dashboard_stylesheet ||= File.read(DASHBOARD_STYLESHEET_SOURCE) |
.dashboard_stylesheet_fingerprint ⇒ Object
Not an endless def like its neighbours: the one-liner is 126 characters.
21 22 23 |
# File 'lib/product_tours/widget.rb', line 21 def dashboard_stylesheet_fingerprint @dashboard_stylesheet_fingerprint ||= Digest::MD5.hexdigest(dashboard_stylesheet) end |
.fingerprint ⇒ Object
17 |
# File 'lib/product_tours/widget.rb', line 17 def fingerprint = @fingerprint ||= Digest::MD5.hexdigest(javascript) |
.javascript ⇒ Object
14 |
# File 'lib/product_tours/widget.rb', line 14 def javascript = @javascript ||= File.read(SOURCE) |
.snippet(locale:, nonce: nil) ⇒ Object
25 26 27 28 29 30 |
# File 'lib/product_tours/widget.rb', line 25 def snippet(locale:, nonce: nil) nonce_attr = nonce ? %( nonce="#{ERB::Util.html_escape(nonce)}") : '' source = "#{ProductTours.config.mount_path.to_s.chomp('/')}/widget.js?v=#{fingerprint}" %(<script type="application/json" data-product-tours-config>#{config_json(locale:)}</script>) + %(<script src="#{ERB::Util.html_escape(source)}" defer#{nonce_attr} data-product-tours-widget></script>) end |