keydown 0.5.0
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.
- data/.gitignore +5 -0
- data/.rspec +2 -0
- data/.rvmrc +1 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +41 -0
- data/LICENSE +20 -0
- data/README.md +183 -0
- data/Rakefile +9 -0
- data/VERSION +1 -0
- data/bin/keydown +7 -0
- data/keydown.gemspec +27 -0
- data/lib/keydown/lib/slide.rb +125 -0
- data/lib/keydown/lib/slidedeck.rb +55 -0
- data/lib/keydown/tasks/generate.rb +12 -0
- data/lib/keydown/tasks/slides.rb +36 -0
- data/lib/keydown.rb +22 -0
- data/lib/version.rb +3 -0
- data/spec/fixtures/custom.css +5 -0
- data/spec/fixtures/custom.js +3 -0
- data/spec/fixtures/with_backgrounds.md +29 -0
- data/spec/fixtures/with_code.md +26 -0
- data/spec/fixtures/with_title.md +21 -0
- data/spec/fixtures/without_title.md +21 -0
- data/spec/lib/slide_spec.rb +365 -0
- data/spec/lib/slidedeck_spec.rb +133 -0
- data/spec/output/results.html +545 -0
- data/spec/spec_helper.rb +18 -0
- data/spec/tasks/generate_spec.rb +50 -0
- data/spec/tasks/slides_spec.rb +171 -0
- data/templates/generate/%presentation_name%.md.tt +27 -0
- data/templates/generate/css/%presentation_name%.css +1 -0
- data/templates/generate/css/rocks.css +392 -0
- data/templates/generate/images/cc.large.png +0 -0
- data/templates/generate/images/flickr.png +0 -0
- data/templates/generate/js/%presentation_name%.js +1 -0
- data/templates/generate/js/rocks.js +415 -0
- data/templates/keydown.css.erb +104 -0
- data/templates/rocks/index.rhtml +125 -0
- data/templates/rocks/slide.rhtml +10 -0
- metadata +206 -0
| @@ -0,0 +1,171 @@ | |
| 1 | 
            +
            require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe Keydown, "`slides`" do
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              shared_examples_for "generating a presentation file" do
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                it "should have the correct file name" do
         | 
| 8 | 
            +
                  @file.should_not be_nil
         | 
| 9 | 
            +
                end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                it "should set the document's title" do
         | 
| 12 | 
            +
                  @doc.css('title').text.should == "Kermit the Frog Says..."
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                it "should generate the correct number of slides" do
         | 
| 16 | 
            +
                  @doc.css('div.slide').length.should == 4
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                it "should include the HTML5 Rocks CSS only once" do
         | 
| 20 | 
            +
                  @doc.css('link[@href="css/rocks.css"]').length.should == 1
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                it "should include the HTML5 Rocks JavaScript only once" do
         | 
| 24 | 
            +
                  @doc.css('script[@src="js/rocks.js"]').length.should == 1
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
              end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
              before :each do
         | 
| 30 | 
            +
                @tmp_dir = "#{Dir.tmpdir}/keydown_test"
         | 
| 31 | 
            +
                FileUtils.rm_r @tmp_dir if File.exists?(@tmp_dir)
         | 
| 32 | 
            +
                FileUtils.mkdir_p @tmp_dir
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                @thor = Thor.new
         | 
| 35 | 
            +
              end
         | 
| 36 | 
            +
             | 
| 37 | 
            +
              describe "when file cannot be found" do
         | 
| 38 | 
            +
                before(:each) do
         | 
| 39 | 
            +
                  Dir.chdir @tmp_dir do
         | 
| 40 | 
            +
                    @std_out = capture_output do
         | 
| 41 | 
            +
                      @thor.invoke Keydown::Tasks, "slides", "with_title.md"
         | 
| 42 | 
            +
                    end
         | 
| 43 | 
            +
                  end
         | 
| 44 | 
            +
                end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                it "should warn the user" do
         | 
| 47 | 
            +
                  @std_out.should match(/not found\. Please call with a KeyDown Markdown file: keydown slides my_file\.md/)
         | 
| 48 | 
            +
                end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                it "should not write out a file" do
         | 
| 51 | 
            +
                  Dir.glob("#{@tmp_dir}/*.html").should be_empty
         | 
| 52 | 
            +
                end
         | 
| 53 | 
            +
             | 
| 54 | 
            +
              end
         | 
| 55 | 
            +
             | 
| 56 | 
            +
              describe "with defaults" do
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                before :each do
         | 
