modern-spa-boilerplate
Version:
Modern Boilerplate for Single Page Applications
1,180 lines (1,045 loc) • 371 kB
JavaScript
System.register("app/components/Message.html.js", [], function (_export, _context) {
"use strict";
return {
setters: [],
execute: function () {
_export("default", "<message-box><template slot=title>{{title}}</template><p>{{text}}<p>Base Size: {{base}}</p><button slot=buttonbar class=cancel-c79212bb>Cancel</button> <button slot=buttonbar class=okay-c79212bb>Save</button></message-box>");
}
};
});
System.register("app/components/Message.js", ["./Message.html"], function (_export, _context) {
"use strict";
var template, shared;
function update() {
shared.base = getComputedStyle(document.documentElement).fontSize;
}
return {
setters: [function (_MessageHtml) {
template = _MessageHtml.default;
}],
execute: function () {
shared = {
title: "Message Box",
text: "Your data was successfully parsed!",
base: 0
};
_export("default", {
template: template,
data: function data() {
return shared;
}
});
console.log("Debug from Message.js");window.addEventListener("resize", update, true);
window.addEventListener("orientationchange", update, true);
update();
}
};
});
System.register("app/components/Table.html.js", [], function (_export, _context) {
"use strict";
return {
setters: [],
execute: function () {
_export("default", "<div class=wrapper-67bdbdcc><table class=table-67bdbdcc><tr><th>Name<th>E-Mail<th>Kaufdatum<th>Adresse<th>PLZ<th>Ort<th>Land<tr><td>Jelani Ortega<td>Duis.a.mi@Nuncmauris.com<td>05.09.16<td>487-5902 Vestibulum Rd.<td>80675<td>Molina<td>Jamaica<tr><td>Valentine Farley<td>eu.ligula@sedest.net<td>19.05.16<td>735-4227 Ligula Road<td>3560<td>Sint-Pieters-Kapelle<td>Italy<tr><td>Ciara Oconnor<td>Nam.porttitor@hendreritDonecporttitor.com<td>27.04.17<td>Ap #425-4146 Maecenas St.<td>425564<td>Montauban<td>American Samoa<tr><td>Jesse Silva<td>faucibus.id@ametmassaQuisque.com<td>25.03.16<td>5310 Risus. Street<td>3372<td>Maple Ridge<td>Australia<tr><td>Rhiannon Kline<td>nisi.a@lacusQuisque.net<td>22.02.16<td>Ap #313-9645 Augue Road<td>33140<td>Yorkton<td>Jamaica<tr><td>Fatima Wise<td>lorem.tristique@in.org<td>03.07.16<td>Ap #533-813 Ad Road<td>46636<td>Rovereto<td>Micronesia<tr><td>Lyle Silva<td>malesuada.id.erat@neceleifend.edu<td>05.04.17<td>2901 Et Avenue<td>M8X 8A9<td>Vichte<td>Mauritania<tr><td>Mira Reyes<td>quis@dictum.co.uk<td>22.04.17<td>P.O. Box 330, 7785 Non, Avenue<td>74849<td>Tredegar<td>Gambia<tr><td>Cathleen Roth<td>nulla@nibhvulputatemauris.co.uk<td>30.11.16<td>Ap #639-1042 Non Rd.<td>9094<td>Joncret<td>Marshall Islands<tr><td>Velma Lynn<td>Fusce.dolor@risus.ca<td>10.10.16<td>857-6047 Molestie Rd.<td>518569<td>Putaendo<td>Spain<tr><td>Cruz Pollard<td>bibendum@gravidasagittis.net<td>01.08.16<td>P.O. Box 176, 6404 Eu Street<td>21107<td>Macduff<td>Sri Lanka<tr><td>Adena Hester<td>Proin.mi@magnaCrasconvallis.co.uk<td>11.08.15<td>Ap #875-2958 Ipsum Avenue<td>9463<td>Windsor<td>Saudi Arabia<tr><td>Lillian Herman<td>penatibus.et.magnis@aceleifend.net<td>12.06.15<td>P.O. Box 723, 1098 Aenean Street<td>VO7L 9FG<td>Calder<td>Samoa<tr><td>Herman Bowen<td>eu.erat@Integereulacus.org<td>03.08.15<td>P.O. Box 578, 7142 Metus Avenue<td>24-328<td>Saltcoats<td>Samoa<tr><td>Tarik Travis<td>lacus.pede.sagittis@pharetra.net<td>28.12.15<td>Ap #333-7708 Dui. Avenue<td>8493<td>Cranbrook<td>Comoros<tr><td>Althea Mclean<td>quis.diam.Pellentesque@ipsumprimis.org<td>07.01.17<td>175-6537 Tristique St.<td>80538<td>Carovilli<td>Eritrea<tr><td>Michael Walter<td>interdum.enim@aliquamerosturpis.org<td>21.05.15<td>5079 Sagittis Rd.<td>24122-659<td>Bruderheim<td>Korea, South<tr><td>Alisa Britt<td>augue.ac@lacus.org<td>13.09.15<td>P.O. Box 916, 2978 Proin Ave<td>50841-247<td>Legal<td>Oman<tr><td>Adena Decker<td>Fusce.aliquet@utnisi.com<td>13.03.17<td>P.O. Box 915, 4226 Tincidunt Road<td>359016<td>Gijón<td>Russian Federation<tr><td>Ulla Bartlett<td>id.enim@dolorFuscefeugiat.ca<td>28.09.15<td>2217 Laoreet, Rd.<td>8062<td>Cabildo<td>Philippines<tr><td>Velma Bryan<td>elit.Etiam.laoreet@dapibus.edu<td>02.08.16<td>120-4688 Pede Ave<td>687793<td>Bernburg<td>Afghanistan<tr><td>Eagan Beach<td>neque@urnaNuncquis.com<td>14.06.15<td>P.O. Box 636, 3141 Lorem, St.<td>5311<td>Castellina in Chianti<td>Saint Martin<tr><td>Nola Stafford<td>vulputate.velit@egetmassa.org<td>13.08.16<td>8742 Dui, Street<td>843071<td>Labico<td>Mayotte<tr><td>Nadine Potter<td>lobortis.risus@vitaerisus.co.uk<td>01.04.16<td>P.O. Box 564, 6335 Sapien Avenue<td>H4V 4M2<td>Roosbeek<td>Jersey<tr><td>Keelie Barker<td>vitae.dolor.Donec@Maecenas.co.uk<td>20.02.17<td>P.O. Box 724, 9082 Nunc Ave<td>23568<td>Calco<td>Eritrea<tr><td>Rylee Oliver<td>mus@estvitae.org<td>28.06.16<td>P.O. Box 942, 6493 Magna Avenue<td>75455<td>Bahawalnagar<td>Turkey<tr><td>Curran Melton<td>lorem.tristique@non.net<td>15.05.16<td>P.O. Box 146, 4838 Nisi Street<td>4640<td>Marzi<td>Rwanda<tr><td>Timon Molina<td>a.feugiat@acfermentum.com<td>12.02.17<td>P.O. Box 608, 647 Enim Street<td>2722<td>Bharatpur<td>Congo (Brazzaville)<tr><td>Martena Lawson<td>accumsan.laoreet@eteuismod.co.uk<td>13.08.16<td>3758 Lectus Road<td>41091<td>Rodì Milici<td>Cocos (Keeling) Islands<tr><td>Jared Maddox<td>Quisque.porttitor.eros@placerategetvenenatis.co.uk<td>05.01.16<td>708-226 Purus Rd.<td>46274<td>Braives<td>Czech Republic<tr><td>Isadora Rowe<td>at.nisi.Cum@lacus.com<td>13.10.16<td>Ap #861-6934 Consectetuer, Ave<td>637241<td>Nîmes<td>Finland<tr><td>Charlotte Swanson<td>mauris.sapien@Cumsociis.net<td>28.05.16<td>614-3006 Risus. St.<td>957131<td>Srinagar<td>Antarctica<tr><td>Shoshana Ferguson<td>consectetuer.cursus@ornare.org<td>17.04.17<td>P.O. Box 623, 7622 Amet Road<td>637915<td>Savannah<td>Malaysia<tr><td>Xenos Stuart<td>risus@ullamcorper.ca<td>05.07.15<td>883-8057 Adipiscing Road<td>56960<td>Muzaffarpur<td>Montenegro<tr><td>Hoyt Spence<td>egestas@Quisqueornare.ca<td>08.10.16<td>Ap #658-3309 Egestas Ave<td>3160<td>Sedgewick<td>Malawi<tr><td>Miranda Mclean<td>congue.turpis.In@Donecporttitortellus.org<td>06.04.17<td>560-4199 A Street<td>7963<td>Dannevirke<td>Antigua and Barbuda<tr><td>Casey Davenport<td>quam.quis@blanditviverraDonec.com<td>28.07.15<td>3366 Nunc Rd.<td>5544GL<td>New Orleans<td>Lebanon<tr><td>Aretha Becker<td>euismod@utmolestiein.edu<td>29.04.17<td>Ap #507-7198 Sed Rd.<td>64179<td>Kilsyth<td>Micronesia<tr><td>Bianca Houston<td>Nulla@sedsapienNunc.org<td>30.12.16<td>426 Aliquam St.<td>5029<td>Antey-Saint-Andrè<td>Afghanistan<tr><td>Nayda Jennings<td>ornare@turpisnecmauris.org<td>31.10.16<td>663-7822 Amet, Ave<td>46-597<td>Builth Wells<td>Saudi Arabia<tr><td>Aubrey Bradshaw<td>netus@aliquetliberoInteger.co.uk<td>06.03.16<td>P.O. Box 957, 6535 Sociis Road<td>800109<td>Saint-LŽger<td>French Polynesia<tr><td>Darryl Rutledge<td>ullamcorper.nisl@Phasellus.org<td>06.08.15<td>9522 Nascetur St.<td>88402<td>Tucson<td>Falkland Islands<tr><td>Fulton York<td>pellentesque.tellus@dictum.edu<td>31.12.16<td>9929 Quis Av.<td>84764<td>Halanzy<td>Malta<tr><td>Elmo Bradshaw<td>a.auctor.non@tortornibhsit.edu<td>10.06.16<td>P.O. Box 794, 3415 Curae; Avenue<td>1781RG<td>Almería<td>Central African Republic<tr><td>Alden Quinn<td>mus.Proin.vel@velit.net<td>01.11.16<td>407-1364 Luctus Ave<td>860584<td>Noida<td>Moldova<tr><td>Pearl Bell<td>scelerisque@lacinia.net<td>07.11.16<td>P.O. Box 293, 3159 Fames Avenue<td>29217<td>Olathe<td>Saint Lucia<tr><td>Flynn Padilla<td>varius@iaculisquis.ca<td>17.08.16<td>955-5934 Faucibus Avenue<td>20561<td>Pictou<td>Ukraine<tr><td>Shana Molina<td>sociis@atsem.org<td>06.07.15<td>Ap #393-1920 Metus. St.<td>897207<td>Poulseur<td>Austria<tr><td>Erich Cooley<td>dapibus@liberomaurisaliquam.net<td>21.09.15<td>245-9154 Duis Av.<td>88217<td>Palmariggi<td>Canada<tr><td>Mason Holden<td>at.arcu.Vestibulum@duiquisaccumsan.ca<td>02.08.16<td>144-3981 Maecenas Avenue<td>84094<td>San Damiano al Colle<td>Northern Mariana Islands<tr><td>Susan Orr<td>lorem.lorem.luctus@magna.ca<td>03.02.17<td>812-5854 Ipsum Av.<td>M5Y 9J4<td>Bowling Green<td>Israel<tr><td>Karina Sweeney<td>nisl.Maecenas.malesuada@sociisnatoque.co.uk<td>09.12.15<td>3803 Taciti St.<td>T8Y 5G1<td>Oakham<td>Saudi Arabia<tr><td>Xerxes Lynn<td>Sed@quis.org<td>22.06.15<td>2895 Amet St.<td>N8P 6Z9<td>Kent<td>China<tr><td>Lacey Hoover<td>Fusce.feugiat@dolorelit.edu<td>09.06.15<td>P.O. Box 110, 3217 Felis. St.<td>43527-487<td>Valdivia<td>Lesotho<tr><td>Graham Holmes<td>Donec.vitae.erat@Maurisvel.org<td>04.11.16<td>759-2631 Varius St.<td>56729<td>Penzance<td>Norway<tr><td>Quon Hogan<td>id.nunc@Maurisut.edu<td>23.04.16<td>2657 Nam St.<td>1703<td>Castlegar<td>Gambia<tr><td>Warren Lloyd<td>Sed@estac.net<td>04.11.16<td>1724 Arcu. Rd.<td>17794<td>Opprebais<td>Niue<tr><td>Noelani Stone<td>a@neque.co.uk<td>08.11.15<td>251-7829 Molestie Av.<td>31415<td>Sète<td>Estonia<tr><td>Jarrod Salinas<td>non@luctus.edu<td>04.04.17<td>489-7021 Volutpat Ave<td>79517<td>Bandırma<td>Samoa<tr><td>Barrett Middleton<td>vel@sociis.com<td>05.04.16<td>Ap #661-2231 Eget, Rd.<td>18186<td>Cumberland County<td>Guinea<tr><td>Mason Owens<td>nisi.a@enim.org<td>14.09.15<td>973-1148 Gravida St.<td>X9V 4A0<td>Asnières-sur-Seine<td>Denmark<tr><td>Eve Sargent<td>egestas.rhoncus@natoquepenatibuset.ca<td>28.11.16<td>P.O. Box 169, 9157 Etiam Avenue<td>9015<td>Tranås<td>Morocco<tr><td>Inga Alford<td>Mauris@nullaCras.ca<td>17.02.16<td>P.O. Box 361, 7985 Duis Rd.<td>581174<td>ZŽtrud-Lumay<td>Falkland Islands<tr><td>Daquan Mitchell<td>in@pharetra.ca<td>11.01.17<td>Ap #508-9054 Ultrices Rd.<td>97964<td>Hindupur<td>Dominica<tr><td>Lee Lamb<td>aliquam.enim.nec@Sednunc.ca<td>15.03.17<td>Ap #319-466 Parturient St.<td>9365QD<td>Nancagua<td>Svalbard and Jan Mayen Islands<tr><td>Tashya Hull<td>nulla.magna@non.org<td>18.05.15<td>4324 Aliquet Rd.<td>8555<td>Boncelles<td>French Southern Territories<tr><td>Miranda Hodge<td>erat.vitae.risus@a.ca<td>06.08.15<td>404-9212 Vulputate Ave<td>X5V 2Z9<td>Gorbea<td>Palestine, State of<tr><td>Bethany Carrillo<td>et.ultrices.posuere@eumetusIn.org<td>20.12.15<td>P.O. Box 940, 5601 Adipiscing Road<td>20015<td>Caucaia<td>Niger<tr><td>Damian Hunt<td>leo.Cras.vehicula@loremtristiquealiquet.net<td>03.08.16<td>714-425 Scelerisque Rd.<td>53679<td>Latronico<td>Bosnia and Herzegovina<tr><td>Samantha Berg<td>neque.vitae@Maecenasliberoest.edu<td>03.07.15<td>969 Interdum St.<td>10083<td>Brampton<td>Japan<tr><td>Fleur Richard<td>diam.Duis@augueac.co.uk<td>21.07.15<td>333-1497 Vestibulum Avenue<td>5195<td>Évreux<td>Greece<tr><td>Daniel Wolfe<td>Quisque@tincidunt.ca<td>11.01.17<td>P.O. Box 957, 2574 Consectetuer Road<td>4767<td>Blind River<td>Virgin Islands, British<tr><td>Berk Strong<td>adipiscing@Proin.ca<td>17.08.15<td>4879 Magna. Ave<td>E51 5YP<td>La Granja<td>Burkina Faso<tr><td>Patience Martinez<td>leo@nibhsitamet.ca<td>28.11.15<td>8457 Urna Street<td>89295<td>Colli a Volturno<td>Venezuela<tr><td>Seth Mcknight<td>in@enim.ca<td>09.10.15<td>P.O. Box 986, 176 Neque. Avenue<td>02586<td>Lo Espejo<td>Antarctica<tr><td>Sierra Suarez<td>dolor@per.co.uk<td>13.02.17<td>P.O. Box 922, 2709 Lectus Road<td>71918<td>Borriana<td>Uruguay<tr><td>Zeus Zimmerman<td>Nam.porttitor.scelerisque@eratvolutpatNulla.com<td>20.01.17<td>582-2186 Eget Road<td>H4X 5L3<td>Serramonacesca<td>Monaco<tr><td>Paula Giles<td>aliquam@ornare.edu<td>01.02.16<td>6280 Ullamcorper St.<td>2686<td>Bekkerzeel<td>Faroe Islands<tr><td>Karyn William<td>Cras.lorem.lorem@Phaselluslibero.edu<td>16.01.17<td>1782 Vivamus Rd.<td>86328<td>Pordenone<td>Mayotte<tr><td>Oliver Quinn<td>auctor.Mauris.vel@acurnaUt.com<td>28.08.15<td>P.O. Box 654, 9776 Auctor Av.<td>0846<td>Porpetto<td>Reunion<tr><td>Anika Raymond<td>nisi.Aenean.eget@dapibusgravidaAliquam.edu<td>13.06.16<td>P.O. Box 624, 1151 Lacus. Ave<td>V4Y 5HU<td>Welshpool<td>Mexico<tr><td>Colton Oconnor<td>Suspendisse.sagittis.Nullam@Phasellusataugue.net<td>24.01.16<td>Ap #969-4198 Dictum. Road<td>30818<td>Castelvetere in Val Fortore<td>Comoros<tr><td>Neve Middleton<td>vitae.posuere.at@tempusscelerisquelorem.ca<td>05.09.16<td>5099 Ridiculus Road<td>20330<td>Bangor<td>Cape Verde<tr><td>Ariel Patrick<td>Phasellus.dapibus.quam@eratsemperrutrum.com<td>11.11.16<td>443-6915 Tristique Rd.<td>5161<td>Wansin<td>Sweden<tr><td>Mira Strong<td>ac@cursusnon.com<td>29.05.15<td>Ap #250-7466 Id, Av.<td>268168<td>Whitchurch-Stouffville<td>Denmark<tr><td>Cain Langley<td>non@auctorvelitAliquam.ca<td>01.03.17<td>471-8817 Pellentesque Road<td>680110<td>Garbsen<td>Taiwan<tr><td>Vaughan Blake<td>vestibulum.neque@tellus.com<td>11.06.15<td>P.O. Box 471, 2184 Libero St.<td>43953<td>Izel<td>Mozambique<tr><td>Ethan Bullock<td>nec.metus@mauris.org<td>05.12.16<td>Ap #982-6572 Dolor St.<td>295915<td>San Chirico Nuovo<td>Ecuador<tr><td>Dorothy Frazier<td>Aliquam@gravidaAliquamtincidunt.org<td>02.01.17<td>Ap #269-1033 Lacus Av.<td>87885<td>Concepción<td>Burundi<tr><td>Alisa Carson<td>lobortis.quam.a@InfaucibusMorbi.net<td>17.06.15<td>Ap #382-3330 Vivamus Rd.<td>19032<td>Schifferstadt<td>Puerto Rico<tr><td>Catherine Maddox<td>mollis.vitae@quamquis.org<td>15.12.16<td>873-3469 Eu Street<td>38127<td>Carunchio<td>Oman<tr><td>Sean Burris<td>risus.Donec@metusvitaevelit.co.uk<td>16.08.15<td>P.O. Box 672, 6387 Suspendisse Avenue<td>56579-042<td>Jemeppe-sur-Meuse<td>Marshall Islands<tr><td>Marshall Gonzalez<td>ante.lectus.convallis@elitpharetraut.com<td>19.03.16<td>9849 Vulputate, Road<td>372786<td>Marzabotto<td>Guam<tr><td>Wynter Rojas<td>ornare@iaculislacus.ca<td>10.04.16<td>P.O. Box 428, 5627 Tellus Av.<td>L8Y 0W5<td>San Antonio<td>Curaçao<tr><td>August Gordon<td>accumsan.interdum@at.org<td>10.08.16<td>P.O. Box 420, 9724 Odio Street<td>169318<td>Floriffoux<td>Uruguay<tr><td>Coby Doyle<td>vulputate.ullamcorper.magna@Cum.org<td>18.03.17<td>200-1384 Quis, Ave<td>17606<td>Portland<td>Bhutan<tr><td>Callum Hood<td>magnis@idmollis.ca<td>22.12.15<td>Ap #606-3760 Blandit Rd.<td>352571<td>Mission<td>Reunion<tr><td>Fitzgerald Wood<td>Aliquam.erat@utlacusNulla.org<td>13.05.16<td>379-7175 Cras Ave<td>87160<td>Sh�diac<td>Saint Lucia<tr><td>Shana Benjamin<td>vestibulum.nec@metus.edu<td>27.11.16<td>978-4386 Luctus St.<td>12880<td>St. Catharines<td>Malawi<tr><td>Marvin Griffin<td>Morbi.sit@fringilla.net<td>11.01.17<td>3303 Congue Rd.<td>63-715<td>Alkmaar<td>Portugal</table></div>");
}
};
});
System.register("app/components/Table.js", ["./Table.html"], function (_export, _context) {
"use strict";
var template;
return {
setters: [function (_TableHtml) {
template = _TableHtml.default;
}],
execute: function () {
_export("default", {
template: template
});
}
};
});
System.register("app/components/User.html.js", [], function (_export, _context) {
"use strict";
return {
setters: [],
execute: function () {
_export("default", "<message-box><template slot=title>Hello {{firstName}} {{lastName}}!</template><ul v-if=usernameInvalid class=error-89830769><li v-for=\"item in usernameInvalidList\">{{translation[item.error]}}</ul><div class=user-input-89830769><label>Firstname <input :value=firstName @input=updateFirstnameInput :class=\"{['invalid-'+hash]: firstnameInvalid}\"></label><template v-if=firstnameInvalid><div v-for=\"item in firstnameInvalidList\">{{translation[item.error]}} above</div></template></div><div class=user-input-89830769><label>Lastname <input :value=lastName @input=updateLastnameInput :class=\"{['invalid-'+hash]: lastnameInvalid}\"></label><template v-if=lastnameInvalid><div v-for=\"item in lastnameInvalidList\">{{translation[item.error]}} above</div></template></div><button slot=buttonbar @click=clearInput class=clear-89830769>Clear input</button> <button slot=buttonbar :disabled=\"usernameInvalid ? 'disabled' : null\" class=okay-89830769>Save</button></message-box>");
}
};
});
System.registerDynamic("github:systemjs/plugin-json@0.1.2.json", [], false, function() {
return {
"main": "json"
};
});
System.registerDynamic("app/components/User.json!github:systemjs/plugin-json@0.1.2/json.js", [], true, function($__require, exports, module) {
;
var define,
global = this,
GLOBAL = this;
module.exports = {"hash": "89830769"};
return module.exports;
});
System.register("app/vuex/actions.js", ["app/vuex/mutation-types"], function (_export, _context) {
"use strict";
var UPDATE_USER_FIRSTNAME, UPDATE_USER_LASTNAME;
return {
setters: [function (_appVuexMutationTypes) {
UPDATE_USER_FIRSTNAME = _appVuexMutationTypes.UPDATE_USER_FIRSTNAME;
UPDATE_USER_LASTNAME = _appVuexMutationTypes.UPDATE_USER_LASTNAME;
}],
execute: function () {
function updateFirstname(_ref, firstName) {
var dispatch = _ref.dispatch;
dispatch(UPDATE_USER_FIRSTNAME, firstName);
}
_export("updateFirstname", updateFirstname);
function updateLastname(_ref2, lastName) {
var dispatch = _ref2.dispatch;
dispatch(UPDATE_USER_LASTNAME, lastName);
}
_export("updateLastname", updateLastname);
}
};
});
System.register("app/components/User.js", ["./User.html", "./User.json!json", "app/vuex/actions"], function (_export, _context) {
"use strict";
var template, config, updateFirstname, updateLastname, languageMap;
return {
setters: [function (_UserHtml) {
template = _UserHtml.default;
}, function (_UserJsonJson) {
config = _UserJsonJson.default;
}, function (_appVuexActions) {
updateFirstname = _appVuexActions.updateFirstname;
updateLastname = _appVuexActions.updateLastname;
}],
execute: function () {
languageMap = {
FIRSTNAME_NO_VALUE: "Please enter your first name",
LASTNAME_NO_VALUE: "Please enter your last name"
};
_export("default", {
template: template,
data: function data() {
return {
translation: languageMap
};
},
methods: {
updateFirstnameInput: function updateFirstnameInput(e) {
this.updateFirstname(e.target.value);
},
updateLastnameInput: function updateLastnameInput(e) {
this.updateLastname(e.target.value);
},
clearInput: function clearInput() {
this.updateFirstname("");
this.updateLastname("");
}
},
computed: {
usernameInvalid: function usernameInvalid() {
return this.usernameInvalidList.length > 0;
},
firstnameInvalid: function firstnameInvalid() {
return this.firstnameInvalidList.length > 0;
},
lastnameInvalid: function lastnameInvalid() {
return this.lastnameInvalidList.length > 0;
},
hash: function hash() {
return config.hash;
}
},
vuex: {
getters: {
firstName: function firstName(state) {
return state.user.firstname;
},
lastName: function lastName(state) {
return state.user.lastname;
}
},
actions: {
updateFirstname: updateFirstname,
updateLastname: updateLastname
}
},
validators: {
usernameInvalidList: function usernameInvalidList(validator) {
return validator.isInvalid("user");
},
firstnameInvalidList: function firstnameInvalidList(validator) {
return validator.isInvalid("user.firstname");
},
lastnameInvalidList: function lastnameInvalidList(validator) {
return validator.isInvalid("user.lastname");
}
}
});
}
};
});
System.register("app/components/MessageBox.html.js", [], function (_export, _context) {
"use strict";
return {
setters: [],
execute: function () {
_export("default", "<div class=message-b3192856><h1 class=title-b3192856><slot name=title></slot></h1><slot></slot><div class=buttonbar-b3192856><slot name=buttonbar></slot></div></div>");
}
};
});
System.register("app/components/MessageBox.js", ["./MessageBox.html"], function (_export, _context) {
"use strict";
var template;
return {
setters: [function (_MessageBoxHtml) {
template = _MessageBoxHtml.default;
}],
execute: function () {
_export("default", {
template: template
});
}
};
});
System.register('npm:vue-router@0.7.13/src/override.js', [], function (_export, _context) {
"use strict";
_export('default', function (Vue) {
var _Vue$util = Vue.util;
var extend = _Vue$util.extend;
var isArray = _Vue$util.isArray;
var defineReactive = _Vue$util.defineReactive;
// override Vue's init and destroy process to keep track of router instances
var init = Vue.prototype._init;
Vue.prototype._init = function (options) {
options = options || {};
var root = options._parent || options.parent || this;
var router = root.$router;
var route = root.$route;
if (router) {
// expose router
this.$router = router;
router._children.push(this);
/* istanbul ignore if */
if (this._defineMeta) {
// 0.12
this._defineMeta('$route', route);
} else {
// 1.0
defineReactive(this, '$route', route);
}
}
init.call(this, options);
};
var destroy = Vue.prototype._destroy;
Vue.prototype._destroy = function () {
if (!this._isBeingDestroyed && this.$router) {
this.$router._children.$remove(this);
}
destroy.apply(this, arguments);
};
// 1.0 only: enable route mixins
var strats = Vue.config.optionMergeStrategies;
var hooksToMergeRE = /^(data|activate|deactivate)$/;
if (strats) {
strats.route = function (parentVal, childVal) {
if (!childVal) return parentVal;
if (!parentVal) return childVal;
var ret = {};
extend(ret, parentVal);
for (var key in childVal) {
var a = ret[key];
var b = childVal[key];
// for data, activate and deactivate, we need to merge them into
// arrays similar to lifecycle hooks.
if (a && hooksToMergeRE.test(key)) {
ret[key] = (isArray(a) ? a : [a]).concat(b);
} else {
ret[key] = b;
}
}
return ret;
};
}
});
return {
setters: [],
execute: function () {}
};
});
System.register('npm:vue-router@0.7.13/src/route.js', ['npm:systemjs-plugin-babel@0.0.8/babel-helpers/classCallCheck.js'], function (_export, _context) {
"use strict";
var _classCallCheck, internalKeysRE, Route;
return {
setters: [function (_npmSystemjsPluginBabel008BabelHelpersClassCallCheckJs) {
_classCallCheck = _npmSystemjsPluginBabel008BabelHelpersClassCallCheckJs.default;
}],
execute: function () {
internalKeysRE = /^(component|subRoutes|fullPath)$/;
Route = function Route(path, router) {
var _this = this;
_classCallCheck(this, Route);
var matched = router._recognizer.recognize(path);
if (matched) {
// copy all custom fields from route configs
[].forEach.call(matched, function (match) {
for (var key in match.handler) {
if (!internalKeysRE.test(key)) {
_this[key] = match.handler[key];
}
}
});
// set query and params
this.query = matched.queryParams;
this.params = [].reduce.call(matched, function (prev, cur) {
if (cur.params) {
for (var key in cur.params) {
prev[key] = cur.params[key];
}
}
return prev;
}, {});
}
// expose path and router
this.path = path;
// for internal use
this.matched = matched || router._notFoundHandler;
// internal reference to router
Object.defineProperty(this, 'router', {
enumerable: false,
value: router
});
// Important: freeze self to prevent observation
Object.freeze(this);
};
_export('default', Route);
}
};
});
System.register('npm:vue-router@0.7.13/src/transition.js', ['npm:systemjs-plugin-babel@0.0.8/babel-helpers/classCallCheck.js', 'npm:systemjs-plugin-babel@0.0.8/babel-helpers/createClass.js', './util', './pipeline'], function (_export, _context) {
"use strict";
var _classCallCheck, _createClass, warn, mapParams, isPromise, activate, deactivate, canActivate, canDeactivate, reuse, canReuse, RouteTransition;
function isPlainOjbect(val) {
return Object.prototype.toString.call(val) === '[object Object]';
}
function toArray(val) {
return val ? Array.prototype.slice.call(val) : [];
}
return {
setters: [function (_npmSystemjsPluginBabel008BabelHelpersClassCallCheckJs) {
_classCallCheck = _npmSystemjsPluginBabel008BabelHelpersClassCallCheckJs.default;
}, function (_npmSystemjsPluginBabel008BabelHelpersCreateClassJs) {
_createClass = _npmSystemjsPluginBabel008BabelHelpersCreateClassJs.default;
}, function (_util) {
warn = _util.warn;
mapParams = _util.mapParams;
isPromise = _util.isPromise;
}, function (_pipeline) {
activate = _pipeline.activate;
deactivate = _pipeline.deactivate;
canActivate = _pipeline.canActivate;
canDeactivate = _pipeline.canDeactivate;
reuse = _pipeline.reuse;
canReuse = _pipeline.canReuse;
}],
execute: function () {
RouteTransition = function () {
function RouteTransition(router, to, from) {
_classCallCheck(this, RouteTransition);
this.router = router;
this.to = to;
this.from = from;
this.next = null;
this.aborted = false;
this.done = false;
}
/**
* Abort current transition and return to previous location.
*/
_createClass(RouteTransition, [{
key: 'abort',
value: function abort() {
if (!this.aborted) {
this.aborted = true;
// if the root path throws an error during validation
// on initial load, it gets caught in an infinite loop.
var abortingOnLoad = !this.from.path && this.to.path === '/';
if (!abortingOnLoad) {
this.router.replace(this.from.path || '/');
}
}
}
/**
* Abort current transition and redirect to a new location.
*
* @param {String} path
*/
}, {
key: 'redirect',
value: function redirect(path) {
if (!this.aborted) {
this.aborted = true;
if (typeof path === 'string') {
path = mapParams(path, this.to.params, this.to.query);
} else {
path.params = path.params || this.to.params;
path.query = path.query || this.to.query;
}
this.router.replace(path);
}
}
/**
* A router view transition's pipeline can be described as
* follows, assuming we are transitioning from an existing
* <router-view> chain [Component A, Component B] to a new
* chain [Component A, Component C]:
*
* A A
* | => |
* B C
*
* 1. Reusablity phase:
* -> canReuse(A, A)
* -> canReuse(B, C)
* -> determine new queues:
* - deactivation: [B]
* - activation: [C]
*
* 2. Validation phase:
* -> canDeactivate(B)
* -> canActivate(C)
*
* 3. Activation phase:
* -> deactivate(B)
* -> activate(C)
*
* Each of these steps can be asynchronous, and any
* step can potentially abort the transition.
*
* @param {Function} cb
*/
}, {
key: 'start',
value: function start(cb) {
var transition = this;
// determine the queue of views to deactivate
var deactivateQueue = [];
var view = this.router._rootView;
while (view) {
deactivateQueue.unshift(view);
view = view.childView;
}
var reverseDeactivateQueue = deactivateQueue.slice().reverse();
// determine the queue of route handlers to activate
var activateQueue = this.activateQueue = toArray(this.to.matched).map(function (match) {
return match.handler;
});
// 1. Reusability phase
var i = undefined,
reuseQueue = undefined;
for (i = 0; i < reverseDeactivateQueue.length; i++) {
if (!canReuse(reverseDeactivateQueue[i], activateQueue[i], transition)) {
break;
}
}
if (i > 0) {
reuseQueue = reverseDeactivateQueue.slice(0, i);
deactivateQueue = reverseDeactivateQueue.slice(i).reverse();
activateQueue = activateQueue.slice(i);
}
// 2. Validation phase
transition.runQueue(deactivateQueue, canDeactivate, function () {
transition.runQueue(activateQueue, canActivate, function () {
transition.runQueue(deactivateQueue, deactivate, function () {
// 3. Activation phase
// Update router current route
transition.router._onTransitionValidated(transition);
// trigger reuse for all reused views
reuseQueue && reuseQueue.forEach(function (view) {
return reuse(view, transition);
});
// the root of the chain that needs to be replaced
// is the top-most non-reusable view.
if (deactivateQueue.length) {
var _view = deactivateQueue[deactivateQueue.length - 1];
var depth = reuseQueue ? reuseQueue.length : 0;
activate(_view, transition, depth, cb);
} else {
cb();
}
});
});
});
}
/**
* Asynchronously and sequentially apply a function to a
* queue.
*
* @param {Array} queue
* @param {Function} fn
* @param {Function} cb
*/
}, {
key: 'runQueue',
value: function runQueue(queue, fn, cb) {
var transition = this;
step(0);
function step(index) {
if (index >= queue.length) {
cb();
} else {
fn(queue[index], transition, function () {
step(index + 1);
});
}
}
}
/**
* Call a user provided route transition hook and handle
* the response (e.g. if the user returns a promise).
*
* If the user neither expects an argument nor returns a
* promise, the hook is assumed to be synchronous.
*
* @param {Function} hook
* @param {*} [context]
* @param {Function} [cb]
* @param {Object} [options]
* - {Boolean} expectBoolean
* - {Boolean} postActive
* - {Function} processData
* - {Function} cleanup
*/
}, {
key: 'callHook',
value: function callHook(hook, context, cb) {
var _ref = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3];
var _ref$expectBoolean = _ref.expectBoolean;
var expectBoolean = _ref$expectBoolean === undefined ? false : _ref$expectBoolean;
var _ref$postActivate = _ref.postActivate;
var postActivate = _ref$postActivate === undefined ? false : _ref$postActivate;
var processData = _ref.processData;
var cleanup = _ref.cleanup;
var transition = this;
var nextCalled = false;
// abort the transition
var abort = function abort() {
cleanup && cleanup();
transition.abort();
};
// handle errors
var onError = function onError(err) {
postActivate ? next() : abort();
if (err && !transition.router._suppress) {
warn('Uncaught error during transition: ');
throw err instanceof Error ? err : new Error(err);
}
};
// since promise swallows errors, we have to
// throw it in the next tick...
var onPromiseError = function onPromiseError(err) {
try {
onError(err);
} catch (e) {
setTimeout(function () {
throw e;
}, 0);
}
};
// advance the transition to the next step
var next = function next() {
if (nextCalled) {
warn('transition.next() should be called only once.');
return;
}
nextCalled = true;
if (transition.aborted) {
cleanup && cleanup();
return;
}
cb && cb();
};
var nextWithBoolean = function nextWithBoolean(res) {
if (typeof res === 'boolean') {
res ? next() : abort();
} else if (isPromise(res)) {
res.then(function (ok) {
ok ? next() : abort();
}, onPromiseError);
} else if (!hook.length) {
next();
}
};
var nextWithData = function nextWithData(data) {
var res = undefined;
try {
res = processData(data);
} catch (err) {
return onError(err);
}
if (isPromise(res)) {
res.then(next, onPromiseError);
} else {
next();
}
};
// expose a clone of the transition object, so that each
// hook gets a clean copy and prevent the user from
// messing with the internals.
var exposed = {
to: transition.to,
from: transition.from,
abort: abort,
next: processData ? nextWithData : next,
redirect: function redirect() {
transition.redirect.apply(transition, arguments);
}
};
// actually call the hook
var res = undefined;
try {
res = hook.call(context, exposed);
} catch (err) {
return onError(err);
}
if (expectBoolean) {
// boolean hooks
nextWithBoolean(res);
} else if (isPromise(res)) {
// promise
if (processData) {
res.then(nextWithData, onPromiseError);
} else {
res.then(next, onPromiseError);
}
} else if (processData && isPlainOjbect(res)) {
// data promise sugar
nextWithData(res);
} else if (!hook.length) {
next();
}
}
/**
* Call a single hook or an array of async hooks in series.
*
* @param {Array} hooks
* @param {*} context
* @param {Function} cb
* @param {Object} [options]
*/
}, {
key: 'callHooks',
value: function callHooks(hooks, context, cb, options) {
var _this = this;
if (Array.isArray(hooks)) {
this.runQueue(hooks, function (hook, _, next) {
if (!_this.aborted) {
_this.callHook(hook, context, next, options);
}
}, cb);
} else {
this.callHook(hooks, context, cb, options);
}
}
}]);
return RouteTransition;
}();
_export('default', RouteTransition);
}
};
});
System.register('npm:vue-router@0.7.13/src/pipeline.js', ['./util'], function (_export, _context) {
"use strict";
var isPromise, getRouteConfig, resolveAsyncComponent;
/**
* Asynchronously load and apply data to component.
*
* @param {Vue} component
* @param {Transition} transition
* @param {Function} hook
* @param {Function} cb
* @param {Function} cleanup
*/
function loadData(component, transition, hook, cb, cleanup) {
component.$loadingRouteData = true;
transition.callHooks(hook, component, function () {
component.$loadingRouteData = false;
component.$emit('route-data-loaded', component);
cb && cb();
}, {
cleanup: cleanup,
postActivate: true,
processData: function processData(data) {
// handle promise sugar syntax
var promises = [];
if (isPlainObject(data)) {
Object.keys(data).forEach(function (key) {
var val = data[key];
if (isPromise(val)) {
promises.push(val.then(function (resolvedVal) {
component.$set(key, resolvedVal);
}));
} else {
component.$set(key, val);
}
});
}
if (promises.length) {
return promises[0].constructor.all(promises);
}
}
});
}
/**
* Save the child view for a kept-alive view so that
* we can restore it when it is switched back to.
*
* @param {Directive} view
*/
function saveChildView(view) {
if (view.keepAlive && view.childVM && view.childView) {
view.childVM._keepAliveRouterView = view.childView;
}
view.childView = null;
}
/**
* Check plain object.
*
* @param {*} val
*/
function isPlainObject(val) {
return Object.prototype.toString.call(val) === '[object Object]';
}
return {
setters: [function (_util) {
isPromise = _util.isPromise;
getRouteConfig = _util.getRouteConfig;
resolveAsyncComponent = _util.resolveAsyncComponent;
}],
execute: function () {
/**
* Determine the reusability of an existing router view.
*
* @param {Directive} view
* @param {Object} handler
* @param {Transition} transition
*/
function canReuse(view, handler, transition) {
var component = view.childVM;
if (!component || !handler) {
return false;
}
// important: check view.Component here because it may
// have been changed in activate hook
if (view.Component !== handler.component) {
return false;
}
var canReuseFn = getRouteConfig(component, 'canReuse');
return typeof canReuseFn === 'boolean' ? canReuseFn : canReuseFn ? canReuseFn.call(component, {
to: transition.to,
from: transition.from
}) : true; // defaults to true
}
/**
* Check if a component can deactivate.
*
* @param {Directive} view
* @param {Transition} transition
* @param {Function} next
*/
_export('canReuse', canReuse);
function canDeactivate(view, transition, next) {
var fromComponent = view.childVM;
var hook = getRouteConfig(fromComponent, 'canDeactivate');
if (!hook) {
next();
} else {
transition.callHook(hook, fromComponent, next, {
expectBoolean: true
});
}
}
/**
* Check if a component can activate.
*
* @param {Object} handler
* @param {Transition} transition
* @param {Function} next
*/
_export('canDeactivate', canDeactivate);
function canActivate(handler, transition, next) {
resolveAsyncComponent(handler, function (Component) {
// have to check due to async-ness
if (transition.aborted) {
return;
}
// determine if this component can be activated
var hook = getRouteConfig(Component, 'canActivate');
if (!hook) {
next();
} else {
transition.callHook(hook, null, next, {
expectBoolean: true
});
}
});
}
/**
* Call deactivate hooks for existing router-views.
*
* @param {Directive} view
* @param {Transition} transition
* @param {Function} next
*/
_export('canActivate', canActivate);
function deactivate(view, transition, next) {
var component = view.childVM;
var hook = getRouteConfig(component, 'deactivate');
if (!hook) {
next();
} else {
transition.callHooks(hook, component, next);
}
}
/**
* Activate / switch component for a router-view.
*
* @param {Directive} view
* @param {Transition} transition
* @param {Number} depth
* @param {Function} [cb]
*/
_export('deactivate', deactivate);
function activate(view, transition, depth, cb, reuse) {
var handler = transition.activateQueue[depth];
if (!handler) {
saveChildView(view);
if (view._bound) {
view.setComponent(null);
}
cb && cb();
return;
}
var Component = view.Component = handler.component;
var activateHook = getRouteConfig(Component, 'activate');
var dataHook = getRouteConfig(Component, 'data');
var waitForData = getRouteConfig(Component, 'waitForData');
view.depth = depth;
view.activated = false;
var component = undefined;
var loading = !!(dataHook && !waitForData);
// "reuse" is a flag passed down when the parent view is
// either reused via keep-alive or as a child of a kept-alive view.
// of course we can only reuse if the current kept-alive instance
// is of the correct type.
reuse = reuse && view.childVM && view.childVM.constructor === Component;
if (reuse) {
// just reuse
component = view.childVM;
component.$loadingRouteData = loading;
} else {
saveChildView(view);
// unbuild current component. this step also destroys
// and removes all nested child views.
view.unbuild(true);
// build the new component. this will also create the
// direct child view of the current one. it will register
// itself as view.childView.
component = view.build({
_meta: {
$loadingRouteData: loading
},
created: function created() {
this._routerView = view;
}
});
// handle keep-alive.
// when a kept-alive child vm is restored, we need to
// add its cached child views into the router's view list,
// and also properly update current view's child view.
if (view.keepAlive) {
component.$loadingRouteData = loading;
var cachedChildView = component._keepAliveRouterView;
if (cachedChildView) {
view.childView = cachedChildView;
component._keepAliveRouterView = null;
}
}
}
// cleanup the component in case the transition is aborted
// before the component is ever inserted.
var cleanup = function cleanup() {
component.$destroy();
};
// actually insert the component and trigger transition
var insert = function insert() {
if (reuse) {
cb && cb();
return;
}
var router = transition.router;
if (router._rendered || router._transitionOnLoad) {
view.transition(component);
} else {
// no transition on first render, manual transition
/* istanbul ignore if */
if (view.setCurrent) {
// 0.12 compat
view.setCurrent(component);
} else {
// 1.0
view.childVM = component;
}
component.$before(view.anchor, null, false);
}
cb && cb();
};
var afterData = function afterData() {
// activate the child view
if (view.childView) {
activate(view.childView, transition, depth + 1, null, reuse || view.keepAlive);
}
insert();
};
// called after activation hook is resolved
var afterActivate = function afterActivate() {
view.activated = true;
if (dataHook && waitForData) {
// wait until data loaded to insert
loadData(component, transition, dataHook, afterData, cleanup);
} else {
// load data and insert at the same time
if (dataHook) {
loadData(component, transition, dataHook);
}
afterData();
}
};
if (activateHook) {
transition.callHooks(activateHook, component, afterActivate, {
cleanup: cleanup,
postActivate: true
});
} else {
afterActivate();
}
}
/**
* Reuse a view, just reload data if necessary.
*
* @param {Directive} view
* @param {Transition} transition
*/
_export('activate', activate);
function reuse(view, transition) {
var component = view.childVM;
var dataHook = getRouteConfig(component, 'data');
if (dataHook) {
loadData(component, transition, dataHook);
}
}
_export('reuse', reuse);
}
};
});
System.register('npm:vue-router@0.7.13/src/directives/view.js', ['../util', '../pipeline'], function (_export, _context) {
"use strict";
var warn, activate;
_export('default', function (Vue) {
var _ = Vue.util;
var componentDef =
// 0.12
Vue.directive('_component') ||
// 1.0
Vue.internalDirectives.component;
// <router-view> extends the internal component directive
var viewDef = _.extend({}, componentDef);
// with some overrides
_.extend(viewDef, {
_isRouterView: true,
bind: function bind() {
var route = this.vm.$route;
/* istanbul ignore if */
if (!route) {
warn('<router-view> can only be used inside a ' + 'router-enabled app.');
return;
}
// force dynamic directive so v-component doesn't
// attempt to build right now
this._isDynamicLiteral = true;
// finally, init by delegating to v-component
componentDef.bind.call(this);
// locate the parent view
var parentView = undefined;
var parent = this.vm;
while (parent) {
if (parent._routerView) {
parentView = parent._routerView;
break;
}
parent = parent.$parent;
}
if (parentView) {
// register self as a child of the parent view,
// instead of activating now. This is so that the
// child's activate hook is called after the
// parent's has resolved.
this.parentView = parentView;
parentView.childView = this;
} else {
// this is the root view!
var router = route.router;
router._rootView = this;
}
// handle late-rendered view
// two possibilities:
// 1. root view rendered after transition has been
// validated;
// 2. child view rendered after parent view has been
// activated.
var transition = route.router._currentTransition;
if (!parentView && transition.done || parentView && parentView.activated) {
var depth = parentView ? parentView.depth + 1 : 0;
activate(this, transition, depth);
}
},
unbind: function unbind() {
if (this.parentView) {
this.parentView.childView = null;
}
componentDef.unbind.call(this);
}
});
Vue.elementDirective('router-view', viewDef);
});
return {
setters: [function (_util) {
warn = _util.warn;
}, function (_pipeline) {
activate = _pipeline.activate;
}],
execute: function () {}
};
});
System.register('npm:vue-router@0.7.13/src/directives/link.js', ['../util'], function (_export, _context) {
"use strict";
var warn, trailingSlashRE, regexEscapeRE, queryStringRE;
// install v-link, which provides navigation support for
// HTML5 history mode
function _default(Vue) {
var _Vue$util = Vue.util;
var _bind = _Vue$util.bind;
var isObject = _Vue$util.isObject;
var addClass = _Vue$util.addClass;
var removeClass = _Vue$util.removeClass;
var onPriority = Vue.directive('on').priority;
var LINK_UPDATE = '__vue-router-link-update__';
var activeId = 0;
Vue.directive('link-active', {
priority: 9999,
bind: function bind() {
var _this = this;
var id = String(activeId++);
// collect v-links c