prez 0.1.0 → 0.1.1

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
  SHA1:
3
- metadata.gz: 13415316b5dd25295ffe13e8beeb11fd298be3fd
4
- data.tar.gz: 40e50b72d184a9dee9860bcfeb88138325dc760b
3
+ metadata.gz: 61bd46e9dbbcaa94c63e40f43c90798044fe6b9f
4
+ data.tar.gz: e9864049a4427603b161277065a74c28ab2e43f5
5
5
  SHA512:
6
- metadata.gz: 32fcb1f65a52968389fc0641a002079807cd328f278854e5b19da0b4b748119c381a37e9edc67a88873d3c9fba67f661577feee1dad88cdbcf50c1f0f3ca21cb
7
- data.tar.gz: 26d7be1f411008d9fe81a9a55894d950202b0ddad08f182e3273063dd82d1c4f5056c57874ef6e9ad7d13fda0c8608e69525de26f91f83bd9535cc74c65702e1
6
+ metadata.gz: 7bfb70b26ef52434c4f070fe251ef92fd8ba3504826bb88193b042cc9494a54137933f7872ad9486b157930ddf9ef356c9fb5133a2cd35733e0795a8a281393f
7
+ data.tar.gz: 3752d8e50eba7f00b3bc78778a04b2f664a780883bb2c256e4434e60d1c4df631847c6dd3826f66e8184c1a7324133b0e9eb57f4c755404777c0cbbb58f46655
data/lib/prez.rb CHANGED
@@ -1,14 +1,15 @@
1
1
  module Prez
2
- autoload :Assets, "prez/assets"
3
- autoload :Build, "prez/build"
4
- autoload :Builder, "prez/builder"
5
- autoload :Cache, "prez/cache"
6
- autoload :CLI, "prez/cli"
7
- autoload :DataUri, "prez/data_uri"
8
- autoload :Error, "prez/error"
9
- autoload :Files, "prez/files"
10
- autoload :Helpers, "prez/helpers"
11
- autoload :New, "prez/new"
12
- autoload :Start, "prez/start"
13
- autoload :Version, "prez/version"
2
+ autoload :Assets, "prez/assets"
3
+ autoload :Build, "prez/build"
4
+ autoload :Builder, "prez/builder"
5
+ autoload :Cache, "prez/cache"
6
+ autoload :CLI, "prez/cli"
7
+ autoload :DataUri, "prez/data_uri"
8
+ autoload :Error, "prez/error"
9
+ autoload :Files, "prez/files"
10
+ autoload :Helpers, "prez/helpers"
11
+ autoload :JavascriptElement, "prez/javascript_element"
12
+ autoload :New, "prez/new"
13
+ autoload :Start, "prez/start"
14
+ autoload :Version, "prez/version"
14
15
  end
data/lib/prez/assets.rb CHANGED
@@ -72,6 +72,10 @@ module Prez
72
72
  attributes << %{height="#{options[:height]}"}
73
73
  end
74
74
 
75
+ if options[:id]
76
+ attributes << %{id="#{options[:id]}"}
77
+ end
78
+
75
79
  if options[:style]
76
80
  attributes << %{style="#{options[:style]}"}
77
81
  end
data/lib/prez/helpers.rb CHANGED
@@ -5,6 +5,7 @@ module Prez
5
5
  protected
6
6
 
7
7
  def reset_helpers!
8
+ @launch = :choose
8
9
  @duration = nil
9
10
  end
10
11
 
@@ -50,6 +51,18 @@ module Prez
50
51
  end
51
52
  end
52
53
 
54
+ def launch(new_window: true)
55
+ if new_window
56
+ @launch = :new_window
57
+ else
58
+ @launch = :current_window
59
+ end
60
+ end
61
+
62
+ def launch_type
63
+ @launch
64
+ end
65
+
53
66
  def html_escape(value = nil, &block)
54
67
  if block