| 59 | 
            +
                  system "cp -r spec/fixtures/with_title.md #{@tmp_dir}"
         | 
| 60 | 
            +
                end
         | 
| 61 | 
            +
             | 
| 62 | 
            +
                describe "should generate an html file that" do
         | 
| 63 | 
            +
                  before(:each) do
         | 
| 64 | 
            +
                    capture_output do
         | 
| 65 | 
            +
                      Dir.chdir @tmp_dir do
         | 
| 66 | 
            +
                        @thor.invoke Keydown::Tasks, "slides", "with_title.md"
         | 
| 67 | 
            +
                        @file = File.new('with_title.html')
         | 
| 68 | 
            +
                        @doc = Nokogiri(@file)
         | 
| 69 | 
            +
                      end
         | 
| 70 | 
            +
                    end
         | 
| 71 | 
            +
                  end
         | 
| 72 | 
            +
             | 
| 73 | 
            +
                  it_should_behave_like "generating a presentation file"
         | 
| 74 | 
            +
             | 
| 75 | 
            +
                  describe "should have one slide that" do
         | 
| 76 | 
            +
                    before :each do
         | 
| 77 | 
            +
                      @slide = @doc.css('section')[3]
         | 
| 78 | 
            +
                    end
         | 
| 79 | 
            +
             | 
| 80 | 
            +
                    it "should have the correct css class(es)" do
         | 
| 81 | 
            +
                      @slide['class'].should match /foo/
         | 
| 82 | 
            +
                      @slide['class'].should match /bar/
         | 
| 83 | 
            +
                    end
         | 
| 84 | 
            +
             | 
| 85 | 
            +
                    it "should have the correct content" do
         | 
| 86 | 
            +
                      @slide.css('h1').text.should match /The Letter Q/
         | 
| 87 | 
            +
                    end
         | 
| 88 | 
            +
                  end
         | 
| 89 | 
            +
                end
         | 
| 90 | 
            +
             | 
| 91 | 
            +
                describe "should add an .md extention if one isn't specified" do
         | 
| 92 | 
            +
                  before(:each) do
         | 
| 93 | 
            +
                    capture_output do
         | 
| 94 | 
            +
                      Dir.chdir @tmp_dir do
         | 
| 95 | 
            +
                        @thor.invoke Keydown::Tasks, "slides", "with_title"
         | 
| 96 | 
            +
                        @file = File.new('with_title.html')
         | 
| 97 | 
            +
                        @doc = Nokogiri(@file)
         | 
| 98 | 
            +
                      end
         | 
| 99 | 
            +
                    end
         | 
| 100 | 
            +
                  end
         | 
| 101 | 
            +
             | 
| 102 | 
            +
                  it_should_behave_like "generating a presentation file"
         | 
| 103 | 
            +
             | 
| 104 | 
            +
                end
         | 
| 105 | 
            +
              end
         | 
| 106 | 
            +
             | 
| 107 | 
            +
              describe "with directory tree with custom CSS & JS" do
         | 
| 108 | 
            +
                before(:each) do
         | 
| 109 | 
            +
                  capture_output do
         | 
| 110 | 
            +
             | 
| 111 | 
            +
                  Dir.chdir @tmp_dir do
         | 
| 112 | 
            +
                    @thor.invoke Keydown::Tasks, "generate", "test"
         | 
| 113 | 
            +
             | 
| 114 | 
            +
                    Dir.chdir "test" do
         | 
| 115 | 
            +
                      system "cp #{Keydown::Tasks.source_root}/spec/fixtures/with_title.md #{@tmp_dir}/test/with_title.md"
         | 
| 116 | 
            +
                      system "cp #{Keydown::Tasks.source_root}/spec/fixtures/custom.css #{@tmp_dir}/test/css/custom.css"
         | 
| 117 | 
            +
                      system "cp #{Keydown::Tasks.source_root}/spec/fixtures/custom.js #{@tmp_dir}/test/js/custom.js"
         | 
| 118 | 
            +
             | 
| 119 | 
            +
                      @thor.invoke Keydown::Tasks, "slides", "with_title.md"
         | 
| 120 | 
            +
             | 
| 121 | 
            +
                      @file = File.new('with_title.html')
         | 
| 122 | 
            +
                      @doc = Nokogiri(@file)
         | 
| 123 | 
            +
                    end
         | 
| 124 | 
            +
                  end
         | 
| 125 | 
            +
                  end
         | 
