prez 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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