monocle-rails 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. data/.DS_Store +0 -0
  2. data/.gitignore +17 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +29 -0
  6. data/Rakefile +1 -0
  7. data/lib/monocle/rails.rb +8 -0
  8. data/lib/monocle/rails/version.rb +5 -0
  9. data/monocle-rails.gemspec +23 -0
  10. data/vendor/.DS_Store +0 -0
  11. data/vendor/assets/.DS_Store +0 -0
  12. data/vendor/assets/javascripts/.DS_Store +0 -0
  13. data/vendor/assets/javascripts/compat/browser.js +120 -0
  14. data/vendor/assets/javascripts/compat/css.js +145 -0
  15. data/vendor/assets/javascripts/compat/env.js +463 -0
  16. data/vendor/assets/javascripts/compat/gala.js +469 -0
  17. data/vendor/assets/javascripts/compat/stubs.js +50 -0
  18. data/vendor/assets/javascripts/controls/contents.js +59 -0
  19. data/vendor/assets/javascripts/controls/magnifier.js +51 -0
  20. data/vendor/assets/javascripts/controls/panel.js +136 -0
  21. data/vendor/assets/javascripts/controls/placesaver.js +100 -0
  22. data/vendor/assets/javascripts/controls/scrubber.js +140 -0
  23. data/vendor/assets/javascripts/controls/spinner.js +99 -0
  24. data/vendor/assets/javascripts/controls/stencil.js +410 -0
  25. data/vendor/assets/javascripts/core/billboard.js +120 -0
  26. data/vendor/assets/javascripts/core/book.js +467 -0
  27. data/vendor/assets/javascripts/core/bookdata.js +59 -0
  28. data/vendor/assets/javascripts/core/component.js +413 -0
  29. data/vendor/assets/javascripts/core/events.js +56 -0
  30. data/vendor/assets/javascripts/core/factory.js +194 -0
  31. data/vendor/assets/javascripts/core/formatting.js +317 -0
  32. data/vendor/assets/javascripts/core/monocle.js +16 -0
  33. data/vendor/assets/javascripts/core/place.js +210 -0
  34. data/vendor/assets/javascripts/core/reader.js +683 -0
  35. data/vendor/assets/javascripts/core/selection.js +158 -0
  36. data/vendor/assets/javascripts/core/styles.js +155 -0
  37. data/vendor/assets/javascripts/dimensions/columns.js +218 -0
  38. data/vendor/assets/javascripts/flippers/instant.js +78 -0
  39. data/vendor/assets/javascripts/flippers/scroller.js +128 -0
  40. data/vendor/assets/javascripts/flippers/slider.js +469 -0
  41. data/vendor/assets/javascripts/monocore.js +27 -0
  42. data/vendor/assets/javascripts/monoctrl.js +1 -0
  43. data/vendor/assets/javascripts/panels/eink.js +61 -0
  44. data/vendor/assets/javascripts/panels/imode.js +180 -0
  45. data/vendor/assets/javascripts/panels/magic.js +297 -0
  46. data/vendor/assets/javascripts/panels/marginal.js +50 -0
  47. data/vendor/assets/javascripts/panels/twopane.js +34 -0
  48. data/vendor/assets/stylesheets/monocore.css +194 -0
  49. data/vendor/assets/stylesheets/monoctrl.css +168 -0
  50. metadata +129 -0