| 126 | 
            +
                end
         | 
| 127 | 
            +
             | 
| 128 | 
            +
                it_should_behave_like "generating a presentation file"
         | 
| 129 | 
            +
             | 
| 130 | 
            +
                it "should include any custom CSS file from the css directory" do
         | 
| 131 | 
            +
                  @doc.css('link[@href="css/test.css"]').length.should == 1
         | 
| 132 | 
            +
                  @doc.css('link[@href="css/custom.css"]').length.should == 1
         | 
| 133 | 
            +
                end
         | 
| 134 | 
            +
             | 
| 135 | 
            +
                it "should include any custom JavaScript files from the js directory" do
         | 
| 136 | 
            +
                  @doc.css('script[@src="js/test.js"]').length.should == 1
         | 
| 137 | 
            +
                  @doc.css('script[@src="js/custom.js"]').length.should == 1
         | 
| 138 | 
            +
                end
         | 
| 139 | 
            +
              end
         | 
| 140 | 
            +
             | 
| 141 | 
            +
              describe "for a presentation that has background images" do
         | 
| 142 | 
            +
                before(:each) do
         | 
| 143 | 
            +
                  capture_output do
         | 
| 144 | 
            +
             | 
| 145 | 
            +
                    Dir.chdir @tmp_dir do
         | 
| 146 | 
            +
                      @thor.invoke Keydown::Tasks, "generate", "test"
         | 
| 147 | 
            +
             | 
| 148 | 
            +
                      Dir.chdir "test" do
         | 
| 149 | 
            +
                        system "cp #{Keydown::Tasks.source_root}/spec/fixtures/with_backgrounds.md #{@tmp_dir}/test/with_backgrounds.md"
         | 
| 150 | 
            +
             | 
| 151 | 
            +
                        @thor.invoke Keydown::Tasks, "slides", "with_backgrounds.md"
         | 
| 152 | 
            +
             | 
| 153 | 
            +
                        @file = File.new('with_backgrounds.html')
         | 
| 154 | 
            +
                        @doc = Nokogiri(@file)
         | 
| 155 | 
            +
                      end
         | 
| 156 | 
            +
                    end
         | 
| 157 | 
            +
                  end
         | 
| 158 | 
            +
                end
         | 
| 159 | 
            +
             | 
| 160 | 
            +
                it_should_behave_like "generating a presentation file"
         | 
| 161 | 
            +
             | 
| 162 | 
            +
                it "should add the keydown.css file (which has the backgrounds) to the css directory" do
         | 
| 163 | 
            +
                  File.exist?("#{@tmp_dir}/test/css/keydown.css").should be_true
         | 
| 164 | 
            +
                end
         | 
| 165 | 
            +
             | 
| 166 | 
            +
                it "should add the keydown.css file to the HTML file" do
         | 
| 167 | 
            +
                  @doc.css('link[@href="css/keydown.css"]').length.should == 1
         | 
| 168 | 
            +
                end
         | 
| 169 | 
            +
             | 
| 170 | 
            +
              end
         | 
| 171 | 
            +
            end
         | 
| @@ -0,0 +1,27 @@ | |
| 1 | 
            +
            # <%= presentation_name %>
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            !SLIDE
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            # A Title Slide
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            ## me@example.com
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            !SLIDE
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            # Some sample code
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            ``` ruby
         | 
| 14 | 
            +
            def method
         | 
| 15 | 
            +
              puts "Hello, World"
         | 
| 16 | 
            +
            end
         | 
| 17 | 
            +
            ```
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            !NOTES
         | 
| 20 | 
            +
             | 
| 21 | 
            +
             * a note
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            !SLIDE
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            # With a Background Image
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            }}} images/test.png
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            /* Custom CSS for your KeyDown presentation here */
         | 
