diff --git a/admin/client/dist/js/bundle-framework.js b/admin/client/dist/js/bundle-framework.js index d59d8bf7d..fd3480e42 100644 --- a/admin/client/dist/js/bundle-framework.js +++ b/admin/client/dist/js/bundle-framework.js @@ -1,6 +1,6 @@ !function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return e[r].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t["default"]=e,t}function o(e){return e&&e.__esModule?e:{"default":e}}function a(){h["default"].add("config",g["default"]),h["default"].add("form",w["default"]),h["default"].add("schemas",T["default"]),h["default"].add("records",P["default"]),h["default"].add("campaign",j["default"]),h["default"].add("breadcrumbs",k["default"]),h["default"].add("routing",te.routerReducer),m["default"].register("TextField",I["default"]),m["default"].register("HiddenField",N["default"]),m["default"].register("GridField",U["default"]),m["default"].register("SingleSelectField",M["default"]),m["default"].register("PopoverField",G["default"]),m["default"].register("HeaderField",Q["default"]),m["default"].register("LiteralField",K["default"]),m["default"].register("HtmlReadonlyField",W["default"]),m["default"].register("CompositeField",$["default"]),m["default"].register("Tabs",z["default"]),m["default"].register("TabItem",ee["default"]),m["default"].register("FormAction",B["default"]);var e={},t=(0,s.combineReducers)(h["default"].getAll()),n=[c["default"]],r=p["default"].get("environment"),o=p["default"].get("debugging"),a=s.applyMiddleware.apply(void 0,n),i=window.devToolsExtension;"dev"===r&&o&&"function"==typeof i&&(a=(0,s.compose)(s.applyMiddleware.apply(void 0,n),i()));var l=a(s.createStore),f=l(t,e);f.dispatch(v.setConfig(p["default"].getAll())),window.ss=window.ss||{},window.ss.store=f;var d=new u["default"](f);d.start(window.location.pathname)}var i=n(2),u=o(i),s=n(30),l=n(31),c=o(l),f=n(24),p=o(f),d=n(32),h=o(d),y=n(33),m=o(y),b=n(34),v=r(b),_=n(36),g=o(_),E=n(38),w=o(E),O=n(40),T=o(O),C=n(42),P=o(C),S=n(44),j=o(S),R=n(46),k=o(R),A=n(48),I=o(A),x=n(50),M=o(x),D=n(52),N=o(D),L=n(53),U=o(L),F=n(54),B=o(F),H=n(55),G=o(H),q=n(57),Q=o(q),V=n(58),K=o(V),Y=n(59),W=o(Y),J=n(60),$=o(J),X=n(61),z=o(X),Z=n(62),ee=o(Z),te=n(29),ne=n(63),re=o(ne);window.onload=a},function(e,t){e.exports=jQuery},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var n=0;n=0&&0===window.sessionStorage.length)return;throw n}}function i(e){var t=void 0;try{t=window.sessionStorage.getItem(o(e))}catch(n){if(n.name===f)return null}if(t)try{return JSON.parse(t)}catch(n){}return null}t.__esModule=!0,t.saveState=a,t.readState=i;var u=n(11),s=r(u),l="@@History/",c=["QuotaExceededError","QUOTA_EXCEEDED_ERR"],f="SecurityError"},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function o(e){function t(e){return s.canUseDOM?void 0:u["default"](!1),n.listen(e)}var n=f["default"](a({getUserConfirmation:l.getUserConfirmation},e,{go:l.go}));return a({},n,{listen:t})}t.__esModule=!0;var a=Object.assign||function(e){for(var t=1;t0&&"number"!=typeof e[0]))}function a(e,t,n){var a,c;if(r(e)||r(t))return!1;if(e.prototype!==t.prototype)return!1;if(s(e))return!!s(t)&&(e=i.call(e),t=i.call(t),l(e,t,n));if(o(e)){if(!o(t))return!1;if(e.length!==t.length)return!1;for(a=0;a=0;a--)if(f[a]!=p[a])return!1;for(a=f.length-1;a>=0;a--)if(c=f[a],!l(e[c],t[c],n))return!1;return typeof e==typeof t}var i=Array.prototype.slice,u=n(18),s=n(19),l=e.exports=function(e,t,n){return n||(n={}),e===t||(e instanceof Date&&t instanceof Date?e.getTime()===t.getTime():!e||!t||"object"!=typeof e&&"object"!=typeof t?n.strict?e===t:e==t:a(e,t,n))}},function(e,t){function n(e){var t=[];for(var n in e)t.push(n);return t}t=e.exports="function"==typeof Object.keys?Object.keys:n,t.shim=n},function(e,t){function n(e){return"[object Arguments]"==Object.prototype.toString.call(e)}function r(e){return e&&"object"==typeof e&&"number"==typeof e.length&&Object.prototype.hasOwnProperty.call(e,"callee")&&!Object.prototype.propertyIsEnumerable.call(e,"callee")||!1}var o="[object Arguments]"==function(){return Object.prototype.toString.call(arguments)}();t=e.exports=o?n:r,t.supported=n,t.unsupported=r},function(e,t){"use strict";function n(e,t,n){function o(){return u=!0,s?void(c=[].concat(r.call(arguments))):void n.apply(this,arguments)}function a(){if(!u&&(l=!0,!s)){for(s=!0;!u&&i=e&&l&&(u=!0,n()))}}var i=0,u=!1,s=!1,l=!1,c=void 0;a()}t.__esModule=!0;var r=Array.prototype.slice;t.loopAsync=n},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function o(){var e=arguments.length<=0||void 0===arguments[0]?"/":arguments[0],t=arguments.length<=1||void 0===arguments[1]?s.POP:arguments[1],n=arguments.length<=2||void 0===arguments[2]?null:arguments[2],r=arguments.length<=3||void 0===arguments[3]?null:arguments[3];"string"==typeof e&&(e=l.parsePath(e)),"object"==typeof t&&(e=a({},e,{state:t}),t=n||s.POP,n=r);var o=e.pathname||"/",i=e.search||"",u=e.hash||"",c=e.state||null;return{pathname:o,search:i,hash:u,state:c,action:t,key:n}}t.__esModule=!0;var a=Object.assign||function(e){for(var t=1;t1){var t=this.props.breadcrumbs[this.props.breadcrumbs.length-2];if(t&&t.href)return e.preventDefault(),void this.props.router.push(t.href)}}},{key:"render",value:function l(){var e=null;switch(this.props.params.view){case"show":e=this.renderItemListView();break;case"edit":e=this.renderDetailEditView();break;case"create":e=this.renderCreateView();break;default:e=this.renderIndexView()}return e}},{key:"renderIndexView",value:function p(){var e=this.props.sectionConfig.form.EditForm.schemaUrl,t={title:j["default"]._t("Campaigns.ADDCAMPAIGN"),icon:"plus",handleClick:this.addCampaign.bind(this)},n={createFn:this.campaignListCreateFn.bind(this),schemaUrl:e};return d["default"].createElement("div",{className:"cms-content__inner no-preview"},d["default"].createElement("div",{className:"cms-content__left cms-campaigns collapse in","aria-expanded":"true"},d["default"].createElement(k["default"],null,d["default"].createElement(w["default"],{multiline:!0,crumbs:this.props.breadcrumbs})),d["default"].createElement("div",{className:"panel--padded panel--scrollable panel--single-toolbar"},d["default"].createElement("div",{className:"toolbar--content"},d["default"].createElement("div",{className:"btn-toolbar"},d["default"].createElement(P["default"],t))),d["default"].createElement("div",{className:"campaign-admin"},d["default"].createElement(I["default"],n)))))}},{key:"renderItemListView",value:function h(){var e={sectionConfig:this.props.sectionConfig,campaignId:this.props.params.id,itemListViewEndpoint:this.props.sectionConfig.itemListViewEndpoint,publishApi:this.publishApi,handleBackButtonClick:this.handleBackButtonClick.bind(this)};return d["default"].createElement(M["default"],e)}},{key:"renderDetailEditView",value:function y(){var e=this.props.sectionConfig.form.DetailEditForm.schemaUrl,t={createFn:this.campaignEditCreateFn.bind(this),schemaUrl:e+"/"+this.props.params.id};return d["default"].createElement("div",{className:"cms-content__inner"},d["default"].createElement(k["default"],{showBackButton:!0,handleBackButtonClick:this.handleBackButtonClick},d["default"].createElement(w["default"],{multiline:!0,crumbs:this.props.breadcrumbs})),d["default"].createElement("div",{className:"panel panel--padded panel--scrollable panel--single-toolbar"},d["default"].createElement("div",{className:"form--inline"},d["default"].createElement(I["default"],t))))}},{key:"renderCreateView",value:function m(){var e=this.props.sectionConfig.form.DetailEditForm.schemaUrl,t={createFn:this.campaignAddCreateFn.bind(this),schemaUrl:e+"/"+this.props.params.id};return d["default"].createElement("div",{className:"cms-content__inner"},d["default"].createElement(k["default"],{showBackButton:!0,handleBackButtonClick:this.handleBackButtonClick},d["default"].createElement(w["default"],{multiline:!0,crumbs:this.props.breadcrumbs})),d["default"].createElement("div",{className:"panel panel--padded panel--scrollable panel--single-toolbar"},d["default"].createElement(I["default"],t)))}},{key:"campaignEditCreateFn",value:function b(e,t){var n=this,r=this.props.sectionConfig.url;if("action_cancel"===t.name){var o=c({},t,{handleClick:function a(e){e.preventDefault(),n.props.router.push(r)}});return d["default"].createElement(e,c({key:t.id},o))}return d["default"].createElement(e,c({key:t.id},t))}},{key:"campaignAddCreateFn",value:function _(e,t){var n=this,r=this.props.sectionConfig.url;if("action_cancel"===t.name){var o=c({},t,{handleClick:function a(e){e.preventDefault(),n.props.router.push(r)}});return d["default"].createElement(e,c({key:t.name},o))}return d["default"].createElement(e,c({key:t.name},t))}},{key:"campaignListCreateFn",value:function g(e,t){var n=this,r=this.props.sectionConfig.url,o="set";if("GridField"===t.component){var a=c({},t,{data:c({},t.data,{handleDrillDown:function i(e,t){n.props.router.push(r+"/"+o+"/"+t.ID+"/show")},handleEditRecord:function u(e,t){n.props.router.push(r+"/"+o+"/"+t+"/edit")}})});return d["default"].createElement(e,c({key:a.name},a))}return d["default"].createElement(e,c({key:t.name},t))}},{key:"addCampaign",value:function E(){var e=this.getActionRoute(0,"create");this.props.router.push(e)}},{key:"getActionRoute",value:function O(e,t){return this.props.sectionConfig.url+"/set/"+e+"/"+t}}]),t}(T["default"]);D.propTypes={breadcrumbsActions:d["default"].PropTypes.object.isRequired,campaignId:d["default"].PropTypes.string,sectionConfig:d["default"].PropTypes.object.isRequired,securityId:d["default"].PropTypes.string.isRequired,view:d["default"].PropTypes.string},t["default"]=(0,m.withRouter)((0,h.connect)(s,l)(D))},function(e,t){e.exports=Backend},function(e,t){e.exports=BreadcrumbsActions},function(e,t){e.exports=Breadcrumb},function(e,t){e.exports=Toolbar},function(e,t){e.exports=FormBuilder},function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t["default"]=e,t}function o(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function s(e,t){var n=null,r=t.sectionConfig.treeClass;return e.records&&e.records[r]&&t.campaignId&&(n=e.records[r][parseInt(t.campaignId,10)]),{config:e.config,record:n||{},campaign:e.campaign,treeClass:r,breadcrumbs:e.breadcrumbs}}function l(e){return{breadcrumbsActions:(0,y.bindActionCreators)(v,e),recordActions:(0,y.bindActionCreators)(g,e),campaignActions:(0,y.bindActionCreators)(w,e)}}Object.defineProperty(t,"__esModule",{value:!0});var c=Object.assign||function(e){for(var t=1;t=200&&e.status<300))throw n=new Error(e.statusText),n.response=e,n;return t=e}Object.defineProperty(t,"__esModule",{value:!0});var u=Object.assign||function(e){for(var t=1;t-1?t:e}function c(e,t){t=t||{};var n=t.body;if(c.prototype.isPrototypeOf(e)){if(e.bodyUsed)throw new TypeError("Already read");this.url=e.url,this.credentials=e.credentials,t.headers||(this.headers=new r(e.headers)),this.method=e.method,this.mode=e.mode,n||(n=e._bodyInit,e.bodyUsed=!0)}else this.url=e;if(this.credentials=t.credentials||this.credentials||"omit",!t.headers&&this.headers||(this.headers=new r(t.headers)),this.method=l(t.method||this.method||"GET"),this.mode=t.mode||this.mode||null,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&n)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(n)}function f(e){var t=new FormData;return e.trim().split("&").forEach(function(e){if(e){var n=e.split("="),r=n.shift().replace(/\+/g," "),o=n.join("=").replace(/\+/g," ");t.append(decodeURIComponent(r),decodeURIComponent(o))}}),t}function p(e){var t=new r,n=e.getAllResponseHeaders().trim().split("\n");return n.forEach(function(e){var n=e.trim().split(":"),r=n.shift().trim(),o=n.join(":").trim();t.append(r,o)}),t}function d(e,t){t||(t={}),this.type="default",this.status=t.status,this.ok=this.status>=200&&this.status<300,this.statusText=t.statusText,this.headers=t.headers instanceof r?t.headers:new r(t.headers),this.url=t.url||"",this._initBody(e)}if(!e.fetch){r.prototype.append=function(e,r){e=t(e),r=n(r);var o=this.map[e];o||(o=[],this.map[e]=o),o.push(r)},r.prototype["delete"]=function(e){delete this.map[t(e)]},r.prototype.get=function(e){var n=this.map[t(e)];return n?n[0]:null},r.prototype.getAll=function(e){return this.map[t(e)]||[]},r.prototype.has=function(e){return this.map.hasOwnProperty(t(e))},r.prototype.set=function(e,r){this.map[t(e)]=[n(r)]},r.prototype.forEach=function(e,t){Object.getOwnPropertyNames(this.map).forEach(function(n){this.map[n].forEach(function(r){e.call(t,r,n,this)},this)},this)};var h={blob:"FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch(e){return!1}}(),formData:"FormData"in e,arrayBuffer:"ArrayBuffer"in e},y=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];c.prototype.clone=function(){return new c(this)},s.call(c.prototype),s.call(d.prototype),d.prototype.clone=function(){return new d(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new r(this.headers),url:this.url})},d.error=function(){var e=new d(null,{status:0,statusText:""});return e.type="error",e};var m=[301,302,303,307,308];d.redirect=function(e,t){if(m.indexOf(t)===-1)throw new RangeError("Invalid status code");return new d(null,{status:t,headers:{location:e}})},e.Headers=r,e.Request=c,e.Response=d,e.fetch=function(e,t){return new Promise(function(n,r){function o(){return"responseURL"in i?i.responseURL:/^X-Request-URL:/m.test(i.getAllResponseHeaders())?i.getResponseHeader("X-Request-URL"):void 0}var a;a=c.prototype.isPrototypeOf(e)&&!t?e:new c(e,t);var i=new XMLHttpRequest;i.onload=function(){var e=1223===i.status?204:i.status;if(e<100||e>599)return void r(new TypeError("Network request failed"));var t={status:e,statusText:i.statusText,headers:p(i),url:o()},a="response"in i?i.response:i.responseText;n(new d(a,t))},i.onerror=function(){r(new TypeError("Network request failed"))},i.open(a.method,a.url,!0),"include"===a.credentials&&(i.withCredentials=!0),"responseType"in i&&h.blob&&(i.responseType="blob"),a.headers.forEach(function(e,t){i.setRequestHeader(t,e)}),i.send("undefined"==typeof a._bodyInit?null:a._bodyInit)})},e.fetch.polyfill=!0}}("undefined"!=typeof self?self:this)},function(e,t,n){var r;(function(t,o){/*! +className:"alert alert-warning",role:"alert"},h["default"].createElement("strong",null,"This campaign is empty.")," You can add pages by selecting"," ",h["default"].createElement("em",null,"Add to campaign")," from within the ",h["default"].createElement("em",null,"More Options")," popup on"," ","the ",h["default"].createElement("a",{href:u},"edit page screen"),"."),l=["panel","panel--padded","panel--scrollable","panel--double-toolbar","campaign-items"];return h["default"].createElement("div",{className:"cms-content__split cms-content__split--left-sm"},h["default"].createElement("div",{className:"cms-content__left cms-campaigns collapse in","aria-expanded":"true"},h["default"].createElement(I["default"],{showBackButton:!0,handleBackButtonClick:this.props.handleBackButtonClick},h["default"].createElement(U["default"],{multiline:!0,crumbs:this.props.breadcrumbs})),h["default"].createElement("div",{className:l.join(" ")},s),h["default"].createElement("div",{className:"toolbar--south"},this.renderButtonToolbar())),h["default"].createElement(B["default"],{itemLinks:n,itemId:t}))}},{key:"handleItemSelected",value:function s(e,t){this.props.campaignActions.selectChangeSetItem(t)}},{key:"renderButtonToolbar",value:function l(){var e=this.getItems();if(!e||!e.length)return h["default"].createElement("div",{className:"btn-toolbar"});var t={};return"open"===this.props.record.State?t=c(t,{title:G["default"]._t("Campaigns.PUBLISHCAMPAIGN"),bootstrapButtonStyle:"primary",loading:this.props.campaign.isPublishing,handleClick:this.handlePublish,icon:"rocket"}):"published"===this.props.record.State&&(t=c(t,{title:G["default"]._t("Campaigns.REVERTCAMPAIGN"),bootstrapButtonStyle:"default",icon:"back-in-time",disabled:!0})),h["default"].createElement("div",{className:"btn-toolbar"},h["default"].createElement(M["default"],t))}},{key:"getItems",value:function d(){return this.props.record&&this.props.record._embedded?this.props.record._embedded.items:null}},{key:"groupItemsForSet",value:function y(){var e={},t=this.getItems();return t?(t.forEach(function(t){var n=t.BaseClass;e[n]||(e[n]={singular:t.Singular,plural:t.Plural,items:[]}),e[n].items.push(t)}),e):e}},{key:"handlePublish",value:function m(e){e.preventDefault(),this.props.campaignActions.publishCampaign(this.props.publishApi,this.props.treeClass,this.props.campaignId)}}]),t}(T["default"]);q.propTypes={campaign:h["default"].PropTypes.shape({isPublishing:h["default"].PropTypes.bool.isRequired,changeSetItemId:h["default"].PropTypes.number}),breadcrumbsActions:h["default"].PropTypes.object.isRequired,campaignActions:h["default"].PropTypes.object.isRequired,publishApi:h["default"].PropTypes.func.isRequired,record:h["default"].PropTypes.object.isRequired,recordActions:h["default"].PropTypes.object.isRequired,sectionConfig:h["default"].PropTypes.object.isRequired,handleBackButtonClick:h["default"].PropTypes.func},t["default"]=(0,m.connect)(s,l)(q)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){var n=["id"];return n.reduce(function(e,n){return e.replace(":"+n,t[n])},e)}function a(e,t,n){var r={recordType:e},a={Accept:"text/json"},i=t.toLowerCase();return function(t){t({type:l["default"].FETCH_RECORDS_REQUEST,payload:r});var u="get"===i?[o(n,r),a]:[o(n,r),{},a];return f["default"][i].apply(f["default"],u).then(function(e){return e.json()}).then(function(n){t({type:l["default"].FETCH_RECORDS_SUCCESS,payload:{recordType:e,data:n}})})["catch"](function(n){throw t({type:l["default"].FETCH_RECORDS_FAILURE,payload:{error:n,recordType:e}}),n})}}function i(e,t,n){var r={recordType:e},a={Accept:"text/json"},i=t.toLowerCase();return function(t){t({type:l["default"].FETCH_RECORD_REQUEST,payload:r});var u="get"===i?[o(n,r),a]:[o(n,r),{},a];return f["default"][i].apply(f["default"],u).then(function(e){return e.json()}).then(function(n){t({type:l["default"].FETCH_RECORD_SUCCESS,payload:{recordType:e,data:n}})})["catch"](function(n){throw t({type:l["default"].FETCH_RECORD_FAILURE,payload:{error:n,recordType:e}}),n})}}function u(e,t,n,r){var a=arguments.length<=4||void 0===arguments[4]?{}:arguments[4],i={recordType:e,id:t},u=n.toLowerCase(),s="get"===u?[o(r,i),a]:[o(r,i),{},a];return function(n){return n({type:l["default"].DELETE_RECORD_REQUEST,payload:i}),f["default"][u].apply(f["default"],s).then(function(){n({type:l["default"].DELETE_RECORD_SUCCESS,payload:{recordType:e,id:t}})})["catch"](function(r){throw n({type:l["default"].DELETE_RECORD_FAILURE,payload:{error:r,recordType:e,id:t}}),r})}}Object.defineProperty(t,"__esModule",{value:!0}),t.fetchRecords=a,t.fetchRecord=i,t.deleteRecord=u;var s=n(43),l=r(s),c=n(72),f=r(c)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e){var t=null,n=null;if(!(e.status>=200&&e.status<300))throw n=new Error(e.statusText),n.response=e,n;return t=e}function u(e){var t=null;if(e instanceof FormData||"string"==typeof e)t=e;else{if(!e||"object"!==("undefined"==typeof e?"undefined":m(e)))throw new Error("Invalid body type");t=JSON.stringify(e)}return t}function s(e,t){switch(e){case"application/x-www-form-urlencoded":return w["default"].stringify(t);case"application/json":case"application/x-json":case"application/x-javascript":case"text/javascript":case"text/x-javascript":case"text/x-json":return JSON.stringify(t);default:throw new Error("Can't encode format: "+e)}}function l(e,t){switch(e){case"application/x-www-form-urlencoded":return w["default"].parse(t);case"application/json":case"application/x-json":case"application/x-javascript":case"text/javascript":case"text/x-javascript":case"text/x-json":return JSON.parse(t);default:throw new Error("Can't decode format: "+e)}}function c(e,t){return""===t?e:e.match(/\?/)?e+"&"+t:e+"?"+t}function f(e){return e.text().then(function(t){return l(e.headers.get("Content-Type"),t)})}function p(e,t){return Object.keys(t).reduce(function(n,r){var o=e[r];return!o||o.remove!==!0&&o.querystring!==!0?y(n,a({},r,t[r])):n},{})}function d(e,t,n){var r=arguments.length<=3||void 0===arguments[3]?{setFromData:!1}:arguments[3],o=t,i=Object.keys(n).reduce(function(t,o){var i=e[o],u=r.setFromData===!0&&!(i&&i.remove===!0),s=i&&i.querystring===!0&&i.remove!==!0;return u||s?y(t,a({},o,n[o])):t},{}),u=s("application/x-www-form-urlencoded",i);return o=c(o,u),o=Object.keys(e).reduce(function(t,r){var o=e[r].urlReplacement;return o?t.replace(o,n[r]):t},o)}Object.defineProperty(t,"__esModule",{value:!0});var h=function(){function e(e,t){for(var n=0;n-1?t:e}function c(e,t){t=t||{};var n=t.body;if(c.prototype.isPrototypeOf(e)){if(e.bodyUsed)throw new TypeError("Already read");this.url=e.url,this.credentials=e.credentials,t.headers||(this.headers=new r(e.headers)),this.method=e.method,this.mode=e.mode,n||(n=e._bodyInit,e.bodyUsed=!0)}else this.url=e;if(this.credentials=t.credentials||this.credentials||"omit",!t.headers&&this.headers||(this.headers=new r(t.headers)),this.method=l(t.method||this.method||"GET"),this.mode=t.mode||this.mode||null,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&n)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(n)}function f(e){var t=new FormData;return e.trim().split("&").forEach(function(e){if(e){var n=e.split("="),r=n.shift().replace(/\+/g," "),o=n.join("=").replace(/\+/g," ");t.append(decodeURIComponent(r),decodeURIComponent(o))}}),t}function p(e){var t=new r,n=e.getAllResponseHeaders().trim().split("\n");return n.forEach(function(e){var n=e.trim().split(":"),r=n.shift().trim(),o=n.join(":").trim();t.append(r,o)}),t}function d(e,t){t||(t={}),this.type="default",this.status=t.status,this.ok=this.status>=200&&this.status<300,this.statusText=t.statusText,this.headers=t.headers instanceof r?t.headers:new r(t.headers),this.url=t.url||"",this._initBody(e)}if(!e.fetch){r.prototype.append=function(e,r){e=t(e),r=n(r);var o=this.map[e];o||(o=[],this.map[e]=o),o.push(r)},r.prototype["delete"]=function(e){delete this.map[t(e)]},r.prototype.get=function(e){var n=this.map[t(e)];return n?n[0]:null},r.prototype.getAll=function(e){return this.map[t(e)]||[]},r.prototype.has=function(e){return this.map.hasOwnProperty(t(e))},r.prototype.set=function(e,r){this.map[t(e)]=[n(r)]},r.prototype.forEach=function(e,t){Object.getOwnPropertyNames(this.map).forEach(function(n){this.map[n].forEach(function(r){e.call(t,r,n,this)},this)},this)};var h={blob:"FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch(e){return!1}}(),formData:"FormData"in e,arrayBuffer:"ArrayBuffer"in e},y=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];c.prototype.clone=function(){return new c(this)},s.call(c.prototype),s.call(d.prototype),d.prototype.clone=function(){return new d(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new r(this.headers),url:this.url})},d.error=function(){var e=new d(null,{status:0,statusText:""});return e.type="error",e};var m=[301,302,303,307,308];d.redirect=function(e,t){if(m.indexOf(t)===-1)throw new RangeError("Invalid status code");return new d(null,{status:t,headers:{location:e}})},e.Headers=r,e.Request=c,e.Response=d,e.fetch=function(e,t){return new Promise(function(n,r){function o(){return"responseURL"in i?i.responseURL:/^X-Request-URL:/m.test(i.getAllResponseHeaders())?i.getResponseHeader("X-Request-URL"):void 0}var a;a=c.prototype.isPrototypeOf(e)&&!t?e:new c(e,t);var i=new XMLHttpRequest;i.onload=function(){var e=1223===i.status?204:i.status;if(e<100||e>599)return void r(new TypeError("Network request failed"));var t={status:e,statusText:i.statusText,headers:p(i),url:o()},a="response"in i?i.response:i.responseText;n(new d(a,t))},i.onerror=function(){r(new TypeError("Network request failed"))},i.open(a.method,a.url,!0),"include"===a.credentials&&(i.withCredentials=!0),"responseType"in i&&h.blob&&(i.responseType="blob"),a.headers.forEach(function(e,t){i.setRequestHeader(t,e)}),i.send("undefined"==typeof a._bodyInit?null:a._bodyInit)})},e.fetch.polyfill=!0}}("undefined"!=typeof self?self:this)},function(e,t,n){var r;(function(t,o){/*! * @overview es6-promise - a tiny implementation of Promises/A+. * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald) * @license Licensed under MIT license diff --git a/admin/client/dist/js/bundle-lib.js b/admin/client/dist/js/bundle-lib.js index 1740782a0..02d2cb8d7 100644 --- a/admin/client/dist/js/bundle-lib.js +++ b/admin/client/dist/js/bundle-lib.js @@ -1,5 +1,5 @@ -!function(t){function e(i){if(n[i])return n[i].exports;var r=n[i]={exports:{},id:i,loaded:!1};return t[i].call(r.exports,r,r.exports,e),r.loaded=!0,r.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){"use strict";n(121),n(123),n(153),n(155),n(288),n(298),n(313),n(315),n(363),n(369),n(372),n(374),n(628),n(636),n(639),n(642),n(645),n(646),n(942),n(943),n(944),n(94),n(945),n(946),n(947),n(948),n(949),n(950),n(951),n(952),n(953),n(954),n(955),n(118),n(94),n(93),n(956),n(957),n(958),n(959),n(960),n(113),n(961),n(962),n(93),n(963),n(964),n(965),n(966),n(968),n(969),n(971),n(973),n(975),n(979),n(981),n(989),n(990),n(991),n(992),n(993),n(994),n(995),n(996),n(998),n(1e3),n(1002),n(1003),n(1005),n(1007),n(1008)},function(t,e){t.exports=jQuery},,function(t,e){t.exports=React},function(t,e){t.exports=ReactDom},function(t,e){t.exports=ReactRedux},function(t,e){t.exports=ReactRouter},function(t,e,n){"use strict";function i(t){return t&&t.__esModule?t:{"default":t}}function r(){function t(t){try{t=t||window.history.state||{}}catch(e){t={}}var n=d.getWindowPath(),i=t,r=i.key,a=void 0;r?a=f.readState(r):(a=null,r=b.createKey(),v&&window.history.replaceState(o({},t,{key:r}),null));var s=u.parsePath(n);return b.createLocation(o({},s,{state:a}),void 0,r)}function e(e){function n(e){void 0!==e.state&&i(t(e.state))}var i=e.transitionTo;return d.addEventListener(window,"popstate",n),function(){d.removeEventListener(window,"popstate",n)}}function n(t){var e=t.basename,n=t.pathname,i=t.search,r=t.hash,o=t.state,a=t.action,s=t.key;if(a!==l.POP){f.saveState(s,o);var u=(e||"")+n+i+r,c={key:s};if(a===l.PUSH){if(y)return window.location.href=u,!1;window.history.pushState(c,null,u)}else{if(y)return window.location.replace(u),!1;window.history.replaceState(c,null,u)}}}function i(t){1===++_&&(x=e(b));var n=b.listenBefore(t);return function(){n(),0===--_&&x()}}function r(t){1===++_&&(x=e(b));var n=b.listen(t);return function(){n(),0===--_&&x()}}function a(t){1===++_&&(x=e(b)),b.registerTransitionHook(t)}function h(t){b.unregisterTransitionHook(t),0===--_&&x()}var m=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];c.canUseDOM?void 0:s["default"](!1);var g=m.forceRefresh,v=d.supportsHistory(),y=!v||g,b=p["default"](o({},m,{getCurrentLocation:t,finishTransition:n,saveState:f.saveState})),_=0,x=void 0;return o({},b,{listenBefore:i,listen:r,registerTransitionHook:a,unregisterTransitionHook:h})}e.__esModule=!0;var o=Object.assign||function(t){for(var e=1;e=0&&0===window.sessionStorage.length)return;throw n}}function a(t){var e=void 0;try{e=window.sessionStorage.getItem(r(t))}catch(n){if(n.name===d)return null}if(e)try{return JSON.parse(e)}catch(n){}return null}e.__esModule=!0,e.saveState=o,e.readState=a;var s=n(11),l=i(s),u="@@History/",c=["QuotaExceededError","QUOTA_EXCEEDED_ERR"],d="SecurityError"},function(t,e,n){"use strict";function i(t){return t&&t.__esModule?t:{"default":t}}function r(t){function e(t){return l.canUseDOM?void 0:s["default"](!1),n.listen(t)}var n=d["default"](o({getUserConfirmation:u.getUserConfirmation},t,{go:u.go}));return o({},n,{listen:e})}e.__esModule=!0;var o=Object.assign||function(t){for(var e=1;e0&&"number"!=typeof t[0]))}function o(t,e,n){var o,c;if(i(t)||i(e))return!1;if(t.prototype!==e.prototype)return!1;if(l(t))return!!l(e)&&(t=a.call(t),e=a.call(e),u(t,e,n));if(r(t)){if(!r(e))return!1;if(t.length!==e.length)return!1;for(o=0;o=0;o--)if(d[o]!=f[o])return!1;for(o=d.length-1;o>=0;o--)if(c=d[o],!u(t[c],e[c],n))return!1;return typeof t==typeof e}var a=Array.prototype.slice,s=n(18),l=n(19),u=t.exports=function(t,e,n){return n||(n={}),t===e||(t instanceof Date&&e instanceof Date?t.getTime()===e.getTime():!t||!e||"object"!=typeof t&&"object"!=typeof e?n.strict?t===e:t==e:o(t,e,n))}},function(t,e){function n(t){var e=[];for(var n in t)e.push(n);return e}e=t.exports="function"==typeof Object.keys?Object.keys:n,e.shim=n},function(t,e){function n(t){return"[object Arguments]"==Object.prototype.toString.call(t)}function i(t){return t&&"object"==typeof t&&"number"==typeof t.length&&Object.prototype.hasOwnProperty.call(t,"callee")&&!Object.prototype.propertyIsEnumerable.call(t,"callee")||!1}var r="[object Arguments]"==function(){return Object.prototype.toString.call(arguments)}();e=t.exports=r?n:i,e.supported=n,e.unsupported=i},function(t,e){"use strict";function n(t,e,n){function r(){return s=!0,l?void(c=[].concat(i.call(arguments))):void n.apply(this,arguments)}function o(){if(!s&&(u=!0,!l)){for(l=!0;!s&&a=t&&u&&(s=!0,n()))}}var a=0,s=!1,l=!1,u=!1,c=void 0;o()}e.__esModule=!0;var i=Array.prototype.slice;e.loopAsync=n},function(t,e,n){"use strict";function i(t){return t&&t.__esModule?t:{"default":t}}function r(){var t=arguments.length<=0||void 0===arguments[0]?"/":arguments[0],e=arguments.length<=1||void 0===arguments[1]?l.POP:arguments[1],n=arguments.length<=2||void 0===arguments[2]?null:arguments[2],i=arguments.length<=3||void 0===arguments[3]?null:arguments[3];"string"==typeof t&&(t=u.parsePath(t)),"object"==typeof e&&(t=o({},t,{state:e}),e=n||l.POP,n=i);var r=t.pathname||"/",a=t.search||"",s=t.hash||"",c=t.state||null;return{pathname:r,search:a,hash:s,state:c,action:e,key:n}}e.__esModule=!0;var o=Object.assign||function(t){for(var e=1;e=200&&t.status<300))throw n=new Error(t.statusText),n.response=t,n;return e=t}Object.defineProperty(e,"__esModule",{value:!0});var s=Object.assign||function(t){for(var e=1;e-1?e:t}function c(t,e){e=e||{};var n=e.body;if(c.prototype.isPrototypeOf(t)){if(t.bodyUsed)throw new TypeError("Already read");this.url=t.url,this.credentials=t.credentials,e.headers||(this.headers=new i(t.headers)),this.method=t.method,this.mode=t.mode,n||(n=t._bodyInit,t.bodyUsed=!0)}else this.url=t;if(this.credentials=e.credentials||this.credentials||"omit",!e.headers&&this.headers||(this.headers=new i(e.headers)),this.method=u(e.method||this.method||"GET"),this.mode=e.mode||this.mode||null,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&n)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(n)}function d(t){var e=new FormData;return t.trim().split("&").forEach(function(t){if(t){var n=t.split("="),i=n.shift().replace(/\+/g," "),r=n.join("=").replace(/\+/g," ");e.append(decodeURIComponent(i),decodeURIComponent(r))}}),e}function f(t){var e=new i,n=t.getAllResponseHeaders().trim().split("\n");return n.forEach(function(t){var n=t.trim().split(":"),i=n.shift().trim(),r=n.join(":").trim();e.append(i,r)}),e}function h(t,e){e||(e={}),this.type="default",this.status=e.status,this.ok=this.status>=200&&this.status<300,this.statusText=e.statusText,this.headers=e.headers instanceof i?e.headers:new i(e.headers), -this.url=e.url||"",this._initBody(t)}if(!t.fetch){i.prototype.append=function(t,i){t=e(t),i=n(i);var r=this.map[t];r||(r=[],this.map[t]=r),r.push(i)},i.prototype["delete"]=function(t){delete this.map[e(t)]},i.prototype.get=function(t){var n=this.map[e(t)];return n?n[0]:null},i.prototype.getAll=function(t){return this.map[e(t)]||[]},i.prototype.has=function(t){return this.map.hasOwnProperty(e(t))},i.prototype.set=function(t,i){this.map[e(t)]=[n(i)]},i.prototype.forEach=function(t,e){Object.getOwnPropertyNames(this.map).forEach(function(n){this.map[n].forEach(function(i){t.call(e,i,n,this)},this)},this)};var p={blob:"FileReader"in t&&"Blob"in t&&function(){try{return new Blob,!0}catch(t){return!1}}(),formData:"FormData"in t,arrayBuffer:"ArrayBuffer"in t},m=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];c.prototype.clone=function(){return new c(this)},l.call(c.prototype),l.call(h.prototype),h.prototype.clone=function(){return new h(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new i(this.headers),url:this.url})},h.error=function(){var t=new h(null,{status:0,statusText:""});return t.type="error",t};var g=[301,302,303,307,308];h.redirect=function(t,e){if(g.indexOf(e)===-1)throw new RangeError("Invalid status code");return new h(null,{status:e,headers:{location:t}})},t.Headers=i,t.Request=c,t.Response=h,t.fetch=function(t,e){return new Promise(function(n,i){function r(){return"responseURL"in a?a.responseURL:/^X-Request-URL:/m.test(a.getAllResponseHeaders())?a.getResponseHeader("X-Request-URL"):void 0}var o;o=c.prototype.isPrototypeOf(t)&&!e?t:new c(t,e);var a=new XMLHttpRequest;a.onload=function(){var t=1223===a.status?204:a.status;if(t<100||t>599)return void i(new TypeError("Network request failed"));var e={status:t,statusText:a.statusText,headers:f(a),url:r()},o="response"in a?a.response:a.responseText;n(new h(o,e))},a.onerror=function(){i(new TypeError("Network request failed"))},a.open(o.method,o.url,!0),"include"===o.credentials&&(a.withCredentials=!0),"responseType"in a&&p.blob&&(a.responseType="blob"),o.headers.forEach(function(t,e){a.setRequestHeader(e,t)}),a.send("undefined"==typeof o._bodyInit?null:o._bodyInit)})},t.fetch.polyfill=!0}}("undefined"!=typeof self?self:this)},function(t,e,n){var i;(function(e,r){/*! +!function(t){function e(i){if(n[i])return n[i].exports;var r=n[i]={exports:{},id:i,loaded:!1};return t[i].call(r.exports,r,r.exports,e),r.loaded=!0,r.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){"use strict";n(121),n(123),n(153),n(155),n(288),n(298),n(313),n(315),n(363),n(369),n(372),n(374),n(628),n(636),n(639),n(642),n(645),n(646),n(942),n(943),n(944),n(94),n(945),n(946),n(947),n(948),n(949),n(950),n(951),n(952),n(953),n(954),n(955),n(118),n(94),n(93),n(956),n(957),n(958),n(959),n(960),n(113),n(961),n(962),n(93),n(963),n(964),n(965),n(966),n(968),n(969),n(971),n(973),n(975),n(979),n(981),n(989),n(990),n(991),n(992),n(993),n(994),n(995),n(996),n(998),n(1e3),n(1002),n(1003),n(1005),n(1007),n(1008)},function(t,e){t.exports=jQuery},,function(t,e){t.exports=React},function(t,e){t.exports=ReactDom},function(t,e){t.exports=ReactRedux},function(t,e){t.exports=ReactRouter},function(t,e,n){"use strict";function i(t){return t&&t.__esModule?t:{"default":t}}function r(){function t(t){try{t=t||window.history.state||{}}catch(e){t={}}var n=d.getWindowPath(),i=t,r=i.key,a=void 0;r?a=f.readState(r):(a=null,r=b.createKey(),v&&window.history.replaceState(o({},t,{key:r}),null));var s=u.parsePath(n);return b.createLocation(o({},s,{state:a}),void 0,r)}function e(e){function n(e){void 0!==e.state&&i(t(e.state))}var i=e.transitionTo;return d.addEventListener(window,"popstate",n),function(){d.removeEventListener(window,"popstate",n)}}function n(t){var e=t.basename,n=t.pathname,i=t.search,r=t.hash,o=t.state,a=t.action,s=t.key;if(a!==l.POP){f.saveState(s,o);var u=(e||"")+n+i+r,c={key:s};if(a===l.PUSH){if(y)return window.location.href=u,!1;window.history.pushState(c,null,u)}else{if(y)return window.location.replace(u),!1;window.history.replaceState(c,null,u)}}}function i(t){1===++_&&(x=e(b));var n=b.listenBefore(t);return function(){n(),0===--_&&x()}}function r(t){1===++_&&(x=e(b));var n=b.listen(t);return function(){n(),0===--_&&x()}}function a(t){1===++_&&(x=e(b)),b.registerTransitionHook(t)}function h(t){b.unregisterTransitionHook(t),0===--_&&x()}var m=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];c.canUseDOM?void 0:s["default"](!1);var g=m.forceRefresh,v=d.supportsHistory(),y=!v||g,b=p["default"](o({},m,{getCurrentLocation:t,finishTransition:n,saveState:f.saveState})),_=0,x=void 0;return o({},b,{listenBefore:i,listen:r,registerTransitionHook:a,unregisterTransitionHook:h})}e.__esModule=!0;var o=Object.assign||function(t){for(var e=1;e=0&&0===window.sessionStorage.length)return;throw n}}function a(t){var e=void 0;try{e=window.sessionStorage.getItem(r(t))}catch(n){if(n.name===d)return null}if(e)try{return JSON.parse(e)}catch(n){}return null}e.__esModule=!0,e.saveState=o,e.readState=a;var s=n(11),l=i(s),u="@@History/",c=["QuotaExceededError","QUOTA_EXCEEDED_ERR"],d="SecurityError"},function(t,e,n){"use strict";function i(t){return t&&t.__esModule?t:{"default":t}}function r(t){function e(t){return l.canUseDOM?void 0:s["default"](!1),n.listen(t)}var n=d["default"](o({getUserConfirmation:u.getUserConfirmation},t,{go:u.go}));return o({},n,{listen:e})}e.__esModule=!0;var o=Object.assign||function(t){for(var e=1;e0&&"number"!=typeof t[0]))}function o(t,e,n){var o,c;if(i(t)||i(e))return!1;if(t.prototype!==e.prototype)return!1;if(l(t))return!!l(e)&&(t=a.call(t),e=a.call(e),u(t,e,n));if(r(t)){if(!r(e))return!1;if(t.length!==e.length)return!1;for(o=0;o=0;o--)if(d[o]!=f[o])return!1;for(o=d.length-1;o>=0;o--)if(c=d[o],!u(t[c],e[c],n))return!1;return typeof t==typeof e}var a=Array.prototype.slice,s=n(18),l=n(19),u=t.exports=function(t,e,n){return n||(n={}),t===e||(t instanceof Date&&e instanceof Date?t.getTime()===e.getTime():!t||!e||"object"!=typeof t&&"object"!=typeof e?n.strict?t===e:t==e:o(t,e,n))}},function(t,e){function n(t){var e=[];for(var n in t)e.push(n);return e}e=t.exports="function"==typeof Object.keys?Object.keys:n,e.shim=n},function(t,e){function n(t){return"[object Arguments]"==Object.prototype.toString.call(t)}function i(t){return t&&"object"==typeof t&&"number"==typeof t.length&&Object.prototype.hasOwnProperty.call(t,"callee")&&!Object.prototype.propertyIsEnumerable.call(t,"callee")||!1}var r="[object Arguments]"==function(){return Object.prototype.toString.call(arguments)}();e=t.exports=r?n:i,e.supported=n,e.unsupported=i},function(t,e){"use strict";function n(t,e,n){function r(){return s=!0,l?void(c=[].concat(i.call(arguments))):void n.apply(this,arguments)}function o(){if(!s&&(u=!0,!l)){for(l=!0;!s&&a=t&&u&&(s=!0,n()))}}var a=0,s=!1,l=!1,u=!1,c=void 0;o()}e.__esModule=!0;var i=Array.prototype.slice;e.loopAsync=n},function(t,e,n){"use strict";function i(t){return t&&t.__esModule?t:{"default":t}}function r(){var t=arguments.length<=0||void 0===arguments[0]?"/":arguments[0],e=arguments.length<=1||void 0===arguments[1]?l.POP:arguments[1],n=arguments.length<=2||void 0===arguments[2]?null:arguments[2],i=arguments.length<=3||void 0===arguments[3]?null:arguments[3];"string"==typeof t&&(t=u.parsePath(t)),"object"==typeof e&&(t=o({},t,{state:e}),e=n||l.POP,n=i);var r=t.pathname||"/",a=t.search||"",s=t.hash||"",c=t.state||null;return{pathname:r,search:a,hash:s,state:c,action:e,key:n}}e.__esModule=!0;var o=Object.assign||function(t){for(var e=1;e=200&&t.status<300))throw n=new Error(t.statusText),n.response=t,n;return e=t}function s(t){var e=null;if(t instanceof FormData||"string"==typeof t)e=t;else{if(!t||"object"!==("undefined"==typeof t?"undefined":g(t)))throw new Error("Invalid body type");e=JSON.stringify(t)}return e}function l(t,e){switch(t){case"application/x-www-form-urlencoded":return w["default"].stringify(e);case"application/json":case"application/x-json":case"application/x-javascript":case"text/javascript":case"text/x-javascript":case"text/x-json":return JSON.stringify(e);default:throw new Error("Can't encode format: "+t)}}function u(t,e){switch(t){case"application/x-www-form-urlencoded":return w["default"].parse(e);case"application/json":case"application/x-json":case"application/x-javascript":case"text/javascript":case"text/x-javascript":case"text/x-json":return JSON.parse(e);default:throw new Error("Can't decode format: "+t)}}function c(t,e){return""===e?t:t.match(/\?/)?t+"&"+e:t+"?"+e}function d(t){return t.text().then(function(e){return u(t.headers.get("Content-Type"),e)})}function f(t,e){return Object.keys(e).reduce(function(n,i){var r=t[i];return!r||r.remove!==!0&&r.querystring!==!0?m(n,o({},i,e[i])):n},{})}function h(t,e,n){var i=arguments.length<=3||void 0===arguments[3]?{setFromData:!1}:arguments[3],r=e,a=Object.keys(n).reduce(function(e,r){var a=t[r],s=i.setFromData===!0&&!(a&&a.remove===!0),l=a&&a.querystring===!0&&a.remove!==!0;return s||l?m(e,o({},r,n[r])):e},{}),s=l("application/x-www-form-urlencoded",a);return r=c(r,s),r=Object.keys(t).reduce(function(e,i){var r=t[i].urlReplacement;return r?e.replace(r,n[i]):e},r)}Object.defineProperty(e,"__esModule",{value:!0});var p=function(){function t(t,e){for(var n=0;n-1?e:t}function c(t,e){e=e||{};var n=e.body;if(c.prototype.isPrototypeOf(t)){if(t.bodyUsed)throw new TypeError("Already read");this.url=t.url,this.credentials=t.credentials,e.headers||(this.headers=new i(t.headers)),this.method=t.method,this.mode=t.mode,n||(n=t._bodyInit,t.bodyUsed=!0)}else this.url=t;if(this.credentials=e.credentials||this.credentials||"omit",!e.headers&&this.headers||(this.headers=new i(e.headers)),this.method=u(e.method||this.method||"GET"),this.mode=e.mode||this.mode||null,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&n)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(n)}function d(t){var e=new FormData;return t.trim().split("&").forEach(function(t){if(t){var n=t.split("="),i=n.shift().replace(/\+/g," "),r=n.join("=").replace(/\+/g," "); +e.append(decodeURIComponent(i),decodeURIComponent(r))}}),e}function f(t){var e=new i,n=t.getAllResponseHeaders().trim().split("\n");return n.forEach(function(t){var n=t.trim().split(":"),i=n.shift().trim(),r=n.join(":").trim();e.append(i,r)}),e}function h(t,e){e||(e={}),this.type="default",this.status=e.status,this.ok=this.status>=200&&this.status<300,this.statusText=e.statusText,this.headers=e.headers instanceof i?e.headers:new i(e.headers),this.url=e.url||"",this._initBody(t)}if(!t.fetch){i.prototype.append=function(t,i){t=e(t),i=n(i);var r=this.map[t];r||(r=[],this.map[t]=r),r.push(i)},i.prototype["delete"]=function(t){delete this.map[e(t)]},i.prototype.get=function(t){var n=this.map[e(t)];return n?n[0]:null},i.prototype.getAll=function(t){return this.map[e(t)]||[]},i.prototype.has=function(t){return this.map.hasOwnProperty(e(t))},i.prototype.set=function(t,i){this.map[e(t)]=[n(i)]},i.prototype.forEach=function(t,e){Object.getOwnPropertyNames(this.map).forEach(function(n){this.map[n].forEach(function(i){t.call(e,i,n,this)},this)},this)};var p={blob:"FileReader"in t&&"Blob"in t&&function(){try{return new Blob,!0}catch(t){return!1}}(),formData:"FormData"in t,arrayBuffer:"ArrayBuffer"in t},m=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];c.prototype.clone=function(){return new c(this)},l.call(c.prototype),l.call(h.prototype),h.prototype.clone=function(){return new h(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new i(this.headers),url:this.url})},h.error=function(){var t=new h(null,{status:0,statusText:""});return t.type="error",t};var g=[301,302,303,307,308];h.redirect=function(t,e){if(g.indexOf(e)===-1)throw new RangeError("Invalid status code");return new h(null,{status:e,headers:{location:t}})},t.Headers=i,t.Request=c,t.Response=h,t.fetch=function(t,e){return new Promise(function(n,i){function r(){return"responseURL"in a?a.responseURL:/^X-Request-URL:/m.test(a.getAllResponseHeaders())?a.getResponseHeader("X-Request-URL"):void 0}var o;o=c.prototype.isPrototypeOf(t)&&!e?t:new c(t,e);var a=new XMLHttpRequest;a.onload=function(){var t=1223===a.status?204:a.status;if(t<100||t>599)return void i(new TypeError("Network request failed"));var e={status:t,statusText:a.statusText,headers:f(a),url:r()},o="response"in a?a.response:a.responseText;n(new h(o,e))},a.onerror=function(){i(new TypeError("Network request failed"))},a.open(o.method,o.url,!0),"include"===o.credentials&&(a.withCredentials=!0),"responseType"in a&&p.blob&&(a.responseType="blob"),o.headers.forEach(function(t,e){a.setRequestHeader(e,t)}),a.send("undefined"==typeof o._bodyInit?null:o._bodyInit)})},t.fetch.polyfill=!0}}("undefined"!=typeof self?self:this)},function(t,e,n){var i;(function(e,r){/*! * @overview es6-promise - a tiny implementation of Promises/A+. * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald) * @license Licensed under MIT license diff --git a/admin/client/dist/js/main.js b/admin/client/dist/js/main.js new file mode 100644 index 000000000..f94a3c4a5 --- /dev/null +++ b/admin/client/dist/js/main.js @@ -0,0 +1,2 @@ +!function(r){function n(t){if(o[t])return o[t].exports;var e=o[t]={exports:{},id:t,loaded:!1};return r[t].call(e.exports,e,e.exports,n),e.loaded=!0,e.exports}var o={};return n.m=r,n.c=o,n.p="",n(0)}([function(r,n,o){!function t(){throw new Error('Cannot find module "—watch"')}(),function e(){throw new Error('Cannot find module "—profile"')}()}]); +//# sourceMappingURL=main.js.map \ No newline at end of file diff --git a/admin/client/dist/main.css b/admin/client/dist/main.css new file mode 100644 index 000000000..f282db8df --- /dev/null +++ b/admin/client/dist/main.css @@ -0,0 +1,53 @@ +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) +/******/ return installedModules[moduleId].exports; +/******/ +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ exports: {}, +/******/ id: moduleId, +/******/ loaded: false +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.loaded = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(0); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ function(module, exports, __webpack_require__) { + + (function webpackMissingModule() { throw new Error("Cannot find module \"—watch\""); }()); + (function webpackMissingModule() { throw new Error("Cannot find module \"—profile\""); }()); + + +/***/ } +/******/ ]); +/*# sourceMappingURL=main.css.map*/ \ No newline at end of file diff --git a/admin/client/src/lib/Backend.js b/admin/client/src/lib/Backend.js index 899c773af..297ba7b35 100644 --- a/admin/client/src/lib/Backend.js +++ b/admin/client/src/lib/Backend.js @@ -22,6 +22,183 @@ function checkStatus(response) { return ret; } +/** + * Encodes the body data given to a valid value for posting + * + * References: + * https://github.com/github/fetch - API for fetch + * https://github.com/facebook/react-native/issues/2538 - IE10 bug + * + * @param data + * @returns {FormData|string} + */ +function encodeBody(data) { + let encodedData = null; + if (data instanceof FormData || typeof data === 'string') { + encodedData = data; + } else if (data && typeof data === 'object') { + encodedData = JSON.stringify(data); + } else { + throw new Error('Invalid body type'); + } + return encodedData; +} + +/** + * Encode a payload based on the given contentType + * + * @param {string} contentType + * @param {Object} data + * @return {string} + */ +function encode(contentType, data) { + switch (contentType) { + case 'application/x-www-form-urlencoded': + return qs.stringify(data); + + case 'application/json': + case 'application/x-json': + case 'application/x-javascript': + case 'text/javascript': + case 'text/x-javascript': + case 'text/x-json': + return JSON.stringify(data); + + default: + throw new Error(`Can\'t encode format: ${contentType}`); + } +} + +/** + * Decode a payload based on the given contentType + * + * @param {string} contentType + * @param {string} text + * @return {Object} + */ +function decode(contentType, text) { + switch (contentType) { + case 'application/x-www-form-urlencoded': + return qs.parse(text); + + case 'application/json': + case 'application/x-json': + case 'application/x-javascript': + case 'text/javascript': + case 'text/x-javascript': + case 'text/x-json': + return JSON.parse(text); + + default: + throw new Error(`Can\'t decode format: ${contentType}`); + } +} + +/** + * Add a querystring to a url + * + * @param {string} url + * @param {string} querystring + * @return {string} + */ +function addQuerystring(url, querystring) { + if (querystring === '') { + return url; + } + + if (url.match(/\?/)) { + return `${url}&${querystring}`; + } + + return `${url}?${querystring}`; +} + +/** + * Parse the response based on the content type returned + * + * @param {Promise} response + * @return {Promise} + */ +function parseResponse(response) { + return response.text().then( + body => decode(response.headers.get('Content-Type'), body) + ); +} + +/** + * Apply the payload schema rules to the passed-in payload, + * returning the transformed payload. + * + * @param {Object} payloadSchema + * @param {Object} data + * @return {Object} + */ +function applySchemaToData(payloadSchema, data) { + return Object.keys(data).reduce((prev, key) => { + const schema = payloadSchema[key]; + + // Remove key if schema requires it. + // Usually set because the specific payload key + // is used to populate a url placeholder instead. + if (schema && (schema.remove === true || schema.querystring === true)) { + return prev; + } + + // TODO Support for nested keys + return Object.assign(prev, { [key]: data[key] }); + }, {}); +} + +/** + * Applies URL templating and query parameter transformation based on the payloadSchema. + * + * @param {Object} payloadSchema + * @param {string} url + * @param {Object} data + * @param {Object} opts + * @return {string} New URL + */ +function applySchemaToUrl(payloadSchema, url, data, opts = { setFromData: false }) { + let newUrl = url; + + // Set query parameters + const queryData = Object.keys(data).reduce((prev, key) => { + const schema = payloadSchema[key]; + const includeThroughSetFromData = ( + opts.setFromData === true + && !(schema && schema.remove === true) + ); + const includeThroughSpec = ( + schema + && schema.querystring === true + && schema.remove !== true + ); + if (includeThroughSetFromData || includeThroughSpec) { + return Object.assign(prev, { [key]: data[key] }); + } + + return prev; + }, {}); + const encodedQuery = encode('application/x-www-form-urlencoded', queryData); + + newUrl = addQuerystring( + newUrl, + encodedQuery + ); + + // Template placeholders + newUrl = Object.keys(payloadSchema).reduce((prev, key) => { + const replacement = payloadSchema[key].urlReplacement; + if (replacement) { + return prev.replace(replacement, data[key]); + } + + return prev; + }, newUrl); + + return newUrl; +} + class Backend { constructor() { @@ -103,160 +280,6 @@ class Backend { * and returns a promise. */ createEndpointFetcher(endpointSpec) { - /** - * Encode a payload based on the given contentType - * - * @param {string} contentType - * @param {Object} data - * @return {string} - */ - function encode(contentType, data) { - switch (contentType) { - case 'application/x-www-form-urlencoded': - return qs.stringify(data); - - case 'application/json': - case 'application/x-json': - case 'application/x-javascript': - case 'text/javascript': - case 'text/x-javascript': - case 'text/x-json': - return JSON.stringify(data); - - default: - throw new Error(`Can\'t encode format: ${contentType}`); - } - } - - /** - * Decode a payload based on the given contentType - * - * @param {string} contentType - * @param {string} text - * @return {Object} - */ - function decode(contentType, text) { - switch (contentType) { - case 'application/x-www-form-urlencoded': - return qs.parse(text); - - case 'application/json': - case 'application/x-json': - case 'application/x-javascript': - case 'text/javascript': - case 'text/x-javascript': - case 'text/x-json': - return JSON.parse(text); - - default: - throw new Error(`Can\'t decode format: ${contentType}`); - } - } - - /** - * Add a querystring to a url - * - * @param {string} url - * @param {string} querystring - * @return {string} - */ - function addQuerystring(url, querystring) { - if (querystring === '') { - return url; - } - - if (url.match(/\?/)) { - return `${url}&${querystring}`; - } - - return `${url}?${querystring}`; - } - - /** - * Parse the response based on the content type returned - * - * @param {Promise} response - * @return {Promise} - */ - function parseResponse(response) { - return response.text().then( - body => decode(response.headers.get('Content-Type'), body) - ); - } - - /** - * Apply the payload schema rules to the passed-in payload, - * returning the transformed payload. - * - * @param {Object} payloadSchema - * @param {Object} data - * @return {Object} - */ - function applySchemaToData(payloadSchema, data) { - return Object.keys(data).reduce((prev, key) => { - const schema = payloadSchema[key]; - - // Remove key if schema requires it. - // Usually set because the specific payload key - // is used to populate a url placeholder instead. - if (schema && (schema.remove === true || schema.querystring === true)) { - return prev; - } - - // TODO Support for nested keys - return Object.assign(prev, { [key]: data[key] }); - }, {}); - } - - /** - * Applies URL templating and query parameter transformation based on the payloadSchema. - * - * @param {Object} payloadSchema - * @param {string} url - * @param {Object} data - * @param {Object} opts - * @return {string} New URL - */ - function applySchemaToUrl(payloadSchema, url, data, opts = { setFromData: false }) { - let newUrl = url; - - // Set query parameters - const queryData = Object.keys(data).reduce((prev, key) => { - const schema = payloadSchema[key]; - const includeThroughSetFromData = ( - opts.setFromData === true - && !(schema && schema.remove === true) - ); - const includeThroughSpec = ( - schema - && schema.querystring === true - && schema.remove !== true - ); - if (includeThroughSetFromData || includeThroughSpec) { - return Object.assign(prev, { [key]: data[key] }); - } - - return prev; - }, {}); - - newUrl = addQuerystring( - newUrl, - encode('application/x-www-form-urlencoded', queryData) - ); - - // Template placeholders - newUrl = Object.keys(payloadSchema).reduce((prev, key) => { - const replacement = payloadSchema[key].urlReplacement; - if (replacement) { - return prev.replace(replacement, data[key]); - } - - return prev; - }, newUrl); - - return newUrl; - } - // Parameter defaults const refinedSpec = Object.assign({ method: 'get', @@ -344,9 +367,9 @@ class Backend { const defaultHeaders = { 'Content-Type': 'application/x-www-form-urlencoded' }; return this.fetch(url, { method: 'post', - headers: Object.assign({}, defaultHeaders, headers), credentials: 'same-origin', - body: data, + body: encodeBody(data), + headers: Object.assign({}, defaultHeaders, headers), }) .then(checkStatus); } @@ -360,7 +383,12 @@ class Backend { * @return object - Promise */ put(url, data = {}, headers = {}) { - return this.fetch(url, { method: 'put', credentials: 'same-origin', body: data, headers }) + return this.fetch(url, { + method: 'put', + credentials: 'same-origin', + body: encodeBody(data), + headers, + }) .then(checkStatus); } @@ -373,7 +401,12 @@ class Backend { * @return object - Promise */ delete(url, data = {}, headers = {}) { - return this.fetch(url, { method: 'delete', credentials: 'same-origin', body: data, headers }) + return this.fetch(url, { + method: 'delete', + credentials: 'same-origin', + body: encodeBody(data), + headers, + }) .then(checkStatus); } diff --git a/admin/client/src/lib/tests/Backend-test.js b/admin/client/src/lib/tests/Backend-test.js index 0e7213ec1..d293b36e1 100644 --- a/admin/client/src/lib/tests/Backend-test.js +++ b/admin/client/src/lib/tests/Backend-test.js @@ -64,7 +64,7 @@ describe('Backend', () => { headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, - body: postData, + body: JSON.stringify(postData), } ); }); @@ -87,7 +87,7 @@ describe('Backend', () => { method: 'put', credentials: 'same-origin', headers: {}, - body: putData, + body: JSON.stringify(putData), } ); }); @@ -110,7 +110,7 @@ describe('Backend', () => { method: 'delete', credentials: 'same-origin', headers: {}, - body: deleteData, + body: JSON.stringify(deleteData), } ); }); @@ -129,28 +129,35 @@ describe('Backend', () => { }); } - it('should add querystring to the URL for GET requests', () => { + it('should add querystring to the URL for GET requests', (done) => { const mock = getBackendMock({ text: () => Promise.resolve('{"status":"ok","message":"happy"}'), headers: new Headers({ 'Content-Type': 'application/json', }), }); + const endpoint = mock.createEndpointFetcher({ url: 'http://example.org', method: 'get', responseFormat: 'json', }); - endpoint({ id: 1, values: { a: 'aye', b: 'bee' } }); - expect(mock.get.mock.calls[0][0]).toEqual('http://example.org?id=1&values%5Ba%5D=aye&values%5Bb%5D=bee'); - expect(mock.get.mock.calls[0][1]).toEqual({ - Accept: 'application/json', - 'Content-Type': 'application/x-www-form-urlencoded', + const promise = endpoint({ id: 1, values: { a: 'aye', b: 'bee' } }); + + return promise.then(() => { + expect(mock.get.mock.calls[0][0]) + .toEqual('http://example.org?id=1&values%5Ba%5D=aye&values%5Bb%5D=bee'); + expect(mock.get.mock.calls[0][1]) + .toEqual({ + Accept: 'application/json', + 'Content-Type': 'application/x-www-form-urlencoded', + }); + done(); }); }); - it('should pass a JSON payload', () => { + it('should pass a JSON payload', (done) => { const mock = getBackendMock({ text: () => Promise.resolve('{"status":"ok","message":"happy"}'), headers: new Headers({ @@ -165,19 +172,20 @@ describe('Backend', () => { }); const promise = endpoint({ id: 1, values: { a: 'aye', b: 'bee' } }); - expect(mock.post.mock.calls[0][0]).toEqual('http://example.org'); - expect(mock.post.mock.calls[0][1]).toEqual('{"id":1,"values":{"a":"aye","b":"bee"}}'); - expect(mock.post.mock.calls[0][2]).toEqual({ - Accept: 'application/json', - 'Content-Type': 'application/json', - }); return promise.then((result) => { + expect(mock.post.mock.calls[0][0]).toEqual('http://example.org'); + expect(mock.post.mock.calls[0][1]).toEqual('{"id":1,"values":{"a":"aye","b":"bee"}}'); + expect(mock.post.mock.calls[0][2]).toEqual({ + Accept: 'application/json', + 'Content-Type': 'application/json', + }); expect(result).toEqual({ status: 'ok', message: 'happy' }); + done(); }); }); - it('should replace url template parameters', () => { + it('should replace url template parameters', (done) => { const mock = getBackendMock({ text: () => Promise.resolve('{"status":"ok"}'), headers: new Headers({ @@ -192,16 +200,20 @@ describe('Backend', () => { two: { urlReplacement: ':two' }, }, }); - endpoint({ + const promise = endpoint({ one: 1, two: 2, three: 3, }); - expect(mock.post.mock.calls[0][0]).toEqual('http://example.com/1/2/?foo=bar'); - expect(mock.post.mock.calls[0][1]).toEqual('two=2&three=3'); + + return promise.then(() => { + expect(mock.post.mock.calls[0][0]).toEqual('http://example.com/1/2/?foo=bar'); + expect(mock.post.mock.calls[0][1]).toEqual('two=2&three=3'); + done(); + }); }); - it('should add query parameters from spec for non-GET data', () => { + it('should add query parameters from spec for non-GET data', (done) => { const mock = getBackendMock({ text: () => Promise.resolve('{"status":"ok"}'), headers: new Headers({ @@ -218,16 +230,20 @@ describe('Backend', () => { three: { querystring: true }, }, }); - endpoint({ + const promise = endpoint({ one: 1, two: 2, three: 3, }); - expect(mock.post.mock.calls[0][0]).toEqual('http://example.com/1/2/?foo=bar&three=3'); - expect(mock.post.mock.calls[0][1]).toEqual('{"two":2}'); + + return promise.then(() => { + expect(mock.post.mock.calls[0][0]).toEqual('http://example.com/1/2/?foo=bar&three=3'); + expect(mock.post.mock.calls[0][1]).toEqual('{"two":2}'); + done(); + }); }); - it('should add query parameters from payload for GET data', () => { + it('should add query parameters from payload for GET data', (done) => { const mock = getBackendMock({ text: () => Promise.resolve('{"status":"ok"}'), headers: new Headers({ @@ -243,19 +259,23 @@ describe('Backend', () => { three: { querystring: true }, }, }); - endpoint({ + const promise = endpoint({ one: 1, two: 2, three: 3, }); - expect(mock.get.mock.calls[0][0]).toEqual('http://example.com/1/2/?foo=bar&two=2&three=3'); - expect(mock.get.mock.calls[0][1]).toEqual({ - Accept: 'application/json', - 'Content-Type': 'application/x-www-form-urlencoded', + + return promise.then(() => { + expect(mock.get.mock.calls[0][0]).toEqual('http://example.com/1/2/?foo=bar&two=2&three=3'); + expect(mock.get.mock.calls[0][1]).toEqual({ + Accept: 'application/json', + 'Content-Type': 'application/x-www-form-urlencoded', + }); + done(); }); }); - it('should merge defaultData into data argument', () => { + it('should merge defaultData into data argument', (done) => { const mock = getBackendMock({ text: () => Promise.resolve('{"status":"ok"}'), headers: new Headers({ @@ -268,18 +288,22 @@ describe('Backend', () => { payloadFormat: 'json', defaultData: { one: 1, two: 2, four: { fourOne: true } }, }); - endpoint({ + const promise = endpoint({ two: 'updated', three: 3, four: { fourTwo: true }, }); - expect(mock.post.mock.calls[0][0]).toEqual('http://example.com/'); - expect(mock.post.mock.calls[0][1]).toEqual(JSON.stringify({ - one: 1, - two: 'updated', - four: { fourOne: true, fourTwo: true }, - three: 3, - })); + + return promise.then(() => { + expect(mock.post.mock.calls[0][0]).toEqual('http://example.com/'); + expect(mock.post.mock.calls[0][1]).toEqual(JSON.stringify({ + one: 1, + two: 'updated', + four: { fourOne: true, fourTwo: true }, + three: 3, + })); + done(); + }); }); }); }); diff --git a/admin/client/src/state/records/RecordsActions.js b/admin/client/src/state/records/RecordsActions.js index 2cbf4cf2a..26470aa5d 100644 --- a/admin/client/src/state/records/RecordsActions.js +++ b/admin/client/src/state/records/RecordsActions.js @@ -52,6 +52,7 @@ export function fetchRecords(recordType, method, url) { type: ACTION_TYPES.FETCH_RECORDS_FAILURE, payload: { error: err, recordType }, }); + throw err; }); }; } @@ -92,6 +93,7 @@ export function fetchRecord(recordType, method, url) { type: ACTION_TYPES.FETCH_RECORD_FAILURE, payload: { error: err, recordType }, }); + throw err; }); }; } @@ -129,6 +131,7 @@ export function deleteRecord(recordType, id, method, url, headers = {}) { type: ACTION_TYPES.DELETE_RECORD_FAILURE, payload: { error: err, recordType, id }, }); + throw err; }); }; } diff --git a/main.css b/main.css new file mode 100644 index 000000000..f282db8df --- /dev/null +++ b/main.css @@ -0,0 +1,53 @@ +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) +/******/ return installedModules[moduleId].exports; +/******/ +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ exports: {}, +/******/ id: moduleId, +/******/ loaded: false +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.loaded = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(0); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ function(module, exports, __webpack_require__) { + + (function webpackMissingModule() { throw new Error("Cannot find module \"—watch\""); }()); + (function webpackMissingModule() { throw new Error("Cannot find module \"—profile\""); }()); + + +/***/ } +/******/ ]); +/*# sourceMappingURL=main.css.map*/ \ No newline at end of file