├── .babelrc
├── .gitignore
├── LICENSE
├── README.md
├── dist
├── main.css
├── main.css.map
├── main.dev.js
├── main.dev.js.map
└── main.prod.js
├── example
├── .babelrc
├── .gitignore
├── components
│ └── App.vue
├── css
│ └── style.css
├── dist
│ └── main.bundle.js
├── index.html
├── main.js
├── package.json
└── webpack.config.js
├── package-lock.json
├── package.json
├── src
├── components
│ └── VueOdometer.vue
└── index.js
└── webpack.config.js
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": ["env"]
3 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules/
3 | npm-debug.log
4 | test/
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017 Jeffery ThaGintoki
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | Odometer
3 |
4 |
5 |
6 | # About Vue-Odometer
7 | Smoothly transitions numbers with ease. Use this library to give you application a smooth animation, only applicable on numbers, for more details about the OdometerJS pelase refer to: https://github.com/HubSpot/odometer
8 |
9 | ## Installation
10 | ```console
11 | npm install v-odometer
12 | ```
13 |
14 | ## NOTE
15 | If you are getting the error of "Unknown Odometer keyword", this means that you are missing odometer library in your application, simply because the Odometer library is not yet exported as an AMD module and still only a commenJS file (refer to: [AMD exporting issues](https://github.com/HubSpot/odometer/pull/102)).
16 | However if you are not building your applciation in a webpack envirment or similar, and you include VueJS file from a public cdn, then you are fine to include the `./v-odometer/dist/main.prod.js`, the Vue will be public in your window there for this component will be automatically integrated as a global component and you can simply use it directly insidde your html file:
17 |
18 | ```html
19 | ...
20 |
21 | ...
22 | ```
23 |
24 | ## Usage
25 | #### ECMAScript 6 (ES6)/ ECMAScript 2015 (ES2015)
26 | To cherry pick the component, start by importing it in the file where it is being used:
27 | ```javascript
28 | import VueOdometer from 'v-odometer/src'
29 | ```
30 | Then add it to your component definition:
31 |
32 | ```javascript
33 | Vue.component('my-component', {
34 | components: {
35 | 'vue-odometer': VueOdometer
36 | }
37 | // ...
38 | })
39 | ```
40 | Or register it globally:
41 |
42 | ```javascript
43 | Vue.component('vue-odometer', VueOdometer);
44 | ```
45 | #### ECMAScript 5 (ES5)
46 | ```xml
47 | ...
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 | Odometer - VueJS component
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 | ...
67 |
68 | ...
69 |
70 |
71 | ...
72 | ```
73 |
74 | ```javascript
75 | var app = new Vue({
76 | data: {
77 | mynumber: ""
78 | }
79 | })
80 | ```
81 | **Properties:**
82 | ```typescript
83 | value: { type: Number, default: () => 0 },
84 | theme: { type: String, default: () => 'minimal' },
85 | format: { type: String, default: () => '(.ddd),dd' },
86 | duration: { type: Number, default: () => 3000 },
87 | className: { type: String, default: () => 'odometer' },
88 | animation: { type: String, default: () => 'count' },
89 | formatFunction: { type: Function },
90 | ```
91 |
--------------------------------------------------------------------------------
/dist/main.css:
--------------------------------------------------------------------------------
1 | @import url(//fonts.googleapis.com/css?family=Arimo);.odometer.odometer-auto-theme, .odometer.odometer-theme-car {
2 | display: inline-block;
3 | vertical-align: middle;
4 | *vertical-align: auto;
5 | *zoom: 1;
6 | *display: inline;
7 | position: relative;
8 | }
9 | .odometer.odometer-auto-theme .odometer-digit, .odometer.odometer-theme-car .odometer-digit {
10 | display: inline-block;
11 | vertical-align: middle;
12 | *vertical-align: auto;
13 | *zoom: 1;
14 | *display: inline;
15 | position: relative;
16 | }
17 | .odometer.odometer-auto-theme .odometer-digit .odometer-digit-spacer, .odometer.odometer-theme-car .odometer-digit .odometer-digit-spacer {
18 | display: inline-block;
19 | vertical-align: middle;
20 | *vertical-align: auto;
21 | *zoom: 1;
22 | *display: inline;
23 | visibility: hidden;
24 | }
25 | .odometer.odometer-auto-theme .odometer-digit .odometer-digit-inner, .odometer.odometer-theme-car .odometer-digit .odometer-digit-inner {
26 | text-align: left;
27 | display: block;
28 | position: absolute;
29 | top: 0;
30 | left: 0;
31 | right: 0;
32 | bottom: 0;
33 | overflow: hidden;
34 | }
35 | .odometer.odometer-auto-theme .odometer-digit .odometer-ribbon, .odometer.odometer-theme-car .odometer-digit .odometer-ribbon {
36 | display: block;
37 | }
38 | .odometer.odometer-auto-theme .odometer-digit .odometer-ribbon-inner, .odometer.odometer-theme-car .odometer-digit .odometer-ribbon-inner {
39 | display: block;
40 | -webkit-backface-visibility: hidden;
41 | }
42 | .odometer.odometer-auto-theme .odometer-digit .odometer-value, .odometer.odometer-theme-car .odometer-digit .odometer-value {
43 | display: block;
44 | -webkit-transform: translateZ(0);
45 | }
46 | .odometer.odometer-auto-theme .odometer-digit .odometer-value.odometer-last-value, .odometer.odometer-theme-car .odometer-digit .odometer-value.odometer-last-value {
47 | position: absolute;
48 | }
49 | .odometer.odometer-auto-theme.odometer-animating-up .odometer-ribbon-inner, .odometer.odometer-theme-car.odometer-animating-up .odometer-ribbon-inner {
50 | -webkit-transition: -webkit-transform 2s;
51 | -moz-transition: -moz-transform 2s;
52 | -ms-transition: -ms-transform 2s;
53 | -o-transition: -o-transform 2s;
54 | transition: transform 2s;
55 | }
56 | .odometer.odometer-auto-theme.odometer-animating-up.odometer-animating .odometer-ribbon-inner, .odometer.odometer-theme-car.odometer-animating-up.odometer-animating .odometer-ribbon-inner {
57 | -webkit-transform: translateY(-100%);
58 | -moz-transform: translateY(-100%);
59 | -ms-transform: translateY(-100%);
60 | -o-transform: translateY(-100%);
61 | transform: translateY(-100%);
62 | }
63 | .odometer.odometer-auto-theme.odometer-animating-down .odometer-ribbon-inner, .odometer.odometer-theme-car.odometer-animating-down .odometer-ribbon-inner {
64 | -webkit-transform: translateY(-100%);
65 | -moz-transform: translateY(-100%);
66 | -ms-transform: translateY(-100%);
67 | -o-transform: translateY(-100%);
68 | transform: translateY(-100%);
69 | }
70 | .odometer.odometer-auto-theme.odometer-animating-down.odometer-animating .odometer-ribbon-inner, .odometer.odometer-theme-car.odometer-animating-down.odometer-animating .odometer-ribbon-inner {
71 | -webkit-transition: -webkit-transform 2s;
72 | -moz-transition: -moz-transform 2s;
73 | -ms-transition: -ms-transform 2s;
74 | -o-transition: -o-transform 2s;
75 | transition: transform 2s;
76 | -webkit-transform: translateY(0);
77 | -moz-transform: translateY(0);
78 | -ms-transform: translateY(0);
79 | -o-transform: translateY(0);
80 | transform: translateY(0);
81 | }
82 |
83 | .odometer.odometer-auto-theme, .odometer.odometer-theme-car {
84 | -moz-border-radius: 0.34em;
85 | -webkit-border-radius: 0.34em;
86 | border-radius: 0.34em;
87 | font-family: "Arimo", monospace;
88 | padding: 0.15em;
89 | background: #000;
90 | color: #eee0d3;
91 | }
92 | .odometer.odometer-auto-theme .odometer-digit, .odometer.odometer-theme-car .odometer-digit {
93 | -moz-box-shadow: inset 0 0 0.3em rgba(0, 0, 0, 0.8);
94 | -webkit-box-shadow: inset 0 0 0.3em rgba(0, 0, 0, 0.8);
95 | box-shadow: inset 0 0 0.3em rgba(0, 0, 0, 0.8);
96 | background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzMzMzMzMyIvPjxzdG9wIG9mZnNldD0iNDAlIiBzdG9wLWNvbG9yPSIjMzMzMzMzIi8+PHN0b3Agb2Zmc2V0PSI2MCUiIHN0b3AtY29sb3I9IiMxMDEwMTAiLz48c3RvcCBvZmZzZXQ9IjgwJSIgc3RvcC1jb2xvcj0iIzMzMzMzMyIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzMzMzMzMyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');
97 | background-size: 100%;
98 | background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #333333), color-stop(40%, #333333), color-stop(60%, #101010), color-stop(80%, #333333), color-stop(100%, #333333));
99 | background-image: -moz-linear-gradient(top, #333333 0%, #333333 40%, #101010 60%, #333333 80%, #333333 100%);
100 | background-image: -webkit-linear-gradient(top, #333333 0%, #333333 40%, #101010 60%, #333333 80%, #333333 100%);
101 | background-image: linear-gradient(to bottom, #333333 0%, #333333 40%, #101010 60%, #333333 80%, #333333 100%);
102 | padding: 0 0.15em;
103 | }
104 | .odometer.odometer-auto-theme .odometer-digit:first-child, .odometer.odometer-theme-car .odometer-digit:first-child {
105 | -moz-border-radius: 0.2em 0 0 0.2em;
106 | -webkit-border-radius: 0.2em;
107 | border-radius: 0.2em 0 0 0.2em;
108 | }
109 | .odometer.odometer-auto-theme .odometer-digit:last-child, .odometer.odometer-theme-car .odometer-digit:last-child {
110 | -moz-border-radius: 0 0.2em 0.2em 0;
111 | -webkit-border-radius: 0;
112 | border-radius: 0 0.2em 0.2em 0;
113 | background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2VlZTBkMyIvPjxzdG9wIG9mZnNldD0iNDAlIiBzdG9wLWNvbG9yPSIjZWVlMGQzIi8+PHN0b3Agb2Zmc2V0PSI2MCUiIHN0b3AtY29sb3I9IiNiYmFhOWEiLz48c3RvcCBvZmZzZXQ9IjgwJSIgc3RvcC1jb2xvcj0iI2VlZTBkMyIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2VlZTBkMyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');
114 | background-size: 100%;
115 | background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #eee0d3), color-stop(40%, #eee0d3), color-stop(60%, #bbaa9a), color-stop(80%, #eee0d3), color-stop(100%, #eee0d3));
116 | background-image: -moz-linear-gradient(top, #eee0d3 0%, #eee0d3 40%, #bbaa9a 60%, #eee0d3 80%, #eee0d3 100%);
117 | background-image: -webkit-linear-gradient(top, #eee0d3 0%, #eee0d3 40%, #bbaa9a 60%, #eee0d3 80%, #eee0d3 100%);
118 | background-image: linear-gradient(to bottom, #eee0d3 0%, #eee0d3 40%, #bbaa9a 60%, #eee0d3 80%, #eee0d3 100%);
119 | background-color: #eee0d3;
120 | color: #000;
121 | }
122 | .odometer.odometer-auto-theme .odometer-digit .odometer-digit-inner, .odometer.odometer-theme-car .odometer-digit .odometer-digit-inner {
123 | left: 0.15em;
124 | }
125 | .odometer.odometer-auto-theme.odometer-animating-up .odometer-ribbon-inner, .odometer.odometer-auto-theme.odometer-animating-down.odometer-animating .odometer-ribbon-inner, .odometer.odometer-theme-car.odometer-animating-up .odometer-ribbon-inner, .odometer.odometer-theme-car.odometer-animating-down.odometer-animating .odometer-ribbon-inner {
126 | -webkit-transition-timing-function: linear;
127 | -moz-transition-timing-function: linear;
128 | -ms-transition-timing-function: linear;
129 | -o-transition-timing-function: linear;
130 | transition-timing-function: linear;
131 | }
132 | .odometer.odometer-auto-theme, .odometer.odometer-theme-default {
133 | display: inline-block;
134 | vertical-align: middle;
135 | *vertical-align: auto;
136 | *zoom: 1;
137 | *display: inline;
138 | position: relative;
139 | }
140 | .odometer.odometer-auto-theme .odometer-digit, .odometer.odometer-theme-default .odometer-digit {
141 | display: inline-block;
142 | vertical-align: middle;
143 | *vertical-align: auto;
144 | *zoom: 1;
145 | *display: inline;
146 | position: relative;
147 | }
148 | .odometer.odometer-auto-theme .odometer-digit .odometer-digit-spacer, .odometer.odometer-theme-default .odometer-digit .odometer-digit-spacer {
149 | display: inline-block;
150 | vertical-align: middle;
151 | *vertical-align: auto;
152 | *zoom: 1;
153 | *display: inline;
154 | visibility: hidden;
155 | }
156 | .odometer.odometer-auto-theme .odometer-digit .odometer-digit-inner, .odometer.odometer-theme-default .odometer-digit .odometer-digit-inner {
157 | text-align: left;
158 | display: block;
159 | position: absolute;
160 | top: 0;
161 | left: 0;
162 | right: 0;
163 | bottom: 0;
164 | overflow: hidden;
165 | }
166 | .odometer.odometer-auto-theme .odometer-digit .odometer-ribbon, .odometer.odometer-theme-default .odometer-digit .odometer-ribbon {
167 | display: block;
168 | }
169 | .odometer.odometer-auto-theme .odometer-digit .odometer-ribbon-inner, .odometer.odometer-theme-default .odometer-digit .odometer-ribbon-inner {
170 | display: block;
171 | -webkit-backface-visibility: hidden;
172 | }
173 | .odometer.odometer-auto-theme .odometer-digit .odometer-value, .odometer.odometer-theme-default .odometer-digit .odometer-value {
174 | display: block;
175 | -webkit-transform: translateZ(0);
176 | }
177 | .odometer.odometer-auto-theme .odometer-digit .odometer-value.odometer-last-value, .odometer.odometer-theme-default .odometer-digit .odometer-value.odometer-last-value {
178 | position: absolute;
179 | }
180 | .odometer.odometer-auto-theme.odometer-animating-up .odometer-ribbon-inner, .odometer.odometer-theme-default.odometer-animating-up .odometer-ribbon-inner {
181 | -webkit-transition: -webkit-transform 2s;
182 | -moz-transition: -moz-transform 2s;
183 | -ms-transition: -ms-transform 2s;
184 | -o-transition: -o-transform 2s;
185 | transition: transform 2s;
186 | }
187 | .odometer.odometer-auto-theme.odometer-animating-up.odometer-animating .odometer-ribbon-inner, .odometer.odometer-theme-default.odometer-animating-up.odometer-animating .odometer-ribbon-inner {
188 | -webkit-transform: translateY(-100%);
189 | -moz-transform: translateY(-100%);
190 | -ms-transform: translateY(-100%);
191 | -o-transform: translateY(-100%);
192 | transform: translateY(-100%);
193 | }
194 | .odometer.odometer-auto-theme.odometer-animating-down .odometer-ribbon-inner, .odometer.odometer-theme-default.odometer-animating-down .odometer-ribbon-inner {
195 | -webkit-transform: translateY(-100%);
196 | -moz-transform: translateY(-100%);
197 | -ms-transform: translateY(-100%);
198 | -o-transform: translateY(-100%);
199 | transform: translateY(-100%);
200 | }
201 | .odometer.odometer-auto-theme.odometer-animating-down.odometer-animating .odometer-ribbon-inner, .odometer.odometer-theme-default.odometer-animating-down.odometer-animating .odometer-ribbon-inner {
202 | -webkit-transition: -webkit-transform 2s;
203 | -moz-transition: -moz-transform 2s;
204 | -ms-transition: -ms-transform 2s;
205 | -o-transition: -o-transform 2s;
206 | transition: transform 2s;
207 | -webkit-transform: translateY(0);
208 | -moz-transform: translateY(0);
209 | -ms-transform: translateY(0);
210 | -o-transform: translateY(0);
211 | transform: translateY(0);
212 | }
213 |
214 | .odometer.odometer-auto-theme, .odometer.odometer-theme-default {
215 | font-family: "Helvetica Neue", sans-serif;
216 | line-height: 1.1em;
217 | }
218 | .odometer.odometer-auto-theme .odometer-value, .odometer.odometer-theme-default .odometer-value {
219 | text-align: center;
220 | }
221 | @import url(//fonts.googleapis.com/css?family=Wallpoet);.odometer.odometer-auto-theme, .odometer.odometer-theme-digital {
222 | display: inline-block;
223 | vertical-align: middle;
224 | *vertical-align: auto;
225 | *zoom: 1;
226 | *display: inline;
227 | position: relative;
228 | }
229 | .odometer.odometer-auto-theme .odometer-digit, .odometer.odometer-theme-digital .odometer-digit {
230 | display: inline-block;
231 | vertical-align: middle;
232 | *vertical-align: auto;
233 | *zoom: 1;
234 | *display: inline;
235 | position: relative;
236 | }
237 | .odometer.odometer-auto-theme .odometer-digit .odometer-digit-spacer, .odometer.odometer-theme-digital .odometer-digit .odometer-digit-spacer {
238 | display: inline-block;
239 | vertical-align: middle;
240 | *vertical-align: auto;
241 | *zoom: 1;
242 | *display: inline;
243 | visibility: hidden;
244 | }
245 | .odometer.odometer-auto-theme .odometer-digit .odometer-digit-inner, .odometer.odometer-theme-digital .odometer-digit .odometer-digit-inner {
246 | text-align: left;
247 | display: block;
248 | position: absolute;
249 | top: 0;
250 | left: 0;
251 | right: 0;
252 | bottom: 0;
253 | overflow: hidden;
254 | }
255 | .odometer.odometer-auto-theme .odometer-digit .odometer-ribbon, .odometer.odometer-theme-digital .odometer-digit .odometer-ribbon {
256 | display: block;
257 | }
258 | .odometer.odometer-auto-theme .odometer-digit .odometer-ribbon-inner, .odometer.odometer-theme-digital .odometer-digit .odometer-ribbon-inner {
259 | display: block;
260 | -webkit-backface-visibility: hidden;
261 | }
262 | .odometer.odometer-auto-theme .odometer-digit .odometer-value, .odometer.odometer-theme-digital .odometer-digit .odometer-value {
263 | display: block;
264 | -webkit-transform: translateZ(0);
265 | }
266 | .odometer.odometer-auto-theme .odometer-digit .odometer-value.odometer-last-value, .odometer.odometer-theme-digital .odometer-digit .odometer-value.odometer-last-value {
267 | position: absolute;
268 | }
269 | .odometer.odometer-auto-theme.odometer-animating-up .odometer-ribbon-inner, .odometer.odometer-theme-digital.odometer-animating-up .odometer-ribbon-inner {
270 | -webkit-transition: -webkit-transform 2s;
271 | -moz-transition: -moz-transform 2s;
272 | -ms-transition: -ms-transform 2s;
273 | -o-transition: -o-transform 2s;
274 | transition: transform 2s;
275 | }
276 | .odometer.odometer-auto-theme.odometer-animating-up.odometer-animating .odometer-ribbon-inner, .odometer.odometer-theme-digital.odometer-animating-up.odometer-animating .odometer-ribbon-inner {
277 | -webkit-transform: translateY(-100%);
278 | -moz-transform: translateY(-100%);
279 | -ms-transform: translateY(-100%);
280 | -o-transform: translateY(-100%);
281 | transform: translateY(-100%);
282 | }
283 | .odometer.odometer-auto-theme.odometer-animating-down .odometer-ribbon-inner, .odometer.odometer-theme-digital.odometer-animating-down .odometer-ribbon-inner {
284 | -webkit-transform: translateY(-100%);
285 | -moz-transform: translateY(-100%);
286 | -ms-transform: translateY(-100%);
287 | -o-transform: translateY(-100%);
288 | transform: translateY(-100%);
289 | }
290 | .odometer.odometer-auto-theme.odometer-animating-down.odometer-animating .odometer-ribbon-inner, .odometer.odometer-theme-digital.odometer-animating-down.odometer-animating .odometer-ribbon-inner {
291 | -webkit-transition: -webkit-transform 2s;
292 | -moz-transition: -moz-transform 2s;
293 | -ms-transition: -ms-transform 2s;
294 | -o-transition: -o-transform 2s;
295 | transition: transform 2s;
296 | -webkit-transform: translateY(0);
297 | -moz-transform: translateY(0);
298 | -ms-transform: translateY(0);
299 | -o-transform: translateY(0);
300 | transform: translateY(0);
301 | }
302 |
303 | .odometer.odometer-auto-theme, .odometer.odometer-theme-digital {
304 | background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzhiZjVhNSIgc3RvcC1vcGFjaXR5PSIwLjQiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMwMDAwMDAiLz48L3JhZGlhbEdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA=');
305 | background-size: 100%;
306 | background-image: -moz-radial-gradient(rgba(139, 245, 165, 0.4), #000000);
307 | background-image: -webkit-radial-gradient(rgba(139, 245, 165, 0.4), #000000);
308 | background-image: radial-gradient(rgba(139, 245, 165, 0.4), #000000);
309 | background-color: #000;
310 | font-family: "Wallpoet", monospace;
311 | padding: 0 0.2em;
312 | line-height: 1.1em;
313 | color: #8bf5a5;
314 | }
315 | .odometer.odometer-auto-theme .odometer-digit + .odometer-digit, .odometer.odometer-theme-digital .odometer-digit + .odometer-digit {
316 | margin-left: 0.1em;
317 | }
318 | .odometer.odometer-auto-theme, .odometer.odometer-theme-minimal {
319 | display: inline-block;
320 | vertical-align: middle;
321 | *vertical-align: auto;
322 | *zoom: 1;
323 | *display: inline;
324 | position: relative;
325 | }
326 | .odometer.odometer-auto-theme .odometer-digit, .odometer.odometer-theme-minimal .odometer-digit {
327 | display: inline-block;
328 | vertical-align: middle;
329 | *vertical-align: auto;
330 | *zoom: 1;
331 | *display: inline;
332 | position: relative;
333 | }
334 | .odometer.odometer-auto-theme .odometer-digit .odometer-digit-spacer, .odometer.odometer-theme-minimal .odometer-digit .odometer-digit-spacer {
335 | display: inline-block;
336 | vertical-align: middle;
337 | *vertical-align: auto;
338 | *zoom: 1;
339 | *display: inline;
340 | visibility: hidden;
341 | }
342 | .odometer.odometer-auto-theme .odometer-digit .odometer-digit-inner, .odometer.odometer-theme-minimal .odometer-digit .odometer-digit-inner {
343 | text-align: left;
344 | display: block;
345 | position: absolute;
346 | top: 0;
347 | left: 0;
348 | right: 0;
349 | bottom: 0;
350 | overflow: hidden;
351 | }
352 | .odometer.odometer-auto-theme .odometer-digit .odometer-ribbon, .odometer.odometer-theme-minimal .odometer-digit .odometer-ribbon {
353 | display: block;
354 | }
355 | .odometer.odometer-auto-theme .odometer-digit .odometer-ribbon-inner, .odometer.odometer-theme-minimal .odometer-digit .odometer-ribbon-inner {
356 | display: block;
357 | -webkit-backface-visibility: hidden;
358 | }
359 | .odometer.odometer-auto-theme .odometer-digit .odometer-value, .odometer.odometer-theme-minimal .odometer-digit .odometer-value {
360 | display: block;
361 | -webkit-transform: translateZ(0);
362 | }
363 | .odometer.odometer-auto-theme .odometer-digit .odometer-value.odometer-last-value, .odometer.odometer-theme-minimal .odometer-digit .odometer-value.odometer-last-value {
364 | position: absolute;
365 | }
366 | .odometer.odometer-auto-theme.odometer-animating-up .odometer-ribbon-inner, .odometer.odometer-theme-minimal.odometer-animating-up .odometer-ribbon-inner {
367 | -webkit-transition: -webkit-transform 2s;
368 | -moz-transition: -moz-transform 2s;
369 | -ms-transition: -ms-transform 2s;
370 | -o-transition: -o-transform 2s;
371 | transition: transform 2s;
372 | }
373 | .odometer.odometer-auto-theme.odometer-animating-up.odometer-animating .odometer-ribbon-inner, .odometer.odometer-theme-minimal.odometer-animating-up.odometer-animating .odometer-ribbon-inner {
374 | -webkit-transform: translateY(-100%);
375 | -moz-transform: translateY(-100%);
376 | -ms-transform: translateY(-100%);
377 | -o-transform: translateY(-100%);
378 | transform: translateY(-100%);
379 | }
380 | .odometer.odometer-auto-theme.odometer-animating-down .odometer-ribbon-inner, .odometer.odometer-theme-minimal.odometer-animating-down .odometer-ribbon-inner {
381 | -webkit-transform: translateY(-100%);
382 | -moz-transform: translateY(-100%);
383 | -ms-transform: translateY(-100%);
384 | -o-transform: translateY(-100%);
385 | transform: translateY(-100%);
386 | }
387 | .odometer.odometer-auto-theme.odometer-animating-down.odometer-animating .odometer-ribbon-inner, .odometer.odometer-theme-minimal.odometer-animating-down.odometer-animating .odometer-ribbon-inner {
388 | -webkit-transition: -webkit-transform 2s;
389 | -moz-transition: -moz-transform 2s;
390 | -ms-transition: -ms-transform 2s;
391 | -o-transition: -o-transform 2s;
392 | transition: transform 2s;
393 | -webkit-transform: translateY(0);
394 | -moz-transform: translateY(0);
395 | -ms-transform: translateY(0);
396 | -o-transform: translateY(0);
397 | transform: translateY(0);
398 | }
399 | .odometer.odometer-auto-theme, .odometer.odometer-theme-plaza {
400 | display: inline-block;
401 | vertical-align: middle;
402 | *vertical-align: auto;
403 | *zoom: 1;
404 | *display: inline;
405 | position: relative;
406 | }
407 | .odometer.odometer-auto-theme .odometer-digit, .odometer.odometer-theme-plaza .odometer-digit {
408 | display: inline-block;
409 | vertical-align: middle;
410 | *vertical-align: auto;
411 | *zoom: 1;
412 | *display: inline;
413 | position: relative;
414 | }
415 | .odometer.odometer-auto-theme .odometer-digit .odometer-digit-spacer, .odometer.odometer-theme-plaza .odometer-digit .odometer-digit-spacer {
416 | display: inline-block;
417 | vertical-align: middle;
418 | *vertical-align: auto;
419 | *zoom: 1;
420 | *display: inline;
421 | visibility: hidden;
422 | }
423 | .odometer.odometer-auto-theme .odometer-digit .odometer-digit-inner, .odometer.odometer-theme-plaza .odometer-digit .odometer-digit-inner {
424 | text-align: left;
425 | display: block;
426 | position: absolute;
427 | top: 0;
428 | left: 0;
429 | right: 0;
430 | bottom: 0;
431 | overflow: hidden;
432 | }
433 | .odometer.odometer-auto-theme .odometer-digit .odometer-ribbon, .odometer.odometer-theme-plaza .odometer-digit .odometer-ribbon {
434 | display: block;
435 | }
436 | .odometer.odometer-auto-theme .odometer-digit .odometer-ribbon-inner, .odometer.odometer-theme-plaza .odometer-digit .odometer-ribbon-inner {
437 | display: block;
438 | -webkit-backface-visibility: hidden;
439 | }
440 | .odometer.odometer-auto-theme .odometer-digit .odometer-value, .odometer.odometer-theme-plaza .odometer-digit .odometer-value {
441 | display: block;
442 | -webkit-transform: translateZ(0);
443 | }
444 | .odometer.odometer-auto-theme .odometer-digit .odometer-value.odometer-last-value, .odometer.odometer-theme-plaza .odometer-digit .odometer-value.odometer-last-value {
445 | position: absolute;
446 | }
447 | .odometer.odometer-auto-theme.odometer-animating-up .odometer-ribbon-inner, .odometer.odometer-theme-plaza.odometer-animating-up .odometer-ribbon-inner {
448 | -webkit-transition: -webkit-transform 2s;
449 | -moz-transition: -moz-transform 2s;
450 | -ms-transition: -ms-transform 2s;
451 | -o-transition: -o-transform 2s;
452 | transition: transform 2s;
453 | }
454 | .odometer.odometer-auto-theme.odometer-animating-up.odometer-animating .odometer-ribbon-inner, .odometer.odometer-theme-plaza.odometer-animating-up.odometer-animating .odometer-ribbon-inner {
455 | -webkit-transform: translateY(-100%);
456 | -moz-transform: translateY(-100%);
457 | -ms-transform: translateY(-100%);
458 | -o-transform: translateY(-100%);
459 | transform: translateY(-100%);
460 | }
461 | .odometer.odometer-auto-theme.odometer-animating-down .odometer-ribbon-inner, .odometer.odometer-theme-plaza.odometer-animating-down .odometer-ribbon-inner {
462 | -webkit-transform: translateY(-100%);
463 | -moz-transform: translateY(-100%);
464 | -ms-transform: translateY(-100%);
465 | -o-transform: translateY(-100%);
466 | transform: translateY(-100%);
467 | }
468 | .odometer.odometer-auto-theme.odometer-animating-down.odometer-animating .odometer-ribbon-inner, .odometer.odometer-theme-plaza.odometer-animating-down.odometer-animating .odometer-ribbon-inner {
469 | -webkit-transition: -webkit-transform 2s;
470 | -moz-transition: -moz-transform 2s;
471 | -ms-transition: -ms-transform 2s;
472 | -o-transition: -o-transform 2s;
473 | transition: transform 2s;
474 | -webkit-transform: translateY(0);
475 | -moz-transform: translateY(0);
476 | -ms-transform: translateY(0);
477 | -o-transform: translateY(0);
478 | transform: translateY(0);
479 | }
480 |
481 | .odometer.odometer-auto-theme, .odometer.odometer-theme-plaza {
482 | -moz-border-radius: 0.15em;
483 | -webkit-border-radius: 0.15em;
484 | border-radius: 0.15em;
485 | background-color: #f0f8ff;
486 | font-family: "Helvetica Neue", sans-serif;
487 | font-weight: 100;
488 | padding: 0 0.12em;
489 | line-height: 1.2em;
490 | font-size: 1.2em;
491 | background-size: 16px 16px;
492 | }
493 | .odometer.odometer-auto-theme .odometer-digit, .odometer.odometer-theme-plaza .odometer-digit {
494 | -moz-border-radius: 0.1em;
495 | -webkit-border-radius: 0.1em;
496 | border-radius: 0.1em;
497 | padding: 0 0.03em;
498 | color: #648baf;
499 | }
500 | .odometer.odometer-auto-theme .odometer-digit .odometer-digit-inner, .odometer.odometer-theme-plaza .odometer-digit .odometer-digit-inner {
501 | left: 0.03em;
502 | }
503 | @import url(//fonts.googleapis.com/css?family=Rye);.odometer.odometer-auto-theme, .odometer.odometer-theme-slot-machine {
504 | display: inline-block;
505 | vertical-align: middle;
506 | *vertical-align: auto;
507 | *zoom: 1;
508 | *display: inline;
509 | position: relative;
510 | }
511 | .odometer.odometer-auto-theme .odometer-digit, .odometer.odometer-theme-slot-machine .odometer-digit {
512 | display: inline-block;
513 | vertical-align: middle;
514 | *vertical-align: auto;
515 | *zoom: 1;
516 | *display: inline;
517 | position: relative;
518 | }
519 | .odometer.odometer-auto-theme .odometer-digit .odometer-digit-spacer, .odometer.odometer-theme-slot-machine .odometer-digit .odometer-digit-spacer {
520 | display: inline-block;
521 | vertical-align: middle;
522 | *vertical-align: auto;
523 | *zoom: 1;
524 | *display: inline;
525 | visibility: hidden;
526 | }
527 | .odometer.odometer-auto-theme .odometer-digit .odometer-digit-inner, .odometer.odometer-theme-slot-machine .odometer-digit .odometer-digit-inner {
528 | text-align: left;
529 | display: block;
530 | position: absolute;
531 | top: 0;
532 | left: 0;
533 | right: 0;
534 | bottom: 0;
535 | overflow: hidden;
536 | }
537 | .odometer.odometer-auto-theme .odometer-digit .odometer-ribbon, .odometer.odometer-theme-slot-machine .odometer-digit .odometer-ribbon {
538 | display: block;
539 | }
540 | .odometer.odometer-auto-theme .odometer-digit .odometer-ribbon-inner, .odometer.odometer-theme-slot-machine .odometer-digit .odometer-ribbon-inner {
541 | display: block;
542 | -webkit-backface-visibility: hidden;
543 | }
544 | .odometer.odometer-auto-theme .odometer-digit .odometer-value, .odometer.odometer-theme-slot-machine .odometer-digit .odometer-value {
545 | display: block;
546 | -webkit-transform: translateZ(0);
547 | }
548 | .odometer.odometer-auto-theme .odometer-digit .odometer-value.odometer-last-value, .odometer.odometer-theme-slot-machine .odometer-digit .odometer-value.odometer-last-value {
549 | position: absolute;
550 | }
551 | .odometer.odometer-auto-theme.odometer-animating-up .odometer-ribbon-inner, .odometer.odometer-theme-slot-machine.odometer-animating-up .odometer-ribbon-inner {
552 | -webkit-transition: -webkit-transform 2s;
553 | -moz-transition: -moz-transform 2s;
554 | -ms-transition: -ms-transform 2s;
555 | -o-transition: -o-transform 2s;
556 | transition: transform 2s;
557 | }
558 | .odometer.odometer-auto-theme.odometer-animating-up.odometer-animating .odometer-ribbon-inner, .odometer.odometer-theme-slot-machine.odometer-animating-up.odometer-animating .odometer-ribbon-inner {
559 | -webkit-transform: translateY(-100%);
560 | -moz-transform: translateY(-100%);
561 | -ms-transform: translateY(-100%);
562 | -o-transform: translateY(-100%);
563 | transform: translateY(-100%);
564 | }
565 | .odometer.odometer-auto-theme.odometer-animating-down .odometer-ribbon-inner, .odometer.odometer-theme-slot-machine.odometer-animating-down .odometer-ribbon-inner {
566 | -webkit-transform: translateY(-100%);
567 | -moz-transform: translateY(-100%);
568 | -ms-transform: translateY(-100%);
569 | -o-transform: translateY(-100%);
570 | transform: translateY(-100%);
571 | }
572 | .odometer.odometer-auto-theme.odometer-animating-down.odometer-animating .odometer-ribbon-inner, .odometer.odometer-theme-slot-machine.odometer-animating-down.odometer-animating .odometer-ribbon-inner {
573 | -webkit-transition: -webkit-transform 2s;
574 | -moz-transition: -moz-transform 2s;
575 | -ms-transition: -ms-transform 2s;
576 | -o-transition: -o-transform 2s;
577 | transition: transform 2s;
578 | -webkit-transform: translateY(0);
579 | -moz-transform: translateY(0);
580 | -ms-transform: translateY(0);
581 | -o-transform: translateY(0);
582 | transform: translateY(0);
583 | }
584 |
585 | .odometer.odometer-auto-theme, .odometer.odometer-theme-slot-machine {
586 | -moz-border-radius: 0.34em;
587 | -webkit-border-radius: 0.34em;
588 | border-radius: 0.34em;
589 | background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmYwMCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2ZmYTUwMCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');
590 | background-size: 100%;
591 | background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffff00), color-stop(100%, #ffa500));
592 | background-image: -moz-linear-gradient(#ffff00, #ffa500);
593 | background-image: -webkit-linear-gradient(#ffff00, #ffa500);
594 | background-image: linear-gradient(#ffff00, #ffa500);
595 | background-color: #fc0;
596 | font-family: "Rye", monospace;
597 | padding: 0.15em;
598 | color: #f80000;
599 | line-height: 1.35em;
600 | border: 0.03em solid #000;
601 | -webkit-text-stroke: 0.05em #000;
602 | }
603 | .odometer.odometer-auto-theme .odometer-digit, .odometer.odometer-theme-slot-machine .odometer-digit {
604 | -moz-box-shadow: inset 0 0 0.1em rgba(0, 0, 0, 0.5), 0 0 0 0.03em #fff, 0 0 0 0.05em rgba(0, 0, 0, 0.2);
605 | -webkit-box-shadow: inset 0 0 0.1em rgba(0, 0, 0, 0.5), 0 0 0 0.03em #fff, 0 0 0 0.05em rgba(0, 0, 0, 0.2);
606 | box-shadow: inset 0 0 0.1em rgba(0, 0, 0, 0.5), 0 0 0 0.03em #fff, 0 0 0 0.05em rgba(0, 0, 0, 0.2);
607 | -moz-border-radius: 0.2em;
608 | -webkit-border-radius: 0.2em;
609 | border-radius: 0.2em;
610 | background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2NjY2NjYyIvPjxzdG9wIG9mZnNldD0iMjAlIiBzdG9wLWNvbG9yPSIjZmZmZmZmIi8+PHN0b3Agb2Zmc2V0PSI4MCUiIHN0b3AtY29sb3I9IiNmZmZmZmYiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNjY2NjY2MiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA=');
611 | background-size: 100%;
612 | background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #cccccc), color-stop(20%, #ffffff), color-stop(80%, #ffffff), color-stop(100%, #cccccc));
613 | background-image: -moz-linear-gradient(top, #cccccc 0%, #ffffff 20%, #ffffff 80%, #cccccc 100%);
614 | background-image: -webkit-linear-gradient(top, #cccccc 0%, #ffffff 20%, #ffffff 80%, #cccccc 100%);
615 | background-image: linear-gradient(to bottom, #cccccc 0%, #ffffff 20%, #ffffff 80%, #cccccc 100%);
616 | border: 0.03em solid #444;
617 | padding: 0.1em 0.15em 0;
618 | }
619 | .odometer.odometer-auto-theme .odometer-digit:first-child, .odometer.odometer-theme-slot-machine .odometer-digit:first-child {
620 | -moz-box-shadow: inset 0.05em 0 0.1em rgba(0, 0, 0, 0.5), 0 0 0 0.03em #fff, 0 0 0 0.05em rgba(0, 0, 0, 0.2);
621 | -webkit-box-shadow: inset 0.05em 0 0.1em rgba(0, 0, 0, 0.5), 0 0 0 0.03em #fff, 0 0 0 0.05em rgba(0, 0, 0, 0.2);
622 | box-shadow: inset 0.05em 0 0.1em rgba(0, 0, 0, 0.5), 0 0 0 0.03em #fff, 0 0 0 0.05em rgba(0, 0, 0, 0.2);
623 | }
624 | .odometer.odometer-auto-theme .odometer-digit:last-child, .odometer.odometer-theme-slot-machine .odometer-digit:last-child {
625 | -moz-box-shadow: inset -0.05em 0 0.1em rgba(0, 0, 0, 0.5), 0 0 0 0.03em #fff, 0 0 0 0.05em rgba(0, 0, 0, 0.2);
626 | -webkit-box-shadow: inset -0.05em 0 0.1em rgba(0, 0, 0, 0.5), 0 0 0 0.03em #fff, 0 0 0 0.05em rgba(0, 0, 0, 0.2);
627 | box-shadow: inset -0.05em 0 0.1em rgba(0, 0, 0, 0.5), 0 0 0 0.03em #fff, 0 0 0 0.05em rgba(0, 0, 0, 0.2);
628 | }
629 | .odometer.odometer-auto-theme .odometer-digit + .odometer-digit, .odometer.odometer-theme-slot-machine .odometer-digit + .odometer-digit {
630 | margin-left: 0.15em;
631 | }
632 | .odometer.odometer-auto-theme .odometer-digit .odometer-digit-inner, .odometer.odometer-theme-slot-machine .odometer-digit .odometer-digit-inner {
633 | padding-top: 0.08em;
634 | }
635 | .odometer.odometer-auto-theme .odometer-digit .odometer-digit-inner, .odometer.odometer-auto-theme .odometer-digit .odometer-value.odometer-last-value, .odometer.odometer-theme-slot-machine .odometer-digit .odometer-digit-inner, .odometer.odometer-theme-slot-machine .odometer-digit .odometer-value.odometer-last-value {
636 | left: 0;
637 | right: 0;
638 | text-align: center;
639 | }
640 | @import url(//fonts.googleapis.com/css?family=Economica);.odometer.odometer-auto-theme, .odometer.odometer-theme-train-station {
641 | display: inline-block;
642 | vertical-align: middle;
643 | *vertical-align: auto;
644 | *zoom: 1;
645 | *display: inline;
646 | position: relative;
647 | }
648 | .odometer.odometer-auto-theme .odometer-digit, .odometer.odometer-theme-train-station .odometer-digit {
649 | display: inline-block;
650 | vertical-align: middle;
651 | *vertical-align: auto;
652 | *zoom: 1;
653 | *display: inline;
654 | position: relative;
655 | }
656 | .odometer.odometer-auto-theme .odometer-digit .odometer-digit-spacer, .odometer.odometer-theme-train-station .odometer-digit .odometer-digit-spacer {
657 | display: inline-block;
658 | vertical-align: middle;
659 | *vertical-align: auto;
660 | *zoom: 1;
661 | *display: inline;
662 | visibility: hidden;
663 | }
664 | .odometer.odometer-auto-theme .odometer-digit .odometer-digit-inner, .odometer.odometer-theme-train-station .odometer-digit .odometer-digit-inner {
665 | text-align: left;
666 | display: block;
667 | position: absolute;
668 | top: 0;
669 | left: 0;
670 | right: 0;
671 | bottom: 0;
672 | overflow: hidden;
673 | }
674 | .odometer.odometer-auto-theme .odometer-digit .odometer-ribbon, .odometer.odometer-theme-train-station .odometer-digit .odometer-ribbon {
675 | display: block;
676 | }
677 | .odometer.odometer-auto-theme .odometer-digit .odometer-ribbon-inner, .odometer.odometer-theme-train-station .odometer-digit .odometer-ribbon-inner {
678 | display: block;
679 | -webkit-backface-visibility: hidden;
680 | }
681 | .odometer.odometer-auto-theme .odometer-digit .odometer-value, .odometer.odometer-theme-train-station .odometer-digit .odometer-value {
682 | display: block;
683 | -webkit-transform: translateZ(0);
684 | }
685 | .odometer.odometer-auto-theme .odometer-digit .odometer-value.odometer-last-value, .odometer.odometer-theme-train-station .odometer-digit .odometer-value.odometer-last-value {
686 | position: absolute;
687 | }
688 | .odometer.odometer-auto-theme.odometer-animating-up .odometer-ribbon-inner, .odometer.odometer-theme-train-station.odometer-animating-up .odometer-ribbon-inner {
689 | -webkit-transition: -webkit-transform 2s;
690 | -moz-transition: -moz-transform 2s;
691 | -ms-transition: -ms-transform 2s;
692 | -o-transition: -o-transform 2s;
693 | transition: transform 2s;
694 | }
695 | .odometer.odometer-auto-theme.odometer-animating-up.odometer-animating .odometer-ribbon-inner, .odometer.odometer-theme-train-station.odometer-animating-up.odometer-animating .odometer-ribbon-inner {
696 | -webkit-transform: translateY(-100%);
697 | -moz-transform: translateY(-100%);
698 | -ms-transform: translateY(-100%);
699 | -o-transform: translateY(-100%);
700 | transform: translateY(-100%);
701 | }
702 | .odometer.odometer-auto-theme.odometer-animating-down .odometer-ribbon-inner, .odometer.odometer-theme-train-station.odometer-animating-down .odometer-ribbon-inner {
703 | -webkit-transform: translateY(-100%);
704 | -moz-transform: translateY(-100%);
705 | -ms-transform: translateY(-100%);
706 | -o-transform: translateY(-100%);
707 | transform: translateY(-100%);
708 | }
709 | .odometer.odometer-auto-theme.odometer-animating-down.odometer-animating .odometer-ribbon-inner, .odometer.odometer-theme-train-station.odometer-animating-down.odometer-animating .odometer-ribbon-inner {
710 | -webkit-transition: -webkit-transform 2s;
711 | -moz-transition: -moz-transform 2s;
712 | -ms-transition: -ms-transform 2s;
713 | -o-transition: -o-transform 2s;
714 | transition: transform 2s;
715 | -webkit-transform: translateY(0);
716 | -moz-transform: translateY(0);
717 | -ms-transform: translateY(0);
718 | -o-transform: translateY(0);
719 | transform: translateY(0);
720 | }
721 |
722 | .odometer.odometer-auto-theme, .odometer.odometer-theme-train-station {
723 | font-family: "Economica", sans-serif;
724 | }
725 | .odometer.odometer-auto-theme .odometer-digit, .odometer.odometer-theme-train-station .odometer-digit {
726 | display: inline-block;
727 | vertical-align: middle;
728 | *vertical-align: auto;
729 | *zoom: 1;
730 | *display: inline;
731 | -moz-border-radius: 0.1em;
732 | -webkit-border-radius: 0.1em;
733 | border-radius: 0.1em;
734 | background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzExMTExMSIvPjxzdG9wIG9mZnNldD0iMzUlIiBzdG9wLWNvbG9yPSIjMTExMTExIi8+PHN0b3Agb2Zmc2V0PSI1NSUiIHN0b3AtY29sb3I9IiMzMzMzMzMiLz48c3RvcCBvZmZzZXQ9IjU1JSIgc3RvcC1jb2xvcj0iIzExMTExMSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzExMTExMSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');
735 | background-size: 100%;
736 | background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #111111), color-stop(35%, #111111), color-stop(55%, #333333), color-stop(55%, #111111), color-stop(100%, #111111));
737 | background-image: -moz-linear-gradient(top, #111111 0%, #111111 35%, #333333 55%, #111111 55%, #111111 100%);
738 | background-image: -webkit-linear-gradient(top, #111111 0%, #111111 35%, #333333 55%, #111111 55%, #111111 100%);
739 | background-image: linear-gradient(to bottom, #111111 0%, #111111 35%, #333333 55%, #111111 55%, #111111 100%);
740 | background-color: #222;
741 | padding: 0 0.15em;
742 | color: #fff;
743 | }
744 | .odometer.odometer-auto-theme .odometer-digit + .odometer-digit, .odometer.odometer-theme-train-station .odometer-digit + .odometer-digit {
745 | margin-left: 0.1em;
746 | }
747 | .odometer.odometer-auto-theme .odometer-digit .odometer-digit-inner, .odometer.odometer-theme-train-station .odometer-digit .odometer-digit-inner {
748 | left: 0.15em;
749 | }
750 |
--------------------------------------------------------------------------------
/dist/main.css.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":[],"names":[],"mappings":"","file":"main.css","sourceRoot":""}
--------------------------------------------------------------------------------
/dist/main.dev.js:
--------------------------------------------------------------------------------
1 | /******/ (function(modules) { // webpackBootstrap
2 | /******/ // The module cache
3 | /******/ var installedModules = {};
4 | /******/
5 | /******/ // The require function
6 | /******/ function __webpack_require__(moduleId) {
7 | /******/
8 | /******/ // Check if module is in cache
9 | /******/ if(installedModules[moduleId]) {
10 | /******/ return installedModules[moduleId].exports;
11 | /******/ }
12 | /******/ // Create a new module (and put it into the cache)
13 | /******/ var module = installedModules[moduleId] = {
14 | /******/ i: moduleId,
15 | /******/ l: false,
16 | /******/ exports: {}
17 | /******/ };
18 | /******/
19 | /******/ // Execute the module function
20 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
21 | /******/
22 | /******/ // Flag the module as loaded
23 | /******/ module.l = true;
24 | /******/
25 | /******/ // Return the exports of the module
26 | /******/ return module.exports;
27 | /******/ }
28 | /******/
29 | /******/
30 | /******/ // expose the modules object (__webpack_modules__)
31 | /******/ __webpack_require__.m = modules;
32 | /******/
33 | /******/ // expose the module cache
34 | /******/ __webpack_require__.c = installedModules;
35 | /******/
36 | /******/ // define getter function for harmony exports
37 | /******/ __webpack_require__.d = function(exports, name, getter) {
38 | /******/ if(!__webpack_require__.o(exports, name)) {
39 | /******/ Object.defineProperty(exports, name, {
40 | /******/ configurable: false,
41 | /******/ enumerable: true,
42 | /******/ get: getter
43 | /******/ });
44 | /******/ }
45 | /******/ };
46 | /******/
47 | /******/ // getDefaultExport function for compatibility with non-harmony modules
48 | /******/ __webpack_require__.n = function(module) {
49 | /******/ var getter = module && module.__esModule ?
50 | /******/ function getDefault() { return module['default']; } :
51 | /******/ function getModuleExports() { return module; };
52 | /******/ __webpack_require__.d(getter, 'a', getter);
53 | /******/ return getter;
54 | /******/ };
55 | /******/
56 | /******/ // Object.prototype.hasOwnProperty.call
57 | /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
58 | /******/
59 | /******/ // __webpack_public_path__
60 | /******/ __webpack_require__.p = "";
61 | /******/
62 | /******/ // Load entry module and return exports
63 | /******/ return __webpack_require__(__webpack_require__.s = 0);
64 | /******/ })
65 | /************************************************************************/
66 | /******/ ([
67 | /* 0 */
68 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
69 |
70 | "use strict";
71 | Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
72 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_odometer_odometer_min_js__ = __webpack_require__(1);
73 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_odometer_odometer_min_js___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_odometer_odometer_min_js__);
74 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_odometer_themes_odometer_theme_car_css__ = __webpack_require__(2);
75 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_odometer_themes_odometer_theme_car_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_odometer_themes_odometer_theme_car_css__);
76 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_odometer_themes_odometer_theme_default_css__ = __webpack_require__(3);
77 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_odometer_themes_odometer_theme_default_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_odometer_themes_odometer_theme_default_css__);
78 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_odometer_themes_odometer_theme_digital_css__ = __webpack_require__(4);
79 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_odometer_themes_odometer_theme_digital_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_odometer_themes_odometer_theme_digital_css__);
80 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_odometer_themes_odometer_theme_minimal_css__ = __webpack_require__(5);
81 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_odometer_themes_odometer_theme_minimal_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_odometer_themes_odometer_theme_minimal_css__);
82 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_odometer_themes_odometer_theme_plaza_css__ = __webpack_require__(6);
83 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_odometer_themes_odometer_theme_plaza_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_odometer_themes_odometer_theme_plaza_css__);
84 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_odometer_themes_odometer_theme_slot_machine_css__ = __webpack_require__(7);
85 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_odometer_themes_odometer_theme_slot_machine_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_odometer_themes_odometer_theme_slot_machine_css__);
86 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_odometer_themes_odometer_theme_train_station_css__ = __webpack_require__(8);
87 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_odometer_themes_odometer_theme_train_station_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_7_odometer_themes_odometer_theme_train_station_css__);
88 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__components_VueOdometer__ = __webpack_require__(9);
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 | if (typeof window !== 'undefined' && window.Vue)
100 | {
101 | window.Vue.component('vue-odometer', __WEBPACK_IMPORTED_MODULE_8__components_VueOdometer__["a" /* default */])
102 | }
103 |
104 | /* harmony default export */ __webpack_exports__["default"] = (__WEBPACK_IMPORTED_MODULE_8__components_VueOdometer__["a" /* default */]);
105 |
106 | /***/ }),
107 | /* 1 */
108 | /***/ (function(module, exports, __webpack_require__) {
109 |
110 | var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! odometer 0.4.8 */
111 | (function(){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G=[].slice;q=' ',n=''+q+" ",d='8 '+n+" ",g=' ',c="(,ddd).dd",h=/^\(?([^)]*)\)?(?:(.)(d+))?$/,i=30,f=2e3,a=20,j=2,e=.5,k=1e3/i,b=1e3/a,o="transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd",y=document.createElement("div").style,p=null!=y.transition||null!=y.webkitTransition||null!=y.mozTransition||null!=y.oTransition,w=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame,l=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver,s=function(a){var b;return b=document.createElement("div"),b.innerHTML=a,b.children[0]},v=function(a,b){return a.className=a.className.replace(new RegExp("(^| )"+b.split(" ").join("|")+"( |$)","gi")," ")},r=function(a,b){return v(a,b),a.className+=" "+b},z=function(a,b){var c;return null!=document.createEvent?(c=document.createEvent("HTMLEvents"),c.initEvent(b,!0,!0),a.dispatchEvent(c)):void 0},u=function(){var a,b;return null!=(a=null!=(b=window.performance)&&"function"==typeof b.now?b.now():void 0)?a:+new Date},x=function(a,b){return null==b&&(b=0),b?(a*=Math.pow(10,b),a+=.5,a=Math.floor(a),a/=Math.pow(10,b)):Math.round(a)},A=function(a){return 0>a?Math.ceil(a):Math.floor(a)},t=function(a){return a-x(a)},C=!1,(B=function(){var a,b,c,d,e;if(!C&&null!=window.jQuery){for(C=!0,d=["html","text"],e=[],b=0,c=d.length;c>b;b++)a=d[b],e.push(function(a){var b;return b=window.jQuery.fn[a],window.jQuery.fn[a]=function(a){var c;return null==a||null==(null!=(c=this[0])?c.odometer:void 0)?b.apply(this,arguments):this[0].odometer.update(a)}}(a));return e}})(),setTimeout(B,0),m=function(){function a(b){var c,d,e,g,h,i,l,m,n,o,p=this;if(this.options=b,this.el=this.options.el,null!=this.el.odometer)return this.el.odometer;this.el.odometer=this,m=a.options;for(d in m)g=m[d],null==this.options[d]&&(this.options[d]=g);null==(h=this.options).duration&&(h.duration=f),this.MAX_VALUES=this.options.duration/k/j|0,this.resetFormat(),this.value=this.cleanValue(null!=(n=this.options.value)?n:""),this.renderInside(),this.render();try{for(o=["innerHTML","innerText","textContent"],i=0,l=o.length;l>i;i++)e=o[i],null!=this.el[e]&&!function(a){return Object.defineProperty(p.el,a,{get:function(){var b;return"innerHTML"===a?p.inside.outerHTML:null!=(b=p.inside.innerText)?b:p.inside.textContent},set:function(a){return p.update(a)}})}(e)}catch(q){c=q,this.watchForMutations()}}return a.prototype.renderInside=function(){return this.inside=document.createElement("div"),this.inside.className="odometer-inside",this.el.innerHTML="",this.el.appendChild(this.inside)},a.prototype.watchForMutations=function(){var a,b=this;if(null!=l)try{return null==this.observer&&(this.observer=new l(function(a){var c;return c=b.el.innerText,b.renderInside(),b.render(b.value),b.update(c)})),this.watchMutations=!0,this.startWatchingMutations()}catch(c){a=c}},a.prototype.startWatchingMutations=function(){return this.watchMutations?this.observer.observe(this.el,{childList:!0}):void 0},a.prototype.stopWatchingMutations=function(){var a;return null!=(a=this.observer)?a.disconnect():void 0},a.prototype.cleanValue=function(a){var b;return"string"==typeof a&&(a=a.replace(null!=(b=this.format.radix)?b:".",""),a=a.replace(/[.,]/g,""),a=a.replace("","."),a=parseFloat(a,10)||0),x(a,this.format.precision)},a.prototype.bindTransitionEnd=function(){var a,b,c,d,e,f,g=this;if(!this.transitionEndBound){for(this.transitionEndBound=!0,b=!1,e=o.split(" "),f=[],c=0,d=e.length;d>c;c++)a=e[c],f.push(this.el.addEventListener(a,function(){return b?!0:(b=!0,setTimeout(function(){return g.render(),b=!1,z(g.el,"odometerdone")},0),!0)},!1));return f}},a.prototype.resetFormat=function(){var a,b,d,e,f,g,i,j;if(a=null!=(i=this.options.format)?i:c,a||(a="d"),d=h.exec(a),!d)throw new Error("Odometer: Unparsable digit format");return j=d.slice(1,4),g=j[0],f=j[1],b=j[2],e=(null!=b?b.length:void 0)||0,this.format={repeating:g,radix:f,precision:e}},a.prototype.render=function(a){var b,c,d,e,f,g,h;for(null==a&&(a=this.value),this.stopWatchingMutations(),this.resetFormat(),this.inside.innerHTML="",f=this.options.theme,b=this.el.className.split(" "),e=[],g=0,h=b.length;h>g;g++)c=b[g],c.length&&((d=/^odometer-theme-(.+)$/.exec(c))?f=d[1]:/^odometer(-|$)/.test(c)||e.push(c));return e.push("odometer"),p||e.push("odometer-no-transitions"),f?e.push("odometer-theme-"+f):e.push("odometer-auto-theme"),this.el.className=e.join(" "),this.ribbons={},this.formatDigits(a),this.startWatchingMutations()},a.prototype.formatDigits=function(a){var b,c,d,e,f,g,h,i,j,k;if(this.digits=[],this.options.formatFunction)for(d=this.options.formatFunction(a),j=d.split("").reverse(),f=0,h=j.length;h>f;f++)c=j[f],c.match(/0-9/)?(b=this.renderDigit(),b.querySelector(".odometer-value").innerHTML=c,this.digits.push(b),this.insertDigit(b)):this.addSpacer(c);else for(e=!this.format.precision||!t(a)||!1,k=a.toString().split("").reverse(),g=0,i=k.length;i>g;g++)b=k[g],"."===b&&(e=!0),this.addDigit(b,e)},a.prototype.update=function(a){var b,c=this;return a=this.cleanValue(a),(b=a-this.value)?(v(this.el,"odometer-animating-up odometer-animating-down odometer-animating"),b>0?r(this.el,"odometer-animating-up"):r(this.el,"odometer-animating-down"),this.stopWatchingMutations(),this.animate(a),this.startWatchingMutations(),setTimeout(function(){return c.el.offsetHeight,r(c.el,"odometer-animating")},0),this.value=a):void 0},a.prototype.renderDigit=function(){return s(d)},a.prototype.insertDigit=function(a,b){return null!=b?this.inside.insertBefore(a,b):this.inside.children.length?this.inside.insertBefore(a,this.inside.children[0]):this.inside.appendChild(a)},a.prototype.addSpacer=function(a,b,c){var d;return d=s(g),d.innerHTML=a,c&&r(d,c),this.insertDigit(d,b)},a.prototype.addDigit=function(a,b){var c,d,e,f;if(null==b&&(b=!0),"-"===a)return this.addSpacer(a,null,"odometer-negation-mark");if("."===a)return this.addSpacer(null!=(f=this.format.radix)?f:".",null,"odometer-radix-mark");if(b)for(e=!1;;){if(!this.format.repeating.length){if(e)throw new Error("Bad odometer format without digits");this.resetFormat(),e=!0}if(c=this.format.repeating[this.format.repeating.length-1],this.format.repeating=this.format.repeating.substring(0,this.format.repeating.length-1),"d"===c)break;this.addSpacer(c)}return d=this.renderDigit(),d.querySelector(".odometer-value").innerHTML=a,this.digits.push(d),this.insertDigit(d)},a.prototype.animate=function(a){return p&&"count"!==this.options.animation?this.animateSlide(a):this.animateCount(a)},a.prototype.animateCount=function(a){var c,d,e,f,g,h=this;if(d=+a-this.value)return f=e=u(),c=this.value,(g=function(){var i,j,k;return u()-f>h.options.duration?(h.value=a,h.render(),void z(h.el,"odometerdone")):(i=u()-e,i>b&&(e=u(),k=i/h.options.duration,j=d*k,c+=j,h.render(Math.round(c))),null!=w?w(g):setTimeout(g,b))})()},a.prototype.getDigitCount=function(){var a,b,c,d,e,f;for(d=1<=arguments.length?G.call(arguments,0):[],a=e=0,f=d.length;f>e;a=++e)c=d[a],d[a]=Math.abs(c);return b=Math.max.apply(Math,d),Math.ceil(Math.log(b+1)/Math.log(10))},a.prototype.getFractionalDigitCount=function(){var a,b,c,d,e,f,g;for(e=1<=arguments.length?G.call(arguments,0):[],b=/^\-?\d*\.(\d*?)0*$/,a=f=0,g=e.length;g>f;a=++f)d=e[a],e[a]=d.toString(),c=b.exec(e[a]),null==c?e[a]=0:e[a]=c[1].length;return Math.max.apply(Math,e)},a.prototype.resetDigits=function(){return this.digits=[],this.ribbons=[],this.inside.innerHTML="",this.resetFormat()},a.prototype.animateSlide=function(a){var b,c,d,f,g,h,i,j,k,l,m,n,o,p,q,s,t,u,v,w,x,y,z,B,C,D,E;if(s=this.value,j=this.getFractionalDigitCount(s,a),j&&(a*=Math.pow(10,j),s*=Math.pow(10,j)),d=a-s){for(this.bindTransitionEnd(),f=this.getDigitCount(s,a),g=[],b=0,m=v=0;f>=0?f>v:v>f;m=f>=0?++v:--v){if(t=A(s/Math.pow(10,f-m-1)),i=A(a/Math.pow(10,f-m-1)),h=i-t,Math.abs(h)>this.MAX_VALUES){for(l=[],n=h/(this.MAX_VALUES+this.MAX_VALUES*b*e),c=t;h>0&&i>c||0>h&&c>i;)l.push(Math.round(c)),c+=n;l[l.length-1]!==i&&l.push(i),b++}else l=function(){E=[];for(var a=t;i>=t?i>=a:a>=i;i>=t?a++:a--)E.push(a);return E}.apply(this);for(m=w=0,y=l.length;y>w;m=++w)k=l[m],l[m]=Math.abs(k%10);g.push(l)}for(this.resetDigits(),D=g.reverse(),m=x=0,z=D.length;z>x;m=++x)for(l=D[m],this.digits[m]||this.addDigit(" ",m>=j),null==(u=this.ribbons)[m]&&(u[m]=this.digits[m].querySelector(".odometer-ribbon-inner")),this.ribbons[m].innerHTML="",0>d&&(l=l.reverse()),o=C=0,B=l.length;B>C;o=++C)k=l[o],q=document.createElement("div"),q.className="odometer-value",q.innerHTML=k,this.ribbons[m].appendChild(q),o===l.length-1&&r(q,"odometer-last-value"),0===o&&r(q,"odometer-first-value");return 0>t&&this.addDigit("-"),p=this.inside.querySelector(".odometer-radix-mark"),null!=p&&p.parent.removeChild(p),j?this.addSpacer(this.format.radix,this.digits[j-1],"odometer-radix-mark"):void 0}},a}(),m.options=null!=(E=window.odometerOptions)?E:{},setTimeout(function(){var a,b,c,d,e;if(window.odometerOptions){d=window.odometerOptions,e=[];for(a in d)b=d[a],e.push(null!=(c=m.options)[a]?(c=m.options)[a]:c[a]=b);return e}},0),m.init=function(){var a,b,c,d,e,f;if(null!=document.querySelectorAll){for(b=document.querySelectorAll(m.options.selector||".odometer"),f=[],c=0,d=b.length;d>c;c++)a=b[c],f.push(a.odometer=new m({el:a,value:null!=(e=a.innerText)?e:a.textContent}));return f}},null!=(null!=(F=document.documentElement)?F.doScroll:void 0)&&null!=document.createEventObject?(D=document.onreadystatechange,document.onreadystatechange=function(){return"complete"===document.readyState&&m.options.auto!==!1&&m.init(),null!=D?D.apply(this,arguments):void 0}):document.addEventListener("DOMContentLoaded",function(){return m.options.auto!==!1?m.init():void 0},!1), true?!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function(){return m}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
112 | __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)):"undefined"!=typeof exports&&null!==exports?module.exports=m:window.Odometer=m}).call(this);
113 |
114 |
115 | /***/ }),
116 | /* 2 */
117 | /***/ (function(module, exports) {
118 |
119 | // removed by extract-text-webpack-plugin
120 |
121 | /***/ }),
122 | /* 3 */
123 | /***/ (function(module, exports) {
124 |
125 | // removed by extract-text-webpack-plugin
126 |
127 | /***/ }),
128 | /* 4 */
129 | /***/ (function(module, exports) {
130 |
131 | // removed by extract-text-webpack-plugin
132 |
133 | /***/ }),
134 | /* 5 */
135 | /***/ (function(module, exports) {
136 |
137 | // removed by extract-text-webpack-plugin
138 |
139 | /***/ }),
140 | /* 6 */
141 | /***/ (function(module, exports) {
142 |
143 | // removed by extract-text-webpack-plugin
144 |
145 | /***/ }),
146 | /* 7 */
147 | /***/ (function(module, exports) {
148 |
149 | // removed by extract-text-webpack-plugin
150 |
151 | /***/ }),
152 | /* 8 */
153 | /***/ (function(module, exports) {
154 |
155 | // removed by extract-text-webpack-plugin
156 |
157 | /***/ }),
158 | /* 9 */
159 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
160 |
161 | "use strict";
162 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_bustCache_VueOdometer_vue__ = __webpack_require__(11);
163 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_bustCache_VueOdometer_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_bustCache_VueOdometer_vue__);
164 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_59dff9dd_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_bustCache_VueOdometer_vue__ = __webpack_require__(12);
165 | var disposed = false
166 | var normalizeComponent = __webpack_require__(10)
167 | /* script */
168 |
169 | /* template */
170 |
171 | /* template functional */
172 | var __vue_template_functional__ = false
173 | /* styles */
174 | var __vue_styles__ = null
175 | /* scopeId */
176 | var __vue_scopeId__ = null
177 | /* moduleIdentifier (server only) */
178 | var __vue_module_identifier__ = null
179 | var Component = normalizeComponent(
180 | __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_bustCache_VueOdometer_vue___default.a,
181 | __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_59dff9dd_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_bustCache_VueOdometer_vue__["a" /* default */],
182 | __vue_template_functional__,
183 | __vue_styles__,
184 | __vue_scopeId__,
185 | __vue_module_identifier__
186 | )
187 | Component.options.__file = "components\\VueOdometer.vue"
188 | if (Component.esModule && Object.keys(Component.esModule).some(function (key) { return key !== "default" && key.substr(0, 2) !== "__"})) { console.error("named exports are not supported in *.vue files.")}
189 |
190 | /* hot reload */
191 | if (false) {(function () {
192 | var hotAPI = require("vue-hot-reload-api")
193 | hotAPI.install(require("vue"), false)
194 | if (!hotAPI.compatible) return
195 | module.hot.accept()
196 | if (!module.hot.data) {
197 | hotAPI.createRecord("data-v-59dff9dd", Component.options)
198 | } else {
199 | hotAPI.reload("data-v-59dff9dd", Component.options)
200 | ' + ' }
201 | module.hot.dispose(function (data) {
202 | disposed = true
203 | })
204 | })()}
205 |
206 | /* harmony default export */ __webpack_exports__["a"] = (Component.exports);
207 |
208 |
209 | /***/ }),
210 | /* 10 */
211 | /***/ (function(module, exports) {
212 |
213 | /* globals __VUE_SSR_CONTEXT__ */
214 |
215 | // IMPORTANT: Do NOT use ES2015 features in this file.
216 | // This module is a runtime utility for cleaner component module output and will
217 | // be included in the final webpack user bundle.
218 |
219 | module.exports = function normalizeComponent (
220 | rawScriptExports,
221 | compiledTemplate,
222 | functionalTemplate,
223 | injectStyles,
224 | scopeId,
225 | moduleIdentifier /* server only */
226 | ) {
227 | var esModule
228 | var scriptExports = rawScriptExports = rawScriptExports || {}
229 |
230 | // ES6 modules interop
231 | var type = typeof rawScriptExports.default
232 | if (type === 'object' || type === 'function') {
233 | esModule = rawScriptExports
234 | scriptExports = rawScriptExports.default
235 | }
236 |
237 | // Vue.extend constructor export interop
238 | var options = typeof scriptExports === 'function'
239 | ? scriptExports.options
240 | : scriptExports
241 |
242 | // render functions
243 | if (compiledTemplate) {
244 | options.render = compiledTemplate.render
245 | options.staticRenderFns = compiledTemplate.staticRenderFns
246 | options._compiled = true
247 | }
248 |
249 | // functional template
250 | if (functionalTemplate) {
251 | options.functional = true
252 | }
253 |
254 | // scopedId
255 | if (scopeId) {
256 | options._scopeId = scopeId
257 | }
258 |
259 | var hook
260 | if (moduleIdentifier) { // server build
261 | hook = function (context) {
262 | // 2.3 injection
263 | context =
264 | context || // cached call
265 | (this.$vnode && this.$vnode.ssrContext) || // stateful
266 | (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
267 | // 2.2 with runInNewContext: true
268 | if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
269 | context = __VUE_SSR_CONTEXT__
270 | }
271 | // inject component styles
272 | if (injectStyles) {
273 | injectStyles.call(this, context)
274 | }
275 | // register component module identifier for async chunk inferrence
276 | if (context && context._registeredComponents) {
277 | context._registeredComponents.add(moduleIdentifier)
278 | }
279 | }
280 | // used by ssr in case component is cached and beforeCreate
281 | // never gets called
282 | options._ssrRegister = hook
283 | } else if (injectStyles) {
284 | hook = injectStyles
285 | }
286 |
287 | if (hook) {
288 | var functional = options.functional
289 | var existing = functional
290 | ? options.render
291 | : options.beforeCreate
292 |
293 | if (!functional) {
294 | // inject component registration as beforeCreate hook
295 | options.beforeCreate = existing
296 | ? [].concat(existing, hook)
297 | : [hook]
298 | } else {
299 | // for template-only hot-reload because in that case the render fn doesn't
300 | // go through the normalizer
301 | options._injectStyles = hook
302 | // register for functioal component in vue file
303 | options.render = function renderWithStyleInjection (h, context) {
304 | hook.call(context)
305 | return existing(h, context)
306 | }
307 | }
308 | }
309 |
310 | return {
311 | esModule: esModule,
312 | exports: scriptExports,
313 | options: options
314 | }
315 | }
316 |
317 |
318 | /***/ }),
319 | /* 11 */
320 | /***/ (function(module, exports, __webpack_require__) {
321 |
322 | "use strict";
323 |
324 |
325 | Object.defineProperty(exports, "__esModule", {
326 | value: true
327 | });
328 | //
329 | //
330 | //
331 | //
332 |
333 | exports.default = {
334 | name: "VueOdometer",
335 | props: {
336 | className: {
337 | type: String,
338 | default: "odometer"
339 | },
340 | value: {
341 | type: Number,
342 | required: false,
343 | default: 0
344 | },
345 | format: {
346 | type: String,
347 | required: false,
348 | default: '(.ddd),dd'
349 | },
350 | theme: {
351 | type: String,
352 | required: false,
353 | default: 'minimal'
354 | },
355 | duration: {
356 | type: Number,
357 | required: false,
358 | default: 3000
359 | },
360 | animation: {
361 | type: String,
362 | required: false,
363 | default: 'count'
364 | },
365 | formatFunction: {
366 | type: Function,
367 | required: false
368 | }
369 | },
370 | data: function data() {
371 | return {
372 | instance: null
373 | };
374 | },
375 | watch: {
376 | value: {
377 | handler: function handler(value) {
378 | if (this.instance && this.instance.update) {
379 | this.instance.update(value);
380 | }
381 | },
382 | deep: false
383 | }
384 | },
385 | mounted: function mounted() {
386 | this.instance = new Odometer({
387 | el: this.$el,
388 | value: this.value,
389 | theme: this.theme,
390 | format: this.format,
391 | duration: this.duration,
392 | animation: this.animation
393 | });
394 |
395 | this.instance.render();
396 | }
397 | };
398 |
399 | /***/ }),
400 | /* 12 */
401 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
402 |
403 | "use strict";
404 | var render = function() {
405 | var _vm = this
406 | var _h = _vm.$createElement
407 | var _c = _vm._self._c || _h
408 | return _c("span", { class: _vm.className })
409 | }
410 | var staticRenderFns = []
411 | render._withStripped = true
412 | var esExports = { render: render, staticRenderFns: staticRenderFns }
413 | /* harmony default export */ __webpack_exports__["a"] = (esExports);
414 | if (false) {
415 | module.hot.accept()
416 | if (module.hot.data) {
417 | require("vue-hot-reload-api") .rerender("data-v-59dff9dd", esExports)
418 | }
419 | }
420 |
421 | /***/ })
422 | /******/ ]);
423 | //# sourceMappingURL=main.dev.js.map
--------------------------------------------------------------------------------
/dist/main.dev.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["webpack:///webpack/bootstrap 853403ec1bb3b8e1df6a","webpack:///./index.js","webpack:///../node_modules/odometer/odometer.min.js","webpack:///../node_modules/odometer/themes/odometer-theme-car.css","webpack:///../node_modules/odometer/themes/odometer-theme-default.css","webpack:///../node_modules/odometer/themes/odometer-theme-digital.css","webpack:///../node_modules/odometer/themes/odometer-theme-minimal.css","webpack:///../node_modules/odometer/themes/odometer-theme-plaza.css","webpack:///../node_modules/odometer/themes/odometer-theme-slot-machine.css","webpack:///../node_modules/odometer/themes/odometer-theme-train-station.css","webpack:///./components/VueOdometer.vue","webpack:///../node_modules/vue-loader/lib/component-normalizer.js","webpack:///components/VueOdometer.vue","webpack:///./components/VueOdometer.vue?c18d"],"names":[],"mappings":";AAAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,uI;;;;;;ACfA;AACA,YAAY,+EAA+E,60BAA60B,MAAM,mEAAmE,iBAAiB,oGAAoG,iBAAiB,iCAAiC,iBAAiB,MAAM,wHAAwH,cAAc,QAAQ,mGAAmG,iBAAiB,kGAAkG,eAAe,sCAAsC,eAAe,cAAc,oBAAoB,cAAc,4BAA4B,+CAA+C,IAAI,8BAA8B,MAAM,6DAA6D,MAAM,gHAAgH,KAAK,UAAU,iCAAiC,cAAc,+BAA+B,yFAAyF,kCAAkC,6DAA6D,+MAA+M,IAAI,6DAA6D,IAAI,0CAA0C,qCAAqC,eAAe,MAAM,6FAA6F,iBAAiB,oBAAoB,EAAE,IAAI,SAAS,8BAA8B,2CAA2C,+IAA+I,0CAA0C,aAAa,eAAe,6DAA6D,MAAM,uEAAuE,wDAAwD,SAAS,KAAK,+CAA+C,0DAA0D,aAAa,SAAS,8CAA8C,MAAM,qDAAqD,oCAAoC,MAAM,yLAAyL,0CAA0C,uBAAuB,6BAA6B,uEAAuE,IAAI,wDAAwD,wCAAwC,8CAA8C,QAAQ,MAAM,UAAU,oCAAoC,oBAAoB,sHAAsH,uFAAuF,iCAAiC,gCAAgC,kBAAkB,6KAA6K,IAAI,sGAAsG,wKAAwK,oDAAoD,sCAAsC,wBAAwB,0HAA0H,IAAI,0JAA0J,+FAA+F,IAAI,8CAA8C,gCAAgC,aAAa,ySAAyS,sDAAsD,yBAAyB,oCAAoC,YAAY,uCAAuC,wJAAwJ,uCAAuC,MAAM,4DAA4D,oCAAoC,YAAY,kFAAkF,+FAA+F,eAAe,EAAE,kCAAkC,2DAA2D,wBAAwB,iKAAiK,kBAAkB,mHAAmH,iCAAiC,qFAAqF,sCAAsC,qBAAqB,6DAA6D,UAAU,iMAAiM,IAAI,sCAAsC,gBAAgB,kEAAkE,IAAI,8BAA8B,sEAAsE,gDAAgD,kBAAkB,yFAAyF,IAAI,8EAA8E,8BAA8B,oCAAoC,kFAAkF,sCAAsC,0DAA0D,oGAAoG,sEAAsE,aAAa,gBAAgB,0FAA0F,uDAAuD,mBAAmB,4BAA4B,iCAAiC,kBAAkB,KAAK,YAAY,eAAe,uBAAuB,SAAS,aAAa,qBAAqB,IAAI,iCAAiC,UAAU,sDAAsD,IAAI,qNAAqN,IAAI,qMAAqM,uMAAuM,GAAG,kDAAkD,uBAAuB,cAAc,2BAA2B,8BAA8B,yEAAyE,UAAU,sBAAsB,gBAAgB,oCAAoC,qFAAqF,IAAI,oCAAoC,iDAAiD,GAAG,UAAU,sKAAsK,6GAA6G,0DAA0D,2CAA2C,2FAAgE,SAAS;AAAA,oLAAiF;;;;;;;ACDp/T,yC;;;;;;ACAA,yC;;;;;;ACAA,yC;;;;;;ACAA,yC;;;;;;ACAA,yC;;;;;;ACAA,yC;;;;;;ACAA,yC;;;;;;;;;ACAA;AAAA;AACA;AACA;AACA;AACA;AACwK;AACxK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E,wDAAwD,IAAI;;AAE3I;AACA,YAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAED;;;;;;;ACzCA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACjGA;;;OAEA;;;SAGA;YAEA;AAHA;;SAKA;aACA;YAEA;AAJA;;SAMA;aACA;YAEA;AAJA;;SAMA;aACA;YAEA;AAJA;;SAMA;aACA;YAEA;AAJA;;SAMA;aACA;YAEA;AAJA;;SAMA;aAGA;AAJA;AA9BA;uBAmCA;;aAGA;AAFA;AAGA;;;6BAGA,OACA;+CACA;0BACA;AACA;AACA;SAGA;AATA;AADA;6BAWA;;YAEA;eACA;eACA;gBACA;kBACA;mBAGA;AARA;;gBASA;AACA;AAhEA,E;;;;;;;ACNA;AACA;AACA;AACA;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,C","file":"main.dev.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 853403ec1bb3b8e1df6a","import Odometer from 'odometer/odometer.min.js'\r\nimport 'odometer/themes/odometer-theme-car.css'\r\nimport 'odometer/themes/odometer-theme-default.css'\r\nimport 'odometer/themes/odometer-theme-digital.css'\r\nimport 'odometer/themes/odometer-theme-minimal.css'\r\nimport 'odometer/themes/odometer-theme-plaza.css'\r\nimport 'odometer/themes/odometer-theme-slot-machine.css'\r\nimport 'odometer/themes/odometer-theme-train-station.css'\r\nimport VueOdometer from './components/VueOdometer'\r\n\r\nif (typeof window !== 'undefined' && window.Vue)\r\n{\r\n\twindow.Vue.component('vue-odometer', VueOdometer)\r\n}\r\n\r\nexport default VueOdometer\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./index.js\n// module id = 0\n// module chunks = 0","/*! odometer 0.4.8 */\n(function(){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G=[].slice;q=' ',n=''+q+\" \",d='8 '+n+\" \",g=' ',c=\"(,ddd).dd\",h=/^\\(?([^)]*)\\)?(?:(.)(d+))?$/,i=30,f=2e3,a=20,j=2,e=.5,k=1e3/i,b=1e3/a,o=\"transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd\",y=document.createElement(\"div\").style,p=null!=y.transition||null!=y.webkitTransition||null!=y.mozTransition||null!=y.oTransition,w=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame,l=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver,s=function(a){var b;return b=document.createElement(\"div\"),b.innerHTML=a,b.children[0]},v=function(a,b){return a.className=a.className.replace(new RegExp(\"(^| )\"+b.split(\" \").join(\"|\")+\"( |$)\",\"gi\"),\" \")},r=function(a,b){return v(a,b),a.className+=\" \"+b},z=function(a,b){var c;return null!=document.createEvent?(c=document.createEvent(\"HTMLEvents\"),c.initEvent(b,!0,!0),a.dispatchEvent(c)):void 0},u=function(){var a,b;return null!=(a=null!=(b=window.performance)&&\"function\"==typeof b.now?b.now():void 0)?a:+new Date},x=function(a,b){return null==b&&(b=0),b?(a*=Math.pow(10,b),a+=.5,a=Math.floor(a),a/=Math.pow(10,b)):Math.round(a)},A=function(a){return 0>a?Math.ceil(a):Math.floor(a)},t=function(a){return a-x(a)},C=!1,(B=function(){var a,b,c,d,e;if(!C&&null!=window.jQuery){for(C=!0,d=[\"html\",\"text\"],e=[],b=0,c=d.length;c>b;b++)a=d[b],e.push(function(a){var b;return b=window.jQuery.fn[a],window.jQuery.fn[a]=function(a){var c;return null==a||null==(null!=(c=this[0])?c.odometer:void 0)?b.apply(this,arguments):this[0].odometer.update(a)}}(a));return e}})(),setTimeout(B,0),m=function(){function a(b){var c,d,e,g,h,i,l,m,n,o,p=this;if(this.options=b,this.el=this.options.el,null!=this.el.odometer)return this.el.odometer;this.el.odometer=this,m=a.options;for(d in m)g=m[d],null==this.options[d]&&(this.options[d]=g);null==(h=this.options).duration&&(h.duration=f),this.MAX_VALUES=this.options.duration/k/j|0,this.resetFormat(),this.value=this.cleanValue(null!=(n=this.options.value)?n:\"\"),this.renderInside(),this.render();try{for(o=[\"innerHTML\",\"innerText\",\"textContent\"],i=0,l=o.length;l>i;i++)e=o[i],null!=this.el[e]&&!function(a){return Object.defineProperty(p.el,a,{get:function(){var b;return\"innerHTML\"===a?p.inside.outerHTML:null!=(b=p.inside.innerText)?b:p.inside.textContent},set:function(a){return p.update(a)}})}(e)}catch(q){c=q,this.watchForMutations()}}return a.prototype.renderInside=function(){return this.inside=document.createElement(\"div\"),this.inside.className=\"odometer-inside\",this.el.innerHTML=\"\",this.el.appendChild(this.inside)},a.prototype.watchForMutations=function(){var a,b=this;if(null!=l)try{return null==this.observer&&(this.observer=new l(function(a){var c;return c=b.el.innerText,b.renderInside(),b.render(b.value),b.update(c)})),this.watchMutations=!0,this.startWatchingMutations()}catch(c){a=c}},a.prototype.startWatchingMutations=function(){return this.watchMutations?this.observer.observe(this.el,{childList:!0}):void 0},a.prototype.stopWatchingMutations=function(){var a;return null!=(a=this.observer)?a.disconnect():void 0},a.prototype.cleanValue=function(a){var b;return\"string\"==typeof a&&(a=a.replace(null!=(b=this.format.radix)?b:\".\",\"\"),a=a.replace(/[.,]/g,\"\"),a=a.replace(\"\",\".\"),a=parseFloat(a,10)||0),x(a,this.format.precision)},a.prototype.bindTransitionEnd=function(){var a,b,c,d,e,f,g=this;if(!this.transitionEndBound){for(this.transitionEndBound=!0,b=!1,e=o.split(\" \"),f=[],c=0,d=e.length;d>c;c++)a=e[c],f.push(this.el.addEventListener(a,function(){return b?!0:(b=!0,setTimeout(function(){return g.render(),b=!1,z(g.el,\"odometerdone\")},0),!0)},!1));return f}},a.prototype.resetFormat=function(){var a,b,d,e,f,g,i,j;if(a=null!=(i=this.options.format)?i:c,a||(a=\"d\"),d=h.exec(a),!d)throw new Error(\"Odometer: Unparsable digit format\");return j=d.slice(1,4),g=j[0],f=j[1],b=j[2],e=(null!=b?b.length:void 0)||0,this.format={repeating:g,radix:f,precision:e}},a.prototype.render=function(a){var b,c,d,e,f,g,h;for(null==a&&(a=this.value),this.stopWatchingMutations(),this.resetFormat(),this.inside.innerHTML=\"\",f=this.options.theme,b=this.el.className.split(\" \"),e=[],g=0,h=b.length;h>g;g++)c=b[g],c.length&&((d=/^odometer-theme-(.+)$/.exec(c))?f=d[1]:/^odometer(-|$)/.test(c)||e.push(c));return e.push(\"odometer\"),p||e.push(\"odometer-no-transitions\"),f?e.push(\"odometer-theme-\"+f):e.push(\"odometer-auto-theme\"),this.el.className=e.join(\" \"),this.ribbons={},this.formatDigits(a),this.startWatchingMutations()},a.prototype.formatDigits=function(a){var b,c,d,e,f,g,h,i,j,k;if(this.digits=[],this.options.formatFunction)for(d=this.options.formatFunction(a),j=d.split(\"\").reverse(),f=0,h=j.length;h>f;f++)c=j[f],c.match(/0-9/)?(b=this.renderDigit(),b.querySelector(\".odometer-value\").innerHTML=c,this.digits.push(b),this.insertDigit(b)):this.addSpacer(c);else for(e=!this.format.precision||!t(a)||!1,k=a.toString().split(\"\").reverse(),g=0,i=k.length;i>g;g++)b=k[g],\".\"===b&&(e=!0),this.addDigit(b,e)},a.prototype.update=function(a){var b,c=this;return a=this.cleanValue(a),(b=a-this.value)?(v(this.el,\"odometer-animating-up odometer-animating-down odometer-animating\"),b>0?r(this.el,\"odometer-animating-up\"):r(this.el,\"odometer-animating-down\"),this.stopWatchingMutations(),this.animate(a),this.startWatchingMutations(),setTimeout(function(){return c.el.offsetHeight,r(c.el,\"odometer-animating\")},0),this.value=a):void 0},a.prototype.renderDigit=function(){return s(d)},a.prototype.insertDigit=function(a,b){return null!=b?this.inside.insertBefore(a,b):this.inside.children.length?this.inside.insertBefore(a,this.inside.children[0]):this.inside.appendChild(a)},a.prototype.addSpacer=function(a,b,c){var d;return d=s(g),d.innerHTML=a,c&&r(d,c),this.insertDigit(d,b)},a.prototype.addDigit=function(a,b){var c,d,e,f;if(null==b&&(b=!0),\"-\"===a)return this.addSpacer(a,null,\"odometer-negation-mark\");if(\".\"===a)return this.addSpacer(null!=(f=this.format.radix)?f:\".\",null,\"odometer-radix-mark\");if(b)for(e=!1;;){if(!this.format.repeating.length){if(e)throw new Error(\"Bad odometer format without digits\");this.resetFormat(),e=!0}if(c=this.format.repeating[this.format.repeating.length-1],this.format.repeating=this.format.repeating.substring(0,this.format.repeating.length-1),\"d\"===c)break;this.addSpacer(c)}return d=this.renderDigit(),d.querySelector(\".odometer-value\").innerHTML=a,this.digits.push(d),this.insertDigit(d)},a.prototype.animate=function(a){return p&&\"count\"!==this.options.animation?this.animateSlide(a):this.animateCount(a)},a.prototype.animateCount=function(a){var c,d,e,f,g,h=this;if(d=+a-this.value)return f=e=u(),c=this.value,(g=function(){var i,j,k;return u()-f>h.options.duration?(h.value=a,h.render(),void z(h.el,\"odometerdone\")):(i=u()-e,i>b&&(e=u(),k=i/h.options.duration,j=d*k,c+=j,h.render(Math.round(c))),null!=w?w(g):setTimeout(g,b))})()},a.prototype.getDigitCount=function(){var a,b,c,d,e,f;for(d=1<=arguments.length?G.call(arguments,0):[],a=e=0,f=d.length;f>e;a=++e)c=d[a],d[a]=Math.abs(c);return b=Math.max.apply(Math,d),Math.ceil(Math.log(b+1)/Math.log(10))},a.prototype.getFractionalDigitCount=function(){var a,b,c,d,e,f,g;for(e=1<=arguments.length?G.call(arguments,0):[],b=/^\\-?\\d*\\.(\\d*?)0*$/,a=f=0,g=e.length;g>f;a=++f)d=e[a],e[a]=d.toString(),c=b.exec(e[a]),null==c?e[a]=0:e[a]=c[1].length;return Math.max.apply(Math,e)},a.prototype.resetDigits=function(){return this.digits=[],this.ribbons=[],this.inside.innerHTML=\"\",this.resetFormat()},a.prototype.animateSlide=function(a){var b,c,d,f,g,h,i,j,k,l,m,n,o,p,q,s,t,u,v,w,x,y,z,B,C,D,E;if(s=this.value,j=this.getFractionalDigitCount(s,a),j&&(a*=Math.pow(10,j),s*=Math.pow(10,j)),d=a-s){for(this.bindTransitionEnd(),f=this.getDigitCount(s,a),g=[],b=0,m=v=0;f>=0?f>v:v>f;m=f>=0?++v:--v){if(t=A(s/Math.pow(10,f-m-1)),i=A(a/Math.pow(10,f-m-1)),h=i-t,Math.abs(h)>this.MAX_VALUES){for(l=[],n=h/(this.MAX_VALUES+this.MAX_VALUES*b*e),c=t;h>0&&i>c||0>h&&c>i;)l.push(Math.round(c)),c+=n;l[l.length-1]!==i&&l.push(i),b++}else l=function(){E=[];for(var a=t;i>=t?i>=a:a>=i;i>=t?a++:a--)E.push(a);return E}.apply(this);for(m=w=0,y=l.length;y>w;m=++w)k=l[m],l[m]=Math.abs(k%10);g.push(l)}for(this.resetDigits(),D=g.reverse(),m=x=0,z=D.length;z>x;m=++x)for(l=D[m],this.digits[m]||this.addDigit(\" \",m>=j),null==(u=this.ribbons)[m]&&(u[m]=this.digits[m].querySelector(\".odometer-ribbon-inner\")),this.ribbons[m].innerHTML=\"\",0>d&&(l=l.reverse()),o=C=0,B=l.length;B>C;o=++C)k=l[o],q=document.createElement(\"div\"),q.className=\"odometer-value\",q.innerHTML=k,this.ribbons[m].appendChild(q),o===l.length-1&&r(q,\"odometer-last-value\"),0===o&&r(q,\"odometer-first-value\");return 0>t&&this.addDigit(\"-\"),p=this.inside.querySelector(\".odometer-radix-mark\"),null!=p&&p.parent.removeChild(p),j?this.addSpacer(this.format.radix,this.digits[j-1],\"odometer-radix-mark\"):void 0}},a}(),m.options=null!=(E=window.odometerOptions)?E:{},setTimeout(function(){var a,b,c,d,e;if(window.odometerOptions){d=window.odometerOptions,e=[];for(a in d)b=d[a],e.push(null!=(c=m.options)[a]?(c=m.options)[a]:c[a]=b);return e}},0),m.init=function(){var a,b,c,d,e,f;if(null!=document.querySelectorAll){for(b=document.querySelectorAll(m.options.selector||\".odometer\"),f=[],c=0,d=b.length;d>c;c++)a=b[c],f.push(a.odometer=new m({el:a,value:null!=(e=a.innerText)?e:a.textContent}));return f}},null!=(null!=(F=document.documentElement)?F.doScroll:void 0)&&null!=document.createEventObject?(D=document.onreadystatechange,document.onreadystatechange=function(){return\"complete\"===document.readyState&&m.options.auto!==!1&&m.init(),null!=D?D.apply(this,arguments):void 0}):document.addEventListener(\"DOMContentLoaded\",function(){return m.options.auto!==!1?m.init():void 0},!1),\"function\"==typeof define&&define.amd?define([],function(){return m}):\"undefined\"!=typeof exports&&null!==exports?module.exports=m:window.Odometer=m}).call(this);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../node_modules/odometer/odometer.min.js\n// module id = 1\n// module chunks = 0","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../node_modules/odometer/themes/odometer-theme-car.css\n// module id = 2\n// module chunks = 0","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../node_modules/odometer/themes/odometer-theme-default.css\n// module id = 3\n// module chunks = 0","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../node_modules/odometer/themes/odometer-theme-digital.css\n// module id = 4\n// module chunks = 0","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../node_modules/odometer/themes/odometer-theme-minimal.css\n// module id = 5\n// module chunks = 0","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../node_modules/odometer/themes/odometer-theme-plaza.css\n// module id = 6\n// module chunks = 0","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../node_modules/odometer/themes/odometer-theme-slot-machine.css\n// module id = 7\n// module chunks = 0","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../node_modules/odometer/themes/odometer-theme-train-station.css\n// module id = 8\n// module chunks = 0","var disposed = false\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0&bustCache!./VueOdometer.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-59dff9dd\\\",\\\"hasScoped\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0&bustCache!./VueOdometer.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"components\\\\VueOdometer.vue\"\nif (Component.esModule && Object.keys(Component.esModule).some(function (key) { return key !== \"default\" && key.substr(0, 2) !== \"__\"})) { console.error(\"named exports are not supported in *.vue files.\")}\n\n/* hot reload */\nif (module.hot) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-59dff9dd\", Component.options)\n } else {\n hotAPI.reload(\"data-v-59dff9dd\", Component.options)\n' + ' }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./components/VueOdometer.vue\n// module id = 9\n// module chunks = 0","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file.\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nmodule.exports = function normalizeComponent (\n rawScriptExports,\n compiledTemplate,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier /* server only */\n) {\n var esModule\n var scriptExports = rawScriptExports = rawScriptExports || {}\n\n // ES6 modules interop\n var type = typeof rawScriptExports.default\n if (type === 'object' || type === 'function') {\n esModule = rawScriptExports\n scriptExports = rawScriptExports.default\n }\n\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (compiledTemplate) {\n options.render = compiledTemplate.render\n options.staticRenderFns = compiledTemplate.staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = injectStyles\n }\n\n if (hook) {\n var functional = options.functional\n var existing = functional\n ? options.render\n : options.beforeCreate\n\n if (!functional) {\n // inject component registration as beforeCreate hook\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n } else {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return existing(h, context)\n }\n }\n }\n\n return {\n esModule: esModule,\n exports: scriptExports,\n options: options\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../node_modules/vue-loader/lib/component-normalizer.js\n// module id = 10\n// module chunks = 0","\r\n\t \r\n \r\n\r\n\n\n\n// WEBPACK FOOTER //\n// components/VueOdometer.vue?20e685de","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"span\", { class: _vm.className })\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\nif (module.hot) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-59dff9dd\", esExports)\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-59dff9dd\",\"hasScoped\":false,\"buble\":{\"transforms\":{}}}!../node_modules/vue-loader/lib/selector.js?type=template&index=0&bustCache!./components/VueOdometer.vue\n// module id = 12\n// module chunks = 0"],"sourceRoot":""}
--------------------------------------------------------------------------------
/dist/main.prod.js:
--------------------------------------------------------------------------------
1 | !function(t){function e(i){if(n[i])return n[i].exports;var r=n[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var n={};e.m=t,e.c=n,e.d=function(t,n,i){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:i})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=0)}([function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),r=(n.n(i),n(3)),o=(n.n(r),n(4)),s=(n.n(o),n(5)),a=(n.n(s),n(6)),u=(n.n(a),n(7)),d=(n.n(u),n(8)),l=(n.n(d),n(9));n(1);"undefined"!=typeof window&&window.Vue&&window.Vue.component("vue-odometer",l.a),e.default=l.a},function(t,e,n){var i,r;/*! odometer 0.4.8 */
2 | (function(){var n,o,s,a,u,d,l,h,c,p,f,m,v,g,w,y,M,b,x,T,E,S,_,C,D,F,L,O,A,H,j,N,V=[].slice;M=' ',g=''+M+" ",a='8 '+g+" ",l=' ',s="(,ddd).dd",h=/^\(?([^)]*)\)?(?:(.)(d+))?$/,c=30,d=2e3,n=20,p=2,u=.5,f=1e3/c,o=1e3/n,w="transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd",D=document.createElement("div").style,y=null!=D.transition||null!=D.webkitTransition||null!=D.mozTransition||null!=D.oTransition,_=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame,m=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver,x=function(t){var e;return e=document.createElement("div"),e.innerHTML=t,e.children[0]},S=function(t,e){return t.className=t.className.replace(new RegExp("(^| )"+e.split(" ").join("|")+"( |$)","gi")," ")},b=function(t,e){return S(t,e),t.className+=" "+e},F=function(t,e){var n;return null!=document.createEvent?(n=document.createEvent("HTMLEvents"),n.initEvent(e,!0,!0),t.dispatchEvent(n)):void 0},E=function(){var t,e;return null!=(t=null!=(e=window.performance)&&"function"==typeof e.now?e.now():void 0)?t:+new Date},C=function(t,e){return null==e&&(e=0),e?(t*=Math.pow(10,e),t+=.5,t=Math.floor(t),t/=Math.pow(10,e)):Math.round(t)},L=function(t){return 0>t?Math.ceil(t):Math.floor(t)},T=function(t){return t-C(t)},A=!1,(O=function(){var t,e,n,i,r;if(!A&&null!=window.jQuery){for(A=!0,i=["html","text"],r=[],e=0,n=i.length;n>e;e++)t=i[e],r.push(function(t){var e;return e=window.jQuery.fn[t],window.jQuery.fn[t]=function(t){var n;return null==t||null==(null!=(n=this[0])?n.odometer:void 0)?e.apply(this,arguments):this[0].odometer.update(t)}}(t));return r}})(),setTimeout(O,0),v=function(){function t(e){var n,i,r,o,s,a,u,l,h,c=this;if(this.options=e,this.el=this.options.el,null!=this.el.odometer)return this.el.odometer;this.el.odometer=this,u=t.options;for(n in u)r=u[n],null==this.options[n]&&(this.options[n]=r);null==(o=this.options).duration&&(o.duration=d),this.MAX_VALUES=this.options.duration/f/p|0,this.resetFormat(),this.value=this.cleanValue(null!=(l=this.options.value)?l:""),this.renderInside(),this.render();try{for(h=["innerHTML","innerText","textContent"],s=0,a=h.length;a>s;s++)i=h[s],null!=this.el[i]&&function(t){Object.defineProperty(c.el,t,{get:function(){var e;return"innerHTML"===t?c.inside.outerHTML:null!=(e=c.inside.innerText)?e:c.inside.textContent},set:function(t){return c.update(t)}})}(i)}catch(t){t,this.watchForMutations()}}return t.prototype.renderInside=function(){return this.inside=document.createElement("div"),this.inside.className="odometer-inside",this.el.innerHTML="",this.el.appendChild(this.inside)},t.prototype.watchForMutations=function(){var t=this;if(null!=m)try{return null==this.observer&&(this.observer=new m(function(e){var n;return n=t.el.innerText,t.renderInside(),t.render(t.value),t.update(n)})),this.watchMutations=!0,this.startWatchingMutations()}catch(t){t}},t.prototype.startWatchingMutations=function(){return this.watchMutations?this.observer.observe(this.el,{childList:!0}):void 0},t.prototype.stopWatchingMutations=function(){var t;return null!=(t=this.observer)?t.disconnect():void 0},t.prototype.cleanValue=function(t){var e;return"string"==typeof t&&(t=t.replace(null!=(e=this.format.radix)?e:".",""),t=t.replace(/[.,]/g,""),t=t.replace("","."),t=parseFloat(t,10)||0),C(t,this.format.precision)},t.prototype.bindTransitionEnd=function(){var t,e,n,i,r,o,s=this;if(!this.transitionEndBound){for(this.transitionEndBound=!0,e=!1,r=w.split(" "),o=[],n=0,i=r.length;i>n;n++)t=r[n],o.push(this.el.addEventListener(t,function(){return!!e||(e=!0,setTimeout(function(){return s.render(),e=!1,F(s.el,"odometerdone")},0),!0)},!1));return o}},t.prototype.resetFormat=function(){var t,e,n,i,r,o,a,u;if(t=null!=(a=this.options.format)?a:s,t||(t="d"),!(n=h.exec(t)))throw new Error("Odometer: Unparsable digit format");return u=n.slice(1,4),o=u[0],r=u[1],e=u[2],i=(null!=e?e.length:void 0)||0,this.format={repeating:o,radix:r,precision:i}},t.prototype.render=function(t){var e,n,i,r,o,s,a;for(null==t&&(t=this.value),this.stopWatchingMutations(),this.resetFormat(),this.inside.innerHTML="",o=this.options.theme,e=this.el.className.split(" "),r=[],s=0,a=e.length;a>s;s++)n=e[s],n.length&&((i=/^odometer-theme-(.+)$/.exec(n))?o=i[1]:/^odometer(-|$)/.test(n)||r.push(n));return r.push("odometer"),y||r.push("odometer-no-transitions"),o?r.push("odometer-theme-"+o):r.push("odometer-auto-theme"),this.el.className=r.join(" "),this.ribbons={},this.formatDigits(t),this.startWatchingMutations()},t.prototype.formatDigits=function(t){var e,n,i,r,o,s,a,u,d,l;if(this.digits=[],this.options.formatFunction)for(i=this.options.formatFunction(t),d=i.split("").reverse(),o=0,a=d.length;a>o;o++)n=d[o],n.match(/0-9/)?(e=this.renderDigit(),e.querySelector(".odometer-value").innerHTML=n,this.digits.push(e),this.insertDigit(e)):this.addSpacer(n);else for(r=!this.format.precision||!T(t)||!1,l=t.toString().split("").reverse(),s=0,u=l.length;u>s;s++)e=l[s],"."===e&&(r=!0),this.addDigit(e,r)},t.prototype.update=function(t){var e,n=this;return t=this.cleanValue(t),(e=t-this.value)?(S(this.el,"odometer-animating-up odometer-animating-down odometer-animating"),e>0?b(this.el,"odometer-animating-up"):b(this.el,"odometer-animating-down"),this.stopWatchingMutations(),this.animate(t),this.startWatchingMutations(),setTimeout(function(){return n.el.offsetHeight,b(n.el,"odometer-animating")},0),this.value=t):void 0},t.prototype.renderDigit=function(){return x(a)},t.prototype.insertDigit=function(t,e){return null!=e?this.inside.insertBefore(t,e):this.inside.children.length?this.inside.insertBefore(t,this.inside.children[0]):this.inside.appendChild(t)},t.prototype.addSpacer=function(t,e,n){var i;return i=x(l),i.innerHTML=t,n&&b(i,n),this.insertDigit(i,e)},t.prototype.addDigit=function(t,e){var n,i,r,o;if(null==e&&(e=!0),"-"===t)return this.addSpacer(t,null,"odometer-negation-mark");if("."===t)return this.addSpacer(null!=(o=this.format.radix)?o:".",null,"odometer-radix-mark");if(e)for(r=!1;;){if(!this.format.repeating.length){if(r)throw new Error("Bad odometer format without digits");this.resetFormat(),r=!0}if(n=this.format.repeating[this.format.repeating.length-1],this.format.repeating=this.format.repeating.substring(0,this.format.repeating.length-1),"d"===n)break;this.addSpacer(n)}return i=this.renderDigit(),i.querySelector(".odometer-value").innerHTML=t,this.digits.push(i),this.insertDigit(i)},t.prototype.animate=function(t){return y&&"count"!==this.options.animation?this.animateSlide(t):this.animateCount(t)},t.prototype.animateCount=function(t){var e,n,i,r,s,a=this;if(n=+t-this.value)return r=i=E(),e=this.value,(s=function(){var u,d,l;return E()-r>a.options.duration?(a.value=t,a.render(),void F(a.el,"odometerdone")):(u=E()-i,u>o&&(i=E(),l=u/a.options.duration,d=n*l,e+=d,a.render(Math.round(e))),null!=_?_(s):setTimeout(s,o))})()},t.prototype.getDigitCount=function(){var t,e,n,i,r,o;for(i=1<=arguments.length?V.call(arguments,0):[],t=r=0,o=i.length;o>r;t=++r)n=i[t],i[t]=Math.abs(n);return e=Math.max.apply(Math,i),Math.ceil(Math.log(e+1)/Math.log(10))},t.prototype.getFractionalDigitCount=function(){var t,e,n,i,r,o,s;for(r=1<=arguments.length?V.call(arguments,0):[],e=/^\-?\d*\.(\d*?)0*$/,t=o=0,s=r.length;s>o;t=++o)i=r[t],r[t]=i.toString(),n=e.exec(r[t]),r[t]=null==n?0:n[1].length;return Math.max.apply(Math,r)},t.prototype.resetDigits=function(){return this.digits=[],this.ribbons=[],this.inside.innerHTML="",this.resetFormat()},t.prototype.animateSlide=function(t){var e,n,i,r,o,s,a,d,l,h,c,p,f,m,v,g,w,y,M,x,T,E,S,_,C,D,F;if(g=this.value,d=this.getFractionalDigitCount(g,t),d&&(t*=Math.pow(10,d),g*=Math.pow(10,d)),i=t-g){for(this.bindTransitionEnd(),r=this.getDigitCount(g,t),o=[],e=0,c=M=0;r>=0?r>M:M>r;c=r>=0?++M:--M){if(w=L(g/Math.pow(10,r-c-1)),a=L(t/Math.pow(10,r-c-1)),s=a-w,Math.abs(s)>this.MAX_VALUES){for(h=[],p=s/(this.MAX_VALUES+this.MAX_VALUES*e*u),n=w;s>0&&a>n||0>s&&n>a;)h.push(Math.round(n)),n+=p;h[h.length-1]!==a&&h.push(a),e++}else h=function(){F=[];for(var t=w;a>=w?a>=t:t>=a;a>=w?t++:t--)F.push(t);return F}.apply(this);for(c=x=0,E=h.length;E>x;c=++x)l=h[c],h[c]=Math.abs(l%10);o.push(h)}for(this.resetDigits(),D=o.reverse(),c=T=0,S=D.length;S>T;c=++T)for(h=D[c],this.digits[c]||this.addDigit(" ",c>=d),null==(y=this.ribbons)[c]&&(y[c]=this.digits[c].querySelector(".odometer-ribbon-inner")),this.ribbons[c].innerHTML="",0>i&&(h=h.reverse()),f=C=0,_=h.length;_>C;f=++C)l=h[f],v=document.createElement("div"),v.className="odometer-value",v.innerHTML=l,this.ribbons[c].appendChild(v),f===h.length-1&&b(v,"odometer-last-value"),0===f&&b(v,"odometer-first-value");return 0>w&&this.addDigit("-"),m=this.inside.querySelector(".odometer-radix-mark"),null!=m&&m.parent.removeChild(m),d?this.addSpacer(this.format.radix,this.digits[d-1],"odometer-radix-mark"):void 0}},t}(),v.options=null!=(j=window.odometerOptions)?j:{},setTimeout(function(){var t,e,n,i,r;if(window.odometerOptions){i=window.odometerOptions,r=[];for(t in i)e=i[t],r.push(null!=(n=v.options)[t]?(n=v.options)[t]:n[t]=e);return r}},0),v.init=function(){var t,e,n,i,r,o;if(null!=document.querySelectorAll){for(e=document.querySelectorAll(v.options.selector||".odometer"),o=[],n=0,i=e.length;i>n;n++)t=e[n],o.push(t.odometer=new v({el:t,value:null!=(r=t.innerText)?r:t.textContent}));return o}},null!=(null!=(N=document.documentElement)?N.doScroll:void 0)&&null!=document.createEventObject?(H=document.onreadystatechange,document.onreadystatechange=function(){return"complete"===document.readyState&&!1!==v.options.auto&&v.init(),null!=H?H.apply(this,arguments):void 0}):document.addEventListener("DOMContentLoaded",function(){return!1!==v.options.auto?v.init():void 0},!1),i=[],void 0!==(r=function(){return v}.apply(e,i))&&(t.exports=r)}).call(this)},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e,n){"use strict";var i=n(11),r=n.n(i),o=n(12),s=n(10),a=s(r.a,o.a,!1,null,null,null);e.a=a.exports},function(t,e){t.exports=function(t,e,n,i,r,o){var s,a=t=t||{},u=typeof t.default;"object"!==u&&"function"!==u||(s=t,a=t.default);var d="function"==typeof a?a.options:a;e&&(d.render=e.render,d.staticRenderFns=e.staticRenderFns,d._compiled=!0),n&&(d.functional=!0),r&&(d._scopeId=r);var l;if(o?(l=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),i&&i.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(o)},d._ssrRegister=l):i&&(l=i),l){var h=d.functional,c=h?d.render:d.beforeCreate;h?(d._injectStyles=l,d.render=function(t,e){return l.call(e),c(t,e)}):d.beforeCreate=c?[].concat(c,l):[l]}return{esModule:s,exports:a,options:d}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={name:"VueOdometer",props:{value:{type:Number,default:function(){return 0}},theme:{type:String,default:function(){return"minimal"}},format:{type:String,default:function(){return"(.ddd),dd"}},duration:{type:Number,default:function(){return 3e3}},className:{type:String,default:function(){return"odometer"}},animation:{type:String,default:function(){return"count"}},formatFunction:{type:Function}},data:function(){return{instance:null}},watch:{value:{handler:function(t){this.instance&&this.instance.update&&this.instance.update(t)},deep:!1}},mounted:function(){this.instance=new Odometer({el:this.$el,value:this.value,theme:this.theme,format:this.format,duration:this.duration,animation:this.animation}),this.instance.render()}}},function(t,e,n){"use strict";var i=function(){var t=this,e=t.$createElement;return(t._self._c||e)("span",{class:t.className})},r=[],o={render:i,staticRenderFns:r};e.a=o}]);
--------------------------------------------------------------------------------
/example/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | ["env", { "modules": false }]
4 | ]
5 | }
--------------------------------------------------------------------------------
/example/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/
--------------------------------------------------------------------------------
/example/components/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Update
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/example/css/style.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JefferyHus/v-odometer/8f68854bbd58d9f858b9e44b6a9b57954922f092/example/css/style.css
--------------------------------------------------------------------------------
/example/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Odometer - VueJS component
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/example/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import VueRouter from 'vue-router'
3 | import App from './components/App.vue'
4 | import * as _ from "lodash";
5 | import moment from 'moment';
6 |
7 | /**
8 | * Add the moment to the window
9 | */
10 | window.moment = moment;
11 |
12 | /**
13 | * Change the behavior
14 | */
15 | window.moment.relativeTimeThreshold('s', 60);
16 | window.moment.relativeTimeThreshold('m', 60);
17 | window.moment.relativeTimeThreshold('h', 24);
18 | window.moment.relativeTimeThreshold('d', 28);
19 | window.moment.relativeTimeThreshold('M', 12);
20 | /**
21 | * Start creating the DOM Vue controller
22 | */
23 |
24 | Vue.use(VueRouter);
25 | Vue.use(require('vue-moment'));
26 |
27 | // Create routes for each component
28 | const routes = [
29 | {
30 | path: '/',
31 | component: App
32 | }
33 | ]
34 |
35 | // Create the routing object
36 | const router = new VueRouter({
37 | mode: 'history',
38 | base: __dirname,
39 | routes
40 | })
41 |
42 | new Vue({
43 | router,
44 | components: { App },
45 | render: h => h(App)
46 | }).$mount('#app')
--------------------------------------------------------------------------------
/example/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "devDependencies": {
3 | "babel-core": "^6.26.0",
4 | "babel-loader": "^7.1.4",
5 | "babel-preset-env": "^1.6.0",
6 | "css-loader": "^0.28.11",
7 | "vue-html-loader": "^1.2.4",
8 | "vue-loader": "^13.7.1",
9 | "vue-router": "^2.7.0",
10 | "vue-template-compiler": "^2.5.16",
11 | "webpack": "^3.11.0",
12 | "webpack-dev-server": "^2.11.2"
13 | },
14 | "dependencies": {
15 | "lodash": "^4.17.5",
16 | "v-odometer": "^1.0.2",
17 | "vue": "^2.5.16",
18 | "vue-moment": "^4.1.0"
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/example/webpack.config.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Author: Jeffery Hussin.
3 | * Application: v-odometer example.
4 | * Description: A simple example of how to use this component.
5 | */
6 |
7 | const path = require('path')
8 | const webpack = require('webpack')
9 |
10 | module.exports = {
11 | context: path.resolve(__dirname, ''),
12 | entry: './main.js',
13 | output: {
14 | path: path.resolve(__dirname, 'dist'),
15 | filename: '[name].bundle.js'
16 | },
17 | resolve: {
18 | extensions: ['.vue', '.js'],
19 | },
20 | module: {
21 | loaders: [
22 | {
23 | test: /\.vue$/,
24 | loader: 'vue-loader'
25 | },
26 | {
27 | test: /\.js$/,
28 | loader: 'babel-loader',
29 | exclude: /node_modules/
30 | },
31 | {
32 | test: /\.css$/,
33 | use: [ 'style-loader', 'css-loader' ]
34 | }
35 | ]
36 | }
37 | }
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "v-odometer",
3 | "version": "2.0.1",
4 | "description": "Odometer VusJS component",
5 | "main": "index.js",
6 | "scripts": {
7 | "dev": "webpack-dev-server --inline --hot --quiet --port=8000",
8 | "build": "cross-env NODE_ENV=production webpack --progress --hide-modules"
9 | },
10 | "keywords": [
11 | "odometer",
12 | "animation",
13 | "vuejs",
14 | "component"
15 | ],
16 | "author": "Jeffery Hussin (http://github.com/jefferyhus)",
17 | "repository": {
18 | "type": "git",
19 | "url": "git+https://github.com/JefferyHus/vue-odometer.git"
20 | },
21 | "bugs": {
22 | "url": "https://github.com/JefferyHus/vue-odometer/issues"
23 | },
24 | "homepage": "https://github.com/JefferyHus/vue-odometer#readme",
25 | "devDependencies": {
26 | "autoprefixer": "^10.4.13",
27 | "babel": "^6.23.0",
28 | "babel-core": "^6.26.3",
29 | "babel-loader": "^7.1.5",
30 | "babel-preset-env": "^1.7.0",
31 | "babel-preset-es2015": "^6.24.1",
32 | "cross-env": "^5.2.0",
33 | "css-loader": "^6.10.0",
34 | "extract-text-webpack-plugin": "^2.1.2",
35 | "html-webpack-plugin": "^5.5.0",
36 | "jasmine-core": "^2.99.1",
37 | "jsdom": "^16.5.0",
38 | "karma": "^6.3.14",
39 | "karma-chrome-launcher": "^2.2.0",
40 | "karma-jasmine": "^1.1.2",
41 | "karma-phantomjs-launcher": "^1.0.4",
42 | "karma-webpack": "^5.0.1",
43 | "style-loader": "^0.19.1",
44 | "vue": "^2.6.10",
45 | "vue-hot-reload-api": "^2.3.3",
46 | "vue-html-loader": "^1.2.4",
47 | "vue-loader": "^17.0.1",
48 | "vue-style-loader": "^3.1.2",
49 | "vue-template-compiler": "^2.6.10",
50 | "webpack": "^3.12.0",
51 | "webpack-dev-server": "^5.0.4"
52 | },
53 | "dependencies": {
54 | "odometer": "^0.4.8"
55 | },
56 | "license": "MIT"
57 | }
58 |
--------------------------------------------------------------------------------
/src/components/VueOdometer.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
49 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | const Odometer = require('odometer/odometer.min.js')
2 |
3 | import 'odometer/themes/odometer-theme-car.css'
4 | import 'odometer/themes/odometer-theme-default.css'
5 | import 'odometer/themes/odometer-theme-digital.css'
6 | import 'odometer/themes/odometer-theme-minimal.css'
7 | import 'odometer/themes/odometer-theme-plaza.css'
8 | import 'odometer/themes/odometer-theme-slot-machine.css'
9 | import 'odometer/themes/odometer-theme-train-station.css'
10 | import VueOdometer from './components/VueOdometer'
11 |
12 | if (typeof window !== 'undefined' && window.Vue) {
13 | window.Vue.component('vue-odometer', VueOdometer)
14 | }
15 |
16 | export default VueOdometer
17 |
--------------------------------------------------------------------------------
/webpack.config.js:
--------------------------------------------------------------------------------
1 | const path = require('path')
2 | const webpack = require('webpack')
3 | const ExtractTextPlugin = require('extract-text-webpack-plugin')
4 |
5 | module.exports = {
6 | context: path.resolve('src'),
7 | entry: './index.js',
8 | output: {
9 | path: path.resolve('dist'),
10 | filename: '[name].bundle.js',
11 | },
12 | resolve: {
13 | extensions: ['.vue', '.js', '.css'],
14 | },
15 | module: {
16 | loaders: [
17 | {
18 | test: /\.vue$/,
19 | loader: 'vue-loader',
20 | options: {
21 | postcss: [
22 | require('autoprefixer')({
23 | browsers: [
24 | 'last 2 versions',
25 | 'last 4 Android versions',
26 | 'last 3 iOS versions',
27 | ],
28 | }),
29 | ],
30 | },
31 | },
32 | {
33 | test: /\.js$/,
34 | loader: 'babel-loader',
35 | exclude: /node_modules/,
36 | include: path.resolve('node_modules/odometer/odometer.min.js'),
37 | },
38 | {
39 | test: /\.css$/,
40 | use: ExtractTextPlugin.extract({
41 | fallback: 'style-loader',
42 | use: 'css-loader',
43 | }),
44 | },
45 | ],
46 | },
47 | }
48 |
49 | // production configurations
50 | if (process.env.NODE_ENV === 'production') {
51 | module.exports.output.filename = '[name].prod.js'
52 |
53 | module.exports.plugins = [
54 | new webpack.DefinePlugin({
55 | 'process.env': {
56 | NODE_ENV: '"production"',
57 | },
58 | }),
59 | new webpack.optimize.UglifyJsPlugin({
60 | compress: {
61 | warnings: false,
62 | },
63 | }),
64 | new webpack.optimize.OccurrenceOrderPlugin(),
65 | new ExtractTextPlugin({ filename: '[name].css', allChunks: true }),
66 | ]
67 | } else {
68 | // development configurations
69 | module.exports.output.filename = '[name].dev.js'
70 |
71 | module.exports.module.loaders = module.exports.module.loaders.concat([
72 | {
73 | test: /\.css$/,
74 | use: ExtractTextPlugin.extract({
75 | fallback: 'style-loader',
76 | use: 'css-loader',
77 | }),
78 | },
79 | ])
80 |
81 | module.exports.plugins = [
82 | new ExtractTextPlugin({ filename: '[name].css', allChunks: true }),
83 | ]
84 |
85 | module.exports.devServer = {
86 | contentBase: './',
87 | }
88 |
89 | module.exports.devtool = '#source-map'
90 | }
91 |
--------------------------------------------------------------------------------