| @@ -0,0 +1,392 @@ | |
| 1 | 
            +
            body {
         | 
| 2 | 
            +
              font: 20px "Lucida Grande", "Trebuchet MS", Verdana, sans-serif;
         | 
| 3 | 
            +
              padding: 0;
         | 
| 4 | 
            +
              margin: 0;
         | 
| 5 | 
            +
              width: 100%;
         | 
| 6 | 
            +
              height: 100%;
         | 
| 7 | 
            +
              position: absolute;
         | 
| 8 | 
            +
              left: 0px; top: 0px;
         | 
| 9 | 
            +
            }
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            .presentation {
         | 
| 12 | 
            +
              position: absolute;
         | 
| 13 | 
            +
              height: 100%;
         | 
| 14 | 
            +
              width: 100%;
         | 
| 15 | 
            +
              left: 0px;
         | 
| 16 | 
            +
              top: 0px;
         | 
| 17 | 
            +
              display: block;
         | 
| 18 | 
            +
              overflow: hidden;
         | 
| 19 | 
            +
              background: #778;
         | 
| 20 | 
            +
            }
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            .slides {
         | 
| 23 | 
            +
              width: 100%;
         | 
| 24 | 
            +
              height: 100%;
         | 
| 25 | 
            +
              left: 0;
         | 
| 26 | 
            +
              top: 0;
         | 
| 27 | 
            +
              position: absolute;
         | 
| 28 | 
            +
              display: block;
         | 
| 29 | 
            +
              -webkit-transition: -webkit-transform 1s ease-in-out;
         | 
| 30 | 
            +
              -moz-transition: -moz-transform 1s ease-in-out;
         | 
| 31 | 
            +
              -o-transition: -o-transform 1s ease-in-out;
         | 
| 32 | 
            +
              transition: transform 1s ease-in-out;
         | 
| 33 | 
            +
             | 
| 34 | 
            +
              /* so it's visible in the iframe. */
         | 
| 35 | 
            +
              -webkit-transform: scale(0.8);
         | 
| 36 | 
            +
              -moz-transform: scale(0.8);
         | 
| 37 | 
            +
              -o-transform: scale(0.8);
         | 
| 38 | 
            +
              transform: scale(0.8);
         | 
| 39 | 
            +
             | 
| 40 | 
            +
            }
         | 
| 41 | 
            +
             | 
