summaryrefslogtreecommitdiffstats
path: root/doc/backends/deckjs/deck.js/extensions/split/deck.split.js
diff options
context:
space:
mode:
Diffstat (limited to 'doc/backends/deckjs/deck.js/extensions/split/deck.split.js')
-rw-r--r--doc/backends/deckjs/deck.js/extensions/split/deck.split.js59
1 files changed, 59 insertions, 0 deletions
diff --git a/doc/backends/deckjs/deck.js/extensions/split/deck.split.js b/doc/backends/deckjs/deck.js/extensions/split/deck.split.js
new file mode 100644
index 00000000..081035c4
--- /dev/null
+++ b/doc/backends/deckjs/deck.js/extensions/split/deck.split.js
@@ -0,0 +1,59 @@
+/*!
+Deck JS - deck.split
+Copyright (c) 2012 Qingping Hou <dave2008713@gmail.com>
+ about.houqp.me
+Dual licensed under the MIT license and GPL license.
+https://github.com/imakewebthings/deck.js/blob/master/MIT-license.txt
+https://github.com/imakewebthings/deck.js/blob/master/GPL-license.txt
+*/
+
+/*
+This module splits a long slide into multiple slides.
+*/
+(function($, deck, undefined) {
+ var $d = $(document);
+
+ createEmptySlide = function(title_el) {
+ slide = $(document.createElement('section'));
+ slide.addClass('slide').append(title_el.clone());
+ return slide;
+ };
+
+ $d.bind('deck.beforeInit', function() {
+ $(".slide").each( function(i, slide) {
+ /* each slide */
+ var is_split = false,
+ prev_slide = $(slide),
+ /* extract title which will be added to each new slides */
+ title_el = prev_slide.children('h2'),
+ tmp_slide = createEmptySlide(title_el);
+
+ $(slide).children().each(function() {
+ /* for each element inside original slide */
+ var el = $(this);
+
+ if (el.css('page-break-after') == 'always') {
+ if (is_split) {
+ tmp_slide.insertAfter(prev_slide);
+ prev_slide = tmp_slide;
+ tmp_slide = createEmptySlide(title_el);
+ }
+ else {
+ /* find the first page break */
+ is_split = true;
+ }
+ }
+ else {
+ if (is_split) {
+ tmp_slide.append(el);
+ }
+ }
+ })
+ /* add remaining elements to a new slides */
+ if (is_split) {
+ tmp_slide.insertAfter(prev_slide);
+ }
+ });
+ })
+})(jQuery, 'deck');
+