@@ -0,0 +1,50 @@
1
+ // Provides page-flipping panels only in the margins of the book. This is not
2
+ // entirely suited to small screens with razor-thin margins, but is an
3
+ // appropriate panel class for larger screens (like, say, an iPad).
4
+ //
5
+ // Since the flipper hit zones are only in the margins, the actual text content
6
+ // of the book is always selectable.
7
+ //
8
+ Monocle.Panels.Marginal = function (flipper, evtCallbacks) {
9
+
10
+ var API = { constructor: Monocle.Panels.Marginal }
11
+ var k = API.constants = API.constructor;
12
+ var p = API.properties = {}
13
+
14
+
15
+ function initialize() {
16
+ p.panels = {
17
+ forwards: new Monocle.Controls.Panel(),
18
+ backwards: new Monocle.Controls.Panel()
19
+ }
20
+
21
+ for (var dir in p.panels) {
22
+ flipper.properties.reader.addControl(p.panels[dir]);
23
+ p.panels[dir].listenTo(evtCallbacks);
24
+ p.panels[dir].setDirection(flipper.constants[dir.toUpperCase()]);
25
+
26
+ var prop = dir == "forwards" ? "right" : "left";
27
+ p.panels[dir].properties.div.style[prop] = 0
28
+ }
29
+ setWidths();
30
+ }
31
+
32
+
33
+ function setWidths() {
34
+ var page = flipper.properties.reader.dom.find('page');
35
+ var sheaf = page.m.sheafDiv;
36
+ var bw = sheaf.offsetLeft;
37
+ var fw = page.offsetWidth - (sheaf.offsetLeft + sheaf.offsetWidth);
38
+ bw = Math.floor(((bw - 2) / page.offsetWidth) * 10000 / 100) + "%";
39
+ fw = Math.floor(((fw - 2) / page.offsetWidth) * 10000 / 100) + "%";
40
+ p.panels.forwards.properties.div.style.width = fw;
41
+ p.panels.backwards.properties.div.style.width = bw;
42
+ }
43
+
44
+
45
+ API.setWidths = setWidths;
46
+
47
+ initialize();
48
+
49
+ return API;
50
+ }
@@ -0,0 +1,34 @@
1
+ // The simplest page-flipping interaction system: contact to the left half of
2
+ // the reader turns back one page, contact to the right half turns forward
3
+ // one page.
4
+ //
5
+ Monocle.Panels.TwoPane = function (flipper, evtCallbacks) {
6
+
7
+ var API = { constructor: Monocle.Panels.TwoPane }
8
+ var k = API.constants = API.constructor;
9
+ var p = API.properties = {}
10
+
11
+
12
+ function initialize() {
13
+ p.panels = {
14
+ forwards: new Monocle.Controls.Panel(),
15
+ backwards: new Monocle.Controls.Panel()
16
+ }
17
+
18
+ for (var dir in p.panels) {
19
+ flipper.properties.reader.addControl(p.panels[dir]);
20
+ p.panels[dir].listenTo(evtCallbacks);
21
+ p.panels[dir].setDirection(flipper.constants[dir.toUpperCase()]);
22
+ var style = { "width": k.WIDTH };
23
+ style[(dir == "forwards" ? "right" : "left")] = 0;
24
+ p.panels[dir].properties.div.dom.setStyles(style);
25
+ }
26
+ }
27
+
28
+
29
+ initialize();
30
+
31
+ return API;
32
+ }
33
+
34
+ Monocle.Panels.TwoPane.WIDTH = "50%";
@@ -0,0 +1,194 @@
1
+ /*===========================================================================
2
+
3
+ This is a base-level Monocle stylesheet. It assumes no class-prefix has been
4
+ given to the Reader during initialisation - if one has, you can copy and
5
+ modify this stylesheet accordingly.
6
+
7
+ ---------------------------------------------------------------------------*/
8
+
9
+ /* The reader object that holds pretty much everything.
10
+ * (A direct child of the element passed to reader initialisation). */
11
+ div.monelem_container {
12
+ background-color: black;
13
+ }
14
+
15
+
16
+ /* The div that mimics a leaf of paper in a book. */
17
+ div.monelem_page {
18
+ background: white;
19
+ top: 0;
20
+ left: 0;
21
+ bottom: 3px;
22
+ right: 5px;
23
+ border-right: 1px solid #999;
24
+ }
25
+
26
+
27
+ /* The div within the page that determines page margins. */
28
+ div.monelem_sheaf {
29
+ top: 1em;
30
+ left: 1em;
31
+ bottom: 1em;
32
+ right: 1em;
33
+ }
34
+
35
+
36
+ /* The iframe within the page that loads the content of the book. */
37
+ div.monelem_component {
38
+ }
39
+
40
+
41
+ /* A panel that sits above the entire reader object, holding controls. */
42
+ div.monelem_overlay {
43
+ }
44
+
45
+
46
+ /* A full-size panel to display an announcement (iframe or div) */
47
+ div.monelem_billboard_container {
48
+ background: #FFF;
49
+ position: absolute;
50
+ top: 0;
51
+ left: 0;
52
+ height: 100%;
53
+ width: 100%;
54
+ z-index: 2000;
55
+ -webkit-transform: scale(0);
56
+ -moz-transform: scale(0);
57
+ transform: scale(0);
58
+ -webkit-transform-origin: -0 -0;
59
+ -moz-transform-origin: -0 -0;
60
+ transform-origin: -0 -0;
61
+ }
62
+
63
+ .monelem_billboard_inner {
64
+ height: 100%;
65
+ width: 100%;
66
+ border: none;
67
+ overflow: auto;
68
+ /*-webkit-overflow-scrolling: touch;*/ /* This is sexy, but crashy. */
69
+ }
70
+
71
+ div.monelem_billboard_inner {
72
+ min-width: 100%;
73
+ min-height: 100%;
74
+ text-align: center;
75
+ vertical-align: middle;
76
+ display: -webkit-box;
77
+ -webkit-box-pack: center;
78
+ -webkit-box-align: center;
79
+ }
80
+
81
+
82
+ div.monelem_billboard_close {
83
+ position: absolute;
84
+ top: 0;
85
+ right: 0;
86
+ width: 50px;
87
+ height: 30px;
88
+ color: white;
89
+ background: #C00;
90
+ cursor: pointer;
91
+ border-bottom-left-radius: 4px;
92
+ text-shadow: 1px 1px 1px #900;
93
+ font: 9pt Helvetica Neue, Helvetica, sans-serif;
94
+ }
95
+
96
+ div.monelem_billboard_close:after {
97
+ display: block;
98
+ content: 'Close';
99
+ width: 100%;
100
+ line-height: 30px;
101
+ text-align: center;
102
+ }
103
+
104
+ div.monelem_book_fatality {
105
+ font-family: Helvetica Neue, Helvetica, sans-serif;
106
+ margin: 0 auto;
107
+ max-width: 75%;
108
+ }
109
+
110
+ div.monelem_book_fatality p {
111
+ line-height: 1.4;
112
+ }
113
+
114
+
115
+ /*===========================================================================
116
+ PANELS
117
+ ---------------------------------------------------------------------------*/
118
+
119
+
120
+ .monelem_panels_imode_panel {
121
+ background: rgba(255,255,255,0.7);
122
+ opacity: 0;
123
+ }
124
+
125
+ .monelem_panels_imode_backwardsPanel {
126
+ -webkit-box-shadow: 1px 1px 3px #777;
127
+ -moz-box-shadow: 1px 1px 3px #777;
128
+ box-shadow: 1px 1px 3px #777;
129
+ }
130
+
131
+ .monelem_panels_imode_forwardsPanel {
132
+ -webkit-box-shadow: -1px 1px 3px #777;
133
+ -moz-box-shadow: -1px 1px 3px #777;
134
+ box-shadow: -1px 1px 3px #777;
135
+ }
136
+
137
+ .monelem_panels_imode_centralPanel {
138
+ }
139
+
140
+ .monelem_panels_imode_toggleIcon {
141
+ position: absolute;
142
+ right: 0;
143
+ bottom: 0;
144
+ width: 50px;
145
+ height: 50px;
146
+ background-repeat: no-repeat;
147
+ background-position: center center;
148
+ }
149
+
150
+ /* If you modify this you could significantly change the way panels work. */
151
+ div.monelem_controls_panel_expanded {
152
+ left: 0 !important;
153
+ width: 100% !important;
154
+ z-index: 1001 !important;
155
+ }
156
+
157
+ /*===========================================================================
158
+ Flippers
159
+ ---------------------------------------------------------------------------*/
160
+
161
+ div.monelem_flippers_slider_wait {
162
+ position: absolute;
163
+ right: 0px;
164
+ top: 0px;
165
+ width: 92px;
166
+ height: 112px;
167
+ background-repeat: no-repeat;
168
+ -webkit-background-size: 100%;
169
+ -moz-background-size: 100%;
170
+ background-size: 100%;
171
+ }
172
+
173
+ @media screen and (max-width: 640px) {
174
+ div.monelem_flippers_slider_wait {
175
+ width: 61px;
176
+ height: 75px;
177
+ }
178
+ }
179
+
180
+
181
+ /*===========================================================================
182
+ DATA URIs
183
+
184
+ These are data-uri packed images, inlined for loading speed and simplicity.
185
+ Placed at the end of this file because they're visually noisy...
186
+ ---------------------------------------------------------------------------*/
187
+
188
+ div.monelem_panels_imode_toggleIcon {
189
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB8AAAAaCAYAAABPY4eKAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1%2B%2FAAAABV0RVh0Q3JlYXRpb24gVGltZQAzMC82LzEwBMfmVwAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNXG14zYAAANYSURBVEiJtdZbiNVVFMfxj8cx85JkIGlqSESgOGA9WIQgGmTRUyRaYFJDnUWYGV2eyiCpkIbEKJI1UqYvUkmFDxFBgpghonajSDCM7hcxLSnt4ulh%2F2c4HufMTOH8Xs75%2F%2Ffa67v3%2Bu%2B91hphGJWZNUzCXJyKiHd6xxqNhhGDTB6NOViAyzARY3EaP%2BNL7MCBiPi9Ze4leBlTsR9jcCnuiYgDbeGZeV4F7EINe7EP3%2BJ49W4GrsZ8NPAGXouIk5k5F93YFhHPVT5H4kbcjaX1ev3kWfDMPB9P4ko8ERE7BopONWcOVmMc1uBRrG8Oc5Ptq1hdr9cPdrQMTMUWfBQRCweD9ioiPsQtmbkeu7G8P3ClsZSI98EzcxqeUsLXM1RwZs7ErRiJKXgQN2Tmzoj4qsV2Hn7BYcq369UaHIqI5yPizyGCx2MPfsRVOBoR6%2FA%2BNmXmqCbbm%2FAiMiJO9cEzcwEuwLODwMZk5oXVLYA6PouIF%2FC6cvBgI37D0mreStyJroh4r9df785XYGtEHG8Hfnjb1w08Xu2qq3regtOZuaka2whV5NZieWY%2BhkV4ICJ2N%2FusZeYMJQm8NdCuuxdPH4HENGzsXjx9REQcqRxvR2dEfNBrHxF7lHywGPXW7085cEvwZkScHAheaRz%2BwngcqyAnlEPan%2Fbh5oj4rr%2FBDlyOXUMA%2Fx%2F9oFytM5SZs3t6epbWlOtxeJjg%2BzEmMye3vF%2BCYx2YhdFnTTs3OoQT2JqZ3TiC2zETyzrwrnIwhkMTqwVsxW24GLsiYmWj0dCBo2gNy7nSRfgpIjZjM6WU1ut1lHt%2BGLOHCd6J79sN1pSkMSUzJwwD%2FBoD5I9aRHyiFIVFQ3D2j1KR%2Fh7MMDPnY1JE7GwLr3434N5BnI3GFRiFzuai0Ub34aWBDGr0pcKPM%2FPpqovpT11KoVinNAvXt1lkLTNXKFesXU1HUz3HI0plWqW0QGcoIjYoERpMy7AS17b2da06o43KzLF4RanRzwwx3%2FfOHYW7lL5ubUR83p9do9Ho%2B99fDzcZDynfdxPejog%2FBoCOxHW4AxOwKiK%2BaGc%2FILzJ6ULcXznciwM4qFSzCUob3Km0UCeU3W5v5%2B8%2FwZsWMQvzlN1Nq8C%2F4ht8qkRm72B%2B%2BoP%2FC0sEOftJmUbfAAAAAElFTkSuQmCC);
190
+ }
191
+
192
+ div.monelem_flippers_slider_wait {
193
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFwAAABwCAMAAACkX%2BcnAAAB0VBMVEUAAACDg4OEhISFhYWGhoaHh4eIiIiJiIiJiYmKioqLi4uMjIyNjY2Ojo6Pj4%2BQkJCRkZGSkpKTk5OUlJSVlZWWlpaXl5eYmJiZmZmampqbm5ucnJycnJ2dnZ2dnZ6dnZ%2Benp6enp%2Bfn5%2Bfn6CgoKCgoKGhoKChoaGioqKjo6OkpKSlpaWmpaWmpqaoqKiqqqqrq6usrKytra2urq6wsLCxsbGzs7O0tLS0tLW1tbW1tba1tbe2tri4uLi4uLm4uLq6ury7u7y8vLy8vL28vL%2B9vb2%2Bvr6%2Bvr%2B%2Fv7%2B%2Fv8HAwMDAwMLAwMPBwcPCwsPExMTExMXFxcXGxsbHx8fIyMjJycrOztDOztHPz9DPz9HR0dTS0tTT09TT09XU1NbU1NfV1dfW1tjW1tnX19fX19rY2Nra2tva2tzd3eDe3t7f39%2Fh4eHi4uLl5enn5%2Bnp6ezp6e3q6u3q6u7r6%2B7r6%2B%2Fs7O%2Fs7PDt7fDt7fHu7vHu7vLv7%2B%2Fv7%2FLv7%2FPw8PDw8PPw8PTx8fTx8fXy8vXy8vbz8%2Fbz8%2Ff09Pf09Pj19fj19fn29vn39%2Fn39%2Fr4%2BPr4%2BPv5%2Bfv6%2Bvv6%2Bvz7%2B%2Fz7%2B%2F38%2FP39%2Ff39%2Ff7%2B%2Fv7%2B%2Fv%2F%2F%2F%2F%2BHSJEZAAAAAXRSTlMAQObYZgAAA5dJREFUaN61lk1uE0EQhd%2BrsQlREAgkFkQKLJByteQU3IIdd2OBYIFASFmAFLurWPT0uOfXme6aWUXy6PNL9XPXR3z6DSI93wQ0GkHjzweapM%2B%2Btn8SMAERPzKQQKN7IDRhD2APgkbumucvXp24T3s%2BH47H7%2F9U1AxmpvaDzV5IUMBfD0CbQXYPly93K%2BEiwneqphpMVc3e7p492zciQhGKNN2bX%2F42shJOEQFIQgAKgfgdpvFz7d58%2FPO4Fn5PiggBAUkAYhoUMJipwU5vhsfjWjhESMTsBChQVVMDYICadfjD4VAAFyGYZVcN7Vzar4iP6frkd5RuLjG7WlCFwdSy4ICtPlBAKJLNhYBq6HKf8IHrx4J7IQX5maqFLHeC3yrWwyEiFACSzlTVVFNuzQZTAG%2BrLoQwVT1kubvGF4wlVj2vi2isuvWrbiXJIUISYKwL5qpuWgbvXQHxSCeqbiXwvOrpClC1QdXViuAQUnpXgE1U%2FSb%2BUwVVF7JfdTWN2G4uFyiaeZz6oOpB1drzTF0sSw6ySdc5Y%2FZe1SPeCpPfS6p6yq4arK16V5eyAwWEp6oTEKpqewXEygBW9iMabzsAZjqoOkuTL227tjJvSg8UaG%2FGhW33obSK8d4dVj1eAV3VrXQsuBtXvd12XdWteCxg2nbobbuU2xQsHst42zHe6lllypOnbcdUeZ62HUzNoOXJz4vdpZXDz4rde5TDz4rdsQ6%2BLHZNxVjOip3VJD8ndjVtOSt2rEp%2BRuxCHXxZ7G6tCr4sdhUX1xPETmvhC2KndWNZFjtUjmVR7KRyLItiF2qTL4ndtdXCF8Tuqhq%2BIHaonfmi2Ek1fEHsQjV8YdtVt2VR7DzgM2J36QCfFbsbB%2Fi82MEBPit2HvBZsfMYy6zYuSSfq7oLfE7sLpzgk2J37QKfETt1gc%2BJnQ98Rux84NNiJ07wSbELTvBpsXOCT4rdRz%2F4WOzMCz4pdl7wKbGDG3xC7NzGMiV2jvCx2PnNfELsbvzgY7FrHOFjsXOEj7YdHeFjsfOF96sePOFjsXOED8XutSt8sO2uXOFDsfOFD6ruCx9U3Rc%2BEDt3eC52zvC%2B2DnD%2B2LnDe9V3RveEzt3eC527vBc7NzhudhtAe%2BuAH94VnV%2FeCZ2G8BzscMmUxdgi5lnYrcF%2FCR2wCZHSvftP9x2m8DTttsEnsRuK7hs8%2FPPxG4beCt2G8HbbbcNPG67reAUEfwHRePBMkvuZ4wAAAAASUVORK5CYII%3D);
194
+ }
@@ -0,0 +1,168 @@
1
+ /*===========================================================================
2
+ CONTROLS
3
+
4
+ The standard Monocle stylesheet for the optional Monocle controls. See
5
+ comments for monocore.css, which apply here too.
6
+ ---------------------------------------------------------------------------*/
7
+
8
+ /* Contents */
9
+ div.monelem_controls_contents_container {
10
+ position: absolute;
11
+ width: 75%;
12
+ height: 75%;
13
+ left: 12.5%;
14
+ top: 12.5%;
15
+ background: #EEE;
16
+ border: 2px solid #F7F7F7;
17
+ border-radius: 9px;
18
+ overflow-y: auto;
19
+ -webkit-overflow-scrolling: touch;
20
+ -moz-border-radius: 9px;
21
+ -webkit-border-radius: 9px;
22
+ box-shadow: 1px 2px 6px rgba(0,0,0,0.5);
23
+ -moz-box-shadow: 1px 2px 6px rgba(0,0,0,0.5);
24
+ -webkit-box-shadow: 1px 2px 6px rgba(0,0,0,0.5);
25
+ }
26
+
27
+ ol.monelem_controls_contents_list {
28
+ margin: 6px;
29
+ padding: 0;
30
+ }
31
+
32
+ li.monelem_controls_contents_chapter {
33
+ list-style: none;
34
+ line-height: 220%;
35
+ padding-left: 1em;
36
+ padding-right: 2em;
37
+ border-bottom: 2px groove #FEFEFE;
38
+ cursor: pointer;
39
+ }
40
+
41
+ li.monelem_controls_contents_chapter_active {
42
+ background: #999;
43
+ color: white;
44
+ }
45
+
46
+ /* Magnifier */
47
+
48
+ .monelem_controls_magnifier_button {
49
+ cursor: pointer;
50
+ color: #555;
51
+ position: absolute;
52
+ top: 2px;
53
+ right: 10px;
54
+ padding: 0 2px;
55
+ }
56
+
57
+ .monelem_controls_magnifier_a {
58
+ font-size: 11px;
59
+ }
60
+
61
+ .monelem_controls_magnifier_A {
62
+ font-size: 18px;
63
+ opacity: 0.3;
64
+ }
65
+
66
+
67
+ /* Spinner */
68
+
69
+ .monelem_controls_spinner_anim {
70
+ position: absolute;
71
+ width: 100%;
72
+ height: 100%;
73
+ background-color: white;
74
+ background-repeat: no-repeat;
75
+ background-position: center center;
76
+ }
77
+ .monelem_controls_spinner_anim.monelem_dormant {
78
+ width: 0;
79
+ height: 0;
80
+ }
81
+
82
+
83
+ /* Scrubber */
84
+
85
+ div.monelem_controls_scrubber_container {
86
+ position: absolute;
87
+ left: 1em;
88
+ right: 1em;
89
+ bottom: 4px;
90
+ height: 30px;
91
+ background: rgba(255,255,255,0.8);
92
+ }
93
+
94
+ div.monelem_controls_scrubber_track {
95
+ margin-top: 10px;
96
+ height: 5px;
97
+ border: 1px solid #999;
98
+ cursor: pointer;
99
+ }
100
+
101
+ div.monelem_controls_scrubber_needle {
102
+ position: absolute;
103
+ width: 14px;
104
+ height: 14px;
105
+ top: 5px;
106
+ background: #CCC;
107
+ border: 1px solid #999;
108
+ border-radius: 8px;
109
+ -moz-border-radius: 8px;
110
+ -webkit-border-radius: 8px;
111
+ }
112
+
113
+ div.monelem_controls_scrubber_trail {
114
+ position: absolute;
115
+ background: #DDD;
116
+ top: 11px;
117
+ left: 1px;
118
+ height: 5px;
119
+ }
120
+
121
+ div.monelem_controls_scrubber_bubble {
122
+ display: none;
123
+ position: absolute;
124
+ padding: 1em;
125
+ min-width: 20%;
126
+ max-width: 30%;
127
+ bottom: 2.5em;
128
+ background: rgba(0, 0, 0, 0.9);
129
+ color: #CCC;
130
+ font: bold 12px Lucida Grande, Tahoma, Helvetica, Arial, sans-serif;
131
+ white-space: nowrap;
132
+ text-overflow: ellipsis;
133
+ overflow: hidden;
134
+ border-radius: 10px;
135
+ -moz-border-radius: 10px;
136
+ -webkit-border-radius: 10px;
137
+ }
138
+
139
+
140
+ /* Stencil */
141
+ div.monelem_controls_stencil_container {
142
+ position: absolute;
143
+ top: 0;
144
+ left: 0;
145
+ width: 0;
146
+ height: 0;
147
+ }
148
+
149
+ .monelem_controls_stencil_mask {
150
+ display: block;
151
+ position: absolute;
152
+ }
153
+
154
+ div.monelem_controls_stencil_highlighted .monelem_controls_stencil_mask {
155
+ background: rgba(0,0,255,0.15);
156
+ }
157
+
158
+
159
+ /*===========================================================================
160
+ DATA URIs
161
+
162
+ These are data-uri packed images, inlined for loading speed and simplicity.
163
+ Placed at the end of this file because they're visually noisy...
164
+ ---------------------------------------------------------------------------*/
165
+
166
+ div.monelem_controls_spinner_anim {
167
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAA0CAMAAAANBM47AAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAAsSAAALEgHS3X78AAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M1cbXjNgAAABV0RVh0Q3JlYXRpb24gVGltZQAxNy81LzEwnOhoKAAAAE5QTFRFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxKKmWQAAABp0Uk5TAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBl0wLilAAAC8klEQVQYGZXBB2LjOAADQFCimtVFEoD//9HLbrJxipzoZoBToYptUwV8V/Xrsc8RP6i7aduPXHI69mWIAR9UY6Is5rnCuTBsWXeLkijbTFOLf7okW6R8zxEnwphskfIrifJdW4u/RtlpbGLsdjoHfDNkSZTSNg192w3jchSJEtcawCRzDvgjLPINX1SbSSvNXcC7eNuLXpQuTFbp8CZkH/isyS68H0PAF+0iUzxoNni33HPAR51UxDHgRLObslLEw3TPFT7oKPqIeOImURs+WJ0CHlqKXgLOxL4NgyRqxbuqeMNDXURPOBNWSokquRRP+GeVOzwcLlpwJmx3WVJuY2ZRi1ezfOBhdNGGU52ZhrloBzqSucKLerdLxLtIKlc4Nd9LA6wuNTC5aAbQZzs3eFhE9Tg3mw2wqkQgHCZrTJK3iIcoasMTvXX0E30EAK2k+Wbrho8mky2eCLslSz3+2ERKucVHIZsbnqp2WWXEX60ossMnrakeP+jGocabg9SGzyaXHHDRpOIO/zRjDWCTNlzVsLjFm4bODapE33BZoke8mVy8oqXY4rLNXvFmEnXDKJYaly3SjlchkSOwiCngstFMeDXLE4CVygGX3e6FawUgzFIKANbiHHDZ7U4qL7c5SWzxYqFywGXjvVD3F3Zu8ccs5gqXzeYx7CTTWOOvnmTEZZu0ItSxrvAmZrrHZYme8dkhLbiqLkUDPlvMA1cNIiM+613Y4KJNSviiprTgmrrQM75arVzhkllUxFetqBlXVEXa8d0hMeKCxVSH73rRG37XidpxZlXRiN9UhYUtztRFVI+fhUPFE851KlSHn4TNxTueGU2yx3PVbipVeGpxIaeAJ2IynRv8YHEp3iNOjRRdGvxotGjONb7pD7M4RfyiK6ZclhYf1bdDprRW+FW9SZSUlqGtq1BVTTftRaKce1zS7bIpWyW/oK0i38tU4apupWyRsijKVhoj/o+6W45cJEoqaR+bgP8txH5a1nUZ2gq/+Q/51T5MhuG3fQAAAABJRU5ErkJggg==);
168
+ }