55
68
  value = capture &block
@@ -76,6 +89,7 @@ module Prez
76
89
 
77
90
  def slide(options = {})
78
91
  classes = ["prez-slide"]
92
+ classes << options[:class] if options[:class]
79
93
  align = options.fetch :align, :center
80
94
 
81
95
  case align
@@ -84,27 +98,53 @@ module Prez
84
98
  when :right
85
99
  classes << "right-aligned"
86
100
  when :center
87
- # Nothing needed
101
+ classes << "center-aligned"
88
102
  else
89
103
  raise Prez::Error.new("Invalid slide align: #{align.inspect}")
90
104
  end
91
105
 
106
+ attributes = [%{class="#{classes.join " "}"}]
107
+
108
+ if options[:id]
109
+ attributes << %{id="#{options[:id]}"}
110
+ end
111
+
112
+ if options[:style]
113
+ attributes << %{style="#{options[:style]}"}
114
+ end
115
+
92
116
  if options[:duration]
93
- duration_attribute = %{ data-duration="#{options[:duration]}"}
117
+ attributes << %{data-duration="#{options[:duration]}"}
94
118
  end
95
119
 
96
- concat %{<div class="#{classes.join " "}"#{duration_attribute}>}
120
+ concat %{<div #{attributes.join " "}>}
97
121
  yield
98
122
  concat %{</div>}
99
123
  end
100
124
 
101
125
  def element(options = {})
102
126
  tag = options.fetch :tag, :div
103
- concat %{<#{tag} class="prez-element">}
127
+ classes = ["prez-element"]
128
+ classes << options[:class] if options[:class]
129
+ attributes = [%{class="#{classes.join " "}"}]
130
+
131
+ if options[:id]
132
+ attributes << %{id="#{options[:id]}"}
133
+ end
134
+
135
+ if options[:style]
136
+ attributes << %{style="#{options[:style]}"}
137
+ end
138
+
139
+ concat %{<#{tag} #{attributes.join " "}>}
104
140
  yield
105
141
  concat %{</#{tag}>}
106
142
  end
107
143
 
144
+ def element_js(up:, down:)
145
+ concat Prez::JavascriptElement.new(capture(&up), capture(&down)).to_s
146
+ end
147
+
108
148
  def notes
109
149
  concat %{<div class="prez-notes">}
110
150
  yield
@@ -0,0 +1,31 @@
1
+ module Prez
2
+ class JavascriptElement
3
+ def self.next_id
4
+ @next_id ||= 0
5
+ @next_id += 1
6
+ end
7
+
8
+ def initialize(up, down)
9
+ @id = Prez::JavascriptElement.next_id
10
+ @up_js = up
11
+ @down_js = down
12
+ end
13
+
14
+ def to_s
15
+ <<-EOF
16
+ <script>
17
+ window.elementJs = window.elementJs || {};
18
+
19
+ window.elementJs.up#{@id} = function($) {
20
+ #{@up_js}
21
+ };
22
+
23
+ window.elementJs.down#{@id} = function($) {
24
+ #{@down_js}
25
+ };
26
+ </script>
27
+ <span class="prez-element" data-element-js data-element-js-up="up#{@id}" data-element-js-down="down#{@id}"></span>
28
+ EOF
29
+ end
30
+ end
31
+ end
data/lib/prez/version.rb CHANGED
@@ -2,7 +2,7 @@ module Prez
2
2
  module Version
3
3
  class << self
4
4
  def to_s
5
- "0.1.0"
5
+ "0.1.1"
6
6
  end
7
7
  end
8
8
  end
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE html>
2
- <html lang="en">
2
+ <html lang="en" data-launch-type="<%= launch_type %>">
3
3
  <head>
4
4
  <meta charset="utf-8">
5
5
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
@@ -85,6 +85,29 @@
85
85
  </div>
86
86
  </div>
87
87
  </div>
88
+
89
+ <div id="new-window-popup-blocked-modal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="popup-blocked" aria-hidden="true">
90
+ <div class="modal-dialog">
91
+ <div class="modal-content">
92
+ <div class="modal-header">
93
+ <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
94
+ <h4 class="modal-title" id="popup-blocked">Popup Blocked</h4>
95
+ </div>
96
+
97
+ <div class="modal-body">
98
+ <p>
99
+ Sorry, but your new presentation was blocked! Please click
100
+ 'Launch' to try again, or just dismiss this modal.
101
+ </p>
102
+ </div>
103
+
104
+ <div class="modal-footer">
105
+ <button type="button" class="btn btn-primary" id="launch-after-blocked">Launch</button>
106
+ <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
107
+ </div>
108
+ </div>
109
+ </div>
110
+ </div>
88
111
  </div>
89
112
  </body>
90
113
  </html>
@@ -87,13 +87,14 @@ class Prez
87
87
  @slideStarted $next
88
88
 
89
89
  if nextElement == 0
90
- $next.find(".prez-element").addClass("hidden").removeClass("visible")
90
+ $next.find(".prez-element").each (i, e) =>
91
+ @hideElement $(e)
91
92
  else if @currentElement() > nextElement
92
93
  for i in [@currentElement()..(nextElement + 1)]
93
- $next.find(".prez-element[data-slide-element='#{i}']").addClass("hidden").removeClass("visible")
94
+ @hideElement $next.find(".prez-element[data-slide-element='#{i}']")
94
95
  else if @currentElement() < nextElement
95
96
  for i in [(@currentElement() + 1)..nextElement]
96
- $next.find(".prez-element[data-slide-element='#{i}']").removeClass("hidden").addClass("visible")
97
+ @showElement $next.find(".prez-element[data-slide-element='#{i}']")
97
98
 
98
99
  # Hack to fix Chrome sometimes not rendering opacity changes,
99
100
  # thanks to http://stackoverflow.com/a/8840703/122
@@ -103,6 +104,18 @@ class Prez
103
104
  @options.slideChanged? $next, nextValue, nextElement
104
105
  true
105
106
 
107
+ hideElement: ($element) ->
108
+ if $element.is(".visible[data-element-js]")
109
+ @window.elementJs[$element.data("element-js-down")]($)
110
+
111
+ $element.addClass("hidden").removeClass("visible")
112
+
113
+ showElement: ($element) ->
114
+ if $element.is(".hidden[data-element-js]")
115
+ @window.elementJs[$element.data("element-js-up")]($)
116
+
117
+ $element.removeClass("hidden").addClass("visible")
118
+
106
119
  currentSlide: ->
107
120
  return null if $(".prez-slide:visible", @document).size() == 0
108
121
  parseInt $(".prez-slide:visible", @document).data("slide"), 10
@@ -245,6 +258,11 @@ $(document).on "click", "#new-window", (e) ->
245
258
  $("#new-window #launch-message").text "Launch in this window"
246
259
  $("#new-window .glyphicon").removeClass("glyphicon-new-window").addClass("glyphicon-unchecked")
247
260
 
261
+ $(document).on "click", "#launch-after-blocked", (e) ->
262
+ e.preventDefault()
263
+ $("#new-window-popup-blocked-modal").modal "hide"
264
+ $("#launch").click()
265
+
248
266
  $(document).on "click", "#launch", (e) ->
249
267
  e.preventDefault()
250
268
  return if Prez.current
@@ -261,6 +279,12 @@ $(document).on "click", "#launch", (e) ->
261
279
 
262
280
 
263
281
  if useNewWindow
282
+ newWindow = window.open("", "prez", "width=640,height=480")
283
+
284
+ unless newWindow
285
+ $("#new-window-popup-blocked-modal").modal "show"
286
+ return
287
+
264
288
  iframePrez = new Prez
265
289
  window: iframe.getFrameWindow()
266
290
  useHash: false
@@ -268,7 +292,7 @@ $(document).on "click", "#launch", (e) ->
268
292
 
269
293
  Prez.current = new Prez
270
294
  duration: Prez.timeToSeconds($("#prez-duration").val())
271
- window: window.open("", "prez", "width=640,height=480")
295
+ window: newWindow
272
296
  slideChanged: ($slide, slideNumber, elementNumber) ->
273
297
  notes = $slide.find(".prez-notes").html() || ""
274
298
  $("#slide-notes").html notes
@@ -329,3 +353,13 @@ $(window).bind "beforeunload", ->
329
353
 
330
354
  $(document).on "keydown", Prez.handlers.keyDown
331
355
  $.setInterval 50, Prez.handlers.timeChange
356
+
357
+ $ ->
358
+ launchType = $("html").data("launch-type")
359
+
360
+ if launchType == "new_window"
361
+ $("#new-window").addClass("active");
362
+ $("#launch").click()
363
+ else if launchType == "current_window"
364
+ $("#new-window").removeClass("active");
365
+ $("#launch").click()
@@ -23,29 +23,17 @@ body {
23
23
  }
24
24
 
25
25
  .prez-slide {
26
- &, & input {
26
+ &, input, table {
27
27
  font-size: 50;
28
28
  }
29
29
 
30
30
  display: none;
31
31
  min-height: $prez-slide-min-height;
32
32
  padding: $prez-padding;
33
- text-align: center;
34
-
35
- .center-aligned {
36
- text-align: center;
37
- }
38
-
39
- &.left-aligned, .left-aligned {
40
- text-align: left;
41
- }
42
-
43
- .left-aligned {
44
- padding-left: 5%;
45
- }
46
33
 
47
- &.right-aligned, .right-aligned {
48
- text-align: right;
34
+ table td {
35
+ padding-left: 3%;
36
+ padding-right: 3%;
49
37
  }
50
38
 
51
39
  .prez-element.hide-style.hidden {
@@ -57,6 +45,38 @@ body {
57
45
  }
58
46
  }
59
47
 
48
+ .center-aligned, .prez-slide .center-aligned {
49
+ text-align: center;
50
+ }
51
+
52
+ .center-aligned table, .prez-slide table.center-aligned {
53
+ margin: 0 auto;
54
+ }
55
+
56
+ .left-aligned, .prez-slide .left-aligned {
57
+ text-align: left;
58
+ }
59
+
60
+ .left-aligned table, .prez-slide table.left-aligned {
61
+ margin: 0;
62
+ }
63
+
64
+ .left-aligned {
65
+ padding-left: 5%;
66
+ }
67
+
68
+ .right-aligned, .prez-slide .right-aligned {
69
+ text-align: right;
70
+ }
71
+
72
+ .right-aligned table, .prez-slide table.right-aligned {
73
+ margin: 0 0 0 auto;
74
+ }
75
+
76
+ .right-aligned {
77
+ padding-right: 5%;
78
+ }
79
+
60
80
  .pre {
61
81
  font-family: monospace;
62
82
  font-size: 0.9em;
@@ -88,6 +108,10 @@ body {
88
108
  font-weight: bold;
89
109
  }
90
110
 
111
+ .strikeout {
112
+ text-decoration: line-through;
113
+ }
114
+
91
115
  dt {
92
116
  font-weight: bold;
93
117
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prez
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Virata-Stone
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-25 00:00:00.000000000 Z
11
+ date: 2016-01-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: coffee-script
@@ -141,6 +141,7 @@ files:
141
141
  - lib/prez/error.rb
142
142
  - lib/prez/files.rb
143
143
  - lib/prez/helpers.rb
144
+ - lib/prez/javascript_element.rb
144
145
  - lib/prez/new.rb
145
146
  - lib/prez/sass_extensions.rb
146
147
  - lib/prez/start.rb