| 42 | 
            +
            .slide {
         | 
| 43 | 
            +
              display: none;
         | 
| 44 | 
            +
              position: absolute;
         | 
| 45 | 
            +
              overflow: hidden;
         | 
| 46 | 
            +
              width: 900px;
         | 
| 47 | 
            +
              height: 700px;
         | 
| 48 | 
            +
              left: 50%;
         | 
| 49 | 
            +
              top: 50%;
         | 
| 50 | 
            +
              margin-top: -350px;
         | 
| 51 | 
            +
              background-color: #eee;
         | 
| 52 | 
            +
              background: -webkit-gradient(linear, left bottom, left top, from(#bbd), to(#fff));
         | 
| 53 | 
            +
              background: -moz-linear-gradient(bottom, #bbd, #fff);
         | 
| 54 | 
            +
              background: linear-gradient(bottom, #bbd, #fff);
         | 
| 55 | 
            +
              -webkit-transition: all 0.25s ease-in-out;
         | 
| 56 | 
            +
              -moz-transition: all 0.25s ease-in-out;
         | 
| 57 | 
            +
              -o-transition: all 0.25s ease-in-out;
         | 
| 58 | 
            +
              transition: all 0.25s ease-in-out;
         | 
| 59 | 
            +
              -webkit-transform: scale(1);
         | 
| 60 | 
            +
              -moz-transform: scale(1);
         | 
| 61 | 
            +
              -o-transform: scale(1);
         | 
| 62 | 
            +
              transform: scale(1);
         | 
| 63 | 
            +
            }
         | 
| 64 | 
            +
             | 
| 65 | 
            +
            .slide:nth-child(even) {
         | 
| 66 | 
            +
              -moz-border-radius: 20px 0;
         | 
| 67 | 
            +
              -khtml-border-radius: 20px 0;
         | 
| 68 | 
            +
              border-radius: 20px 0; /* includes Opera 10.5+ */
         | 
| 69 | 
            +
              -webkit-border-top-left-radius: 20px;
         | 
| 70 | 
            +
              -webkit-border-bottom-right-radius: 20px;
         | 
| 71 | 
            +
            }
         | 
| 72 | 
            +
             | 
| 73 | 
            +
            .slide:nth-child(odd) {
         | 
| 74 | 
            +
              -moz-border-radius: 0 20px;
         | 
| 75 | 
            +
              -khtml-border-radius: 0 20px;
         | 
| 76 | 
            +
              border-radius: 0 20px;
         | 
| 77 | 
            +
              -webkit-border-top-right-radius: 20px;
         | 
| 78 | 
            +
              -webkit-border-bottom-left-radius: 20px;
         | 
| 79 | 
            +
            }
         | 
| 80 | 
            +
             | 
| 81 | 
            +
            .slide p, .slide textarea {
         | 
| 82 | 
            +
              font-size: 120%;
         | 
| 83 | 
            +
            }
         | 
| 84 | 
            +
             | 
| 85 | 
            +
            .slide .counter {
         | 
| 86 | 
            +
              color: #999999;
         | 
| 87 | 
            +
              position: absolute;
         | 
| 88 | 
            +
              left: 20px;
         | 
| 89 | 
            +
              bottom: 20px;
         | 
| 90 | 
            +
              display: block;
         | 
| 91 | 
            +
              font-size: 70%;
         | 
| 92 | 
            +
            }
         | 
| 93 | 
            +
             | 
| 94 | 
            +
            .slide.title > .counter,
         | 
| 95 | 
            +
            .slide.segue > .counter,
         | 
| 96 | 
            +
            .slide.mainTitle > .counter {
         | 
| 97 | 
            +
              display: none;
         | 
| 98 | 
            +
            }
         | 
| 99 | 
            +
             | 
| 100 | 
            +
            .force-render {
         | 
| 101 | 
            +
              display: block;
         | 
| 102 | 
            +
              visibility: hidden;
         | 
| 103 | 
            +
            }
         | 
| 104 | 
            +
             | 
| 105 | 
            +
            .slide.far-past {
         | 
| 106 | 
            +
              display: block;
         | 
| 107 | 
            +
              margin-left: -2400px;
         | 
| 108 | 
            +
            }
         | 
| 109 | 
            +
             | 
| 110 | 
            +
            .slide.past {
         | 
| 111 | 
            +
              visibility: visible;
         | 
| 112 | 
            +
              display: block;
         | 
| 113 | 
            +
              margin-left: -1400px;
         | 
| 114 | 
            +
            }
         | 
| 115 | 
            +
             | 
| 116 | 
            +
            .slide.current {
         | 
| 117 | 
            +
              visibility: visible;
         | 
| 118 | 
            +
              display: block;
         | 
| 119 | 
            +
              margin-left: -450px;
         | 
| 120 | 
            +
            }
         | 
| 121 | 
            +
             | 
| 122 | 
            +
            .slide.future {
         | 
| 123 | 
            +
              visibility: visible;
         | 
| 124 | 
            +
              display: block;
         | 
| 125 | 
            +
              margin-left: 500px;
         | 
| 126 | 
            +
            }
         | 
| 127 | 
            +
             | 
| 128 | 
            +
            .slide.far-future {
         | 
| 129 | 
            +
              display: block;
         | 
| 130 | 
            +
              margin-left: 1500px;
         | 
| 131 | 
            +
            }
         | 
| 132 | 
            +
             | 
| 133 | 
            +
            body.three-d div.slides {
         | 
| 134 | 
            +
              -webkit-transform: translateX(50px) scale(0.8) rotateY(10deg);
         | 
| 135 | 
            +
              -moz-transform: translateX(50px) scale(0.8) rotateY(10deg);
         | 
| 136 | 
            +
              -o-transform: translateX(50px) scale(0.8) rotateY(10deg);
         | 
| 137 | 
            +
              transform: translateX(50px) scale(0.8) rotateY(10deg);
         | 
| 138 | 
            +
            }
         | 
| 139 | 
            +
             | 
| 140 | 
            +
            /* Content */
         | 
| 141 | 
            +
             | 
| 142 | 
            +
            @font-face { font-family: 'Junction'; src: url(src/Junction02.otf); }
         | 
| 143 | 
            +
            @font-face { font-family: 'LeagueGothic'; src: url(src/LeagueGothic.otf); }
         | 
| 144 | 
            +
             | 
| 145 | 
            +
            header {
         | 
| 146 | 
            +
              font-family: 'Droid Sans';
         | 
| 147 | 
            +
              font-weight: normal;
         | 
| 148 | 
            +
              letter-spacing: -.05em;
         | 
| 149 | 
            +
              text-shadow: rgba(0, 0, 0, 0.2) 0 2px 5px;
         | 
| 150 | 
            +
              left: 30px;
         | 
| 151 | 
            +
              top: 25px;
         | 
| 152 | 
            +
              margin: 0;
         | 
| 153 | 
            +
              padding: 0;
         | 
| 154 | 
            +
              font-size: 140%;
         | 
| 155 | 
            +
            }
         | 
| 156 | 
            +
             | 
| 157 | 
            +
            h1 {
         | 
| 158 | 
            +
              font-size: 140%;
         | 
| 159 | 
            +
              display: inline;
         | 
| 160 | 
            +
              font-weight: normal;
         | 
| 161 | 
            +
              padding: 0;
         | 
| 162 | 
            +
              margin: 0;
         | 
| 163 | 
            +
            }
         | 
| 164 | 
            +
             | 
| 165 | 
            +
            h2 {
         | 
| 166 | 
            +
              font-family: 'Droid Sans';
         | 
| 167 | 
            +
              color: black;
         | 
| 168 | 
            +
              font-size: 120%;
         | 
| 169 | 
            +
              padding: 0;
         | 
| 170 | 
            +
              margin: 20px 0;
         | 
| 171 | 
            +
            }
         | 
| 172 | 
            +
             | 
| 173 | 
            +
            h2:first-child {
         | 
| 174 | 
            +
              margin-top: 0;
         | 
| 175 | 
            +
            }
         | 
| 176 | 
            +
             | 
| 177 | 
            +
            section, footer {
         | 
| 178 | 
            +
              font-family: 'Droid Sans';
         | 
| 179 | 
            +
              color: #3f3f3f;
         | 
| 180 | 
            +
              text-shadow: rgba(0, 0, 0, 0.2) 0 2px 5px;
         | 
| 181 | 
            +
              margin: 100px 30px 0;
         | 
| 182 | 
            +
              display: block;
         | 
| 183 | 
            +
              overflow: hidden;
         | 
| 184 | 
            +
            }
         | 
| 185 | 
            +
             | 
| 186 | 
            +
            footer {
         | 
| 187 | 
            +
              font-size: 100%;
         | 
| 188 | 
            +
              margin: 20px 0 0 30px;
         | 
| 189 | 
            +
            }
         | 
| 190 | 
            +
             | 
| 191 | 
            +
            a {
         | 
| 192 | 
            +
              color: inherit;
         | 
| 193 | 
            +
              display: inline-block;
         | 
| 194 | 
            +
              text-decoration: none;
         | 
| 195 | 
            +
              line-height: 110%;
         | 
| 196 | 
            +
              border-bottom: 2px solid #3f3f3f;
         | 
| 197 | 
            +
            }
         | 
| 198 | 
            +
             | 
| 199 | 
            +
            ul {
         | 
| 200 | 
            +
              margin: 0;
         | 
| 201 | 
            +
              padding: 0;
         | 
| 202 | 
            +
            }
         | 
| 203 | 
            +
             | 
| 204 | 
            +
            button {
         | 
| 205 | 
            +
              font-size: 100%;
         | 
| 206 | 
            +
            }
         | 
| 207 | 
            +
             | 
| 208 | 
            +
            pre button {
         | 
| 209 | 
            +
              margin: 2px;
         | 
| 210 | 
            +
            }
         | 
| 211 | 
            +
             | 
| 212 | 
            +
            section.left {
         | 
| 213 | 
            +
              float: left;
         | 
| 214 | 
            +
              width: 390px;
         | 
| 215 | 
            +
            }
         | 
| 216 | 
            +
             | 
| 217 | 
            +
            section.small {
         | 
| 218 | 
            +
              font-size: 24px;
         | 
| 219 | 
            +
            }
         | 
| 220 | 
            +
             | 
| 221 | 
            +
            section.small ul {
         | 
| 222 | 
            +
              margin: 0 0 0 15px;
         | 
| 223 | 
            +
              padding: 0;
         | 
| 224 | 
            +
            }
         | 
| 225 | 
            +
             | 
| 226 | 
            +
            section.small li {
         | 
| 227 | 
            +
              padding-bottom: 0;
         | 
| 228 | 
            +
            }
         | 
| 229 | 
            +
             | 
| 230 | 
            +
            section.middle {
         | 
| 231 | 
            +
              line-height: 2em;
         | 
| 232 | 
            +
              text-align: center;
         | 
| 233 | 
            +
              display: table-cell;
         | 
| 234 | 
            +
              vertical-align: middle;
         | 
| 235 | 
            +
              height: 700px;
         | 
| 236 | 
            +
              width: 900px;
         | 
| 237 | 
            +
            }
         | 
| 238 | 
            +
             | 
| 239 | 
            +
            pre {
         | 
| 240 | 
            +
              text-align: left;
         | 
| 241 | 
            +
              font-family: 'Droid Sans Mono', Courier;
         | 
| 242 | 
            +
              font-size: 80%;
         | 
| 243 | 
            +
              padding: 10px 20px;
         | 
| 244 | 
            +
              background: rgba(255, 0, 0, 0.05);
         | 
| 245 | 
            +
              -webkit-border-radius: 8px;
         | 
| 246 | 
            +
              -khtml-border-radius: 8px;
         | 
| 247 | 
            +
              -moz-border-radius: 8px;
         | 
| 248 | 
            +
              border-radius: 8px;
         | 
| 249 | 
            +
              border: 1px solid rgba(255, 0, 0, 0.2);
         | 
| 250 | 
            +
            }
         | 
| 251 | 
            +
             | 
| 252 | 
            +
            pre select {
         | 
| 253 | 
            +
              font-family: Monaco, Courier;
         | 
| 254 | 
            +
              border: 1px solid #c61800;
         | 
| 255 | 
            +
            }
         | 
| 256 | 
            +
             | 
| 257 | 
            +
            input {
         | 
| 258 | 
            +
              font-size: 100%;
         | 
| 259 | 
            +
              margin-right: 10px;
         | 
| 260 | 
            +
              font-family: Helvetica;
         | 
| 261 | 
            +
              padding: 3px;
         | 
| 262 | 
            +
            }
         | 
| 263 | 
            +
            input[type="range"] {
         | 
| 264 | 
            +
              width: 100%;
         | 
| 265 | 
            +
            }
         | 
| 266 | 
            +
             | 
| 267 | 
            +
            button {
         | 
| 268 | 
            +
              margin: 20px 10px 0 0;
         | 
| 269 | 
            +
              font-family: Verdana;
         | 
| 270 | 
            +
            }
         | 
| 271 | 
            +
             | 
| 272 | 
            +
            button.large {
         | 
| 273 | 
            +
              font-size: 32px;
         | 
| 274 | 
            +
            }
         | 
| 275 | 
            +
             | 
| 276 | 
            +
            pre b {
         | 
| 277 | 
            +
              font-weight: normal;
         | 
| 278 | 
            +
              color: #c61800;
         | 
| 279 | 
            +
              text-shadow: #c61800 0 0 1px;
         | 
| 280 | 
            +
              /*letter-spacing: -1px;*/
         | 
| 281 | 
            +
            }
         | 
| 282 | 
            +
            pre em {
         | 
| 283 | 
            +
              font-weight: normal;
         | 
| 284 | 
            +
              font-style: normal;
         | 
| 285 | 
            +
              color: #18a600;
         | 
| 286 | 
            +
              text-shadow: #18a600 0 0 1px;
         | 
| 287 | 
            +
            }
         | 
| 288 | 
            +
            pre input[type="range"] {
         | 
| 289 | 
            +
              height: 6px;
         | 
| 290 | 
            +
              cursor: pointer;
         | 
| 291 | 
            +
              width: auto;
         | 
| 292 | 
            +
            }
         | 
| 293 | 
            +
             | 
| 294 | 
            +
            div.example {
         | 
| 295 | 
            +
              display: block;
         | 
| 296 | 
            +
              padding: 10px 20px;
         | 
| 297 | 
            +
              color: black;
         | 
| 298 | 
            +
              background: rgba(255, 255, 255, 0.4);
         | 
| 299 | 
            +
              -webkit-border-radius: 8px;
         | 
| 300 | 
            +
              -khtml-border-radius: 8px;
         | 
| 301 | 
            +
              -moz-border-radius: 8px;
         | 
| 302 | 
            +
              border-radius: 8px;
         | 
| 303 | 
            +
              margin-bottom: 10px;
         | 
| 304 | 
            +
              border: 1px solid rgba(0, 0, 0, 0.2);
         | 
| 305 | 
            +
            }
         | 
| 306 | 
            +
             | 
| 307 | 
            +
            video {
         | 
| 308 | 
            +
              -moz-border-radius: 8px;
         | 
| 309 | 
            +
              -khtml-border-radius: 8px;
         | 
| 310 | 
            +
              -webkit-border-radius: 8px;
         | 
| 311 | 
            +
              border-radius: 8px;
         | 
| 312 | 
            +
              border: 1px solid rgba(0, 0, 0, 0.2);
         | 
| 313 | 
            +
            }
         | 
| 314 | 
            +
             | 
| 315 | 
            +
            .key {
         | 
| 316 | 
            +
              font-family: 'Droid Sans';
         | 
| 317 | 
            +
              color: black;
         | 
| 318 | 
            +
              display: inline-block;
         | 
| 319 | 
            +
              padding: 6px 10px 3px 10px;
         | 
| 320 | 
            +
              font-size: 100%;
         | 
| 321 | 
            +
              line-height: 30px;
         | 
| 322 | 
            +
              text-shadow: none;
         | 
| 323 | 
            +
              letter-spacing: 0;
         | 
| 324 | 
            +
              bottom: 10px;
         | 
| 325 | 
            +
              position: relative;
         | 
| 326 | 
            +
              -moz-border-radius: 10px;
         | 
| 327 | 
            +
              -khtml-border-radius: 10px;
         | 
| 328 | 
            +
              -webkit-border-radius: 10px;
         | 
| 329 | 
            +
              border-radius: 10px;
         | 
| 330 | 
            +
              background: white;
         | 
| 331 | 
            +
              box-shadow: rgba(0, 0, 0, 0.1) 0 2px 5px;
         | 
| 332 | 
            +
              -webkit-box-shadow: rgba(0, 0, 0, 0.1) 0 2px 5px;
         | 
| 333 | 
            +
              -moz-box-shadow: rgba(0, 0, 0, 0.1) 0 2px 5px;
         | 
| 334 | 
            +
              -o-box-shadow: rgba(0, 0, 0, 0.1) 0 2px 5px;
         | 
| 335 | 
            +
            }
         | 
| 336 | 
            +
             | 
| 337 | 
            +
            .key { font-family: Arial; }
         | 
| 338 | 
            +
             | 
| 339 | 
            +
            :not(header) > .key {
         | 
| 340 | 
            +
              margin: 0 5px;
         | 
| 341 | 
            +
              bottom: 4px;
         | 
| 342 | 
            +
            }
         | 
| 343 | 
            +
             | 
| 344 | 
            +
            .two-column {
         | 
| 345 | 
            +
              -webkit-column-count: 2;
         | 
| 346 | 
            +
              -moz-column-count: 2;
         | 
| 347 | 
            +
              column-count: 2;
         | 
| 348 | 
            +
            }
         | 
| 349 | 
            +
             | 
| 350 | 
            +
            .stroke {
         | 
| 351 | 
            +
              -webkit-text-stroke-color: red;
         | 
| 352 | 
            +
              -webkit-text-stroke-width: 1px;
         | 
| 353 | 
            +
            } /* currently webkit-only */
         | 
| 354 | 
            +
             | 
| 355 | 
            +
            .center {
         | 
| 356 | 
            +
              text-align: center;
         | 
| 357 | 
            +
            }
         | 
| 358 | 
            +
             | 
| 359 | 
            +
            #presentation-counter {
         | 
| 360 | 
            +
              color: #ccc;
         | 
| 361 | 
            +
              font-size: 70%;
         | 
| 362 | 
            +
              letter-spacing: 1px;
         | 
| 363 | 
            +
              position: absolute;
         | 
| 364 | 
            +
              top: 40%;
         | 
| 365 | 
            +
              left: 0;
         | 
| 366 | 
            +
              width: 100%;
         | 
| 367 | 
            +
              text-align: center;
         | 
| 368 | 
            +
            }
         | 
| 369 | 
            +
             | 
| 370 | 
            +
            div:not(.current).reduced {
         | 
| 371 | 
            +
              -webkit-transform: scale(0.8);
         | 
| 372 | 
            +
              -moz-transform: scale(0.8);
         | 
| 373 | 
            +
              -o-transform: scale(0.8);
         | 
| 374 | 
            +
              transform: scale(0.8);
         | 
| 375 | 
            +
            }
         | 
| 376 | 
            +
             | 
| 377 | 
            +
            .no-transitions {
         | 
| 378 | 
            +
              -webkit-transition: none;
         | 
| 379 | 
            +
              -moz-transition: none;
         | 
| 380 | 
            +
              -o-transition: none;
         | 
| 381 | 
            +
              transition: none;
         | 
| 382 | 
            +
            }
         | 
| 383 | 
            +
             | 
| 384 | 
            +
            .no-gradients {
         | 
| 385 | 
            +
              background: none;
         | 
| 386 | 
            +
              background-color: #fff;
         | 
| 387 | 
            +
            }
         | 
| 388 | 
            +
             | 
| 389 | 
            +
            ul.bulleted {
         | 
| 390 | 
            +
              padding-left: 30px;
         | 
| 391 | 
            +
            }
         | 
| 392 | 
            +
             | 
| Binary file | 
| Binary file | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            // Add your custom JavaScript for your KeyDown presentation here
         |