UNPKG

modern-spa-boilerplate

Version:
1,180 lines (1,045 loc) 371 kB
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