{"version":3,"sources":["actions/actionTypes.js","reducers/initialState.js","reducers/index.js","reducers/sampleReducer.js","reducers/authenticationReducer.js","assets/github.svg","assets/contribution.svg","helpers/appinsights.js","helpers/handle-response.js","helpers/query-param.js","components/shared/Constants.js","components/sidebar/SideBar.js","components/ContentHeader/ContentHeader.js","components/ItemTags/ItemTags.js","services/user.service.js","services/library.service.js","services/github.service.js","components/MetricBar/MetricBar.js","components/ItemList/ItemList.js","components/Main/Main.js","actions/userActions.js","components/shared/SignInButton.js","components/Header/UserPersona.js","components/Header/AuthControl.js","components/Header/Header.js","components/DetailView/ActionBar.js","components/DetailView/DetailPageContent.js","components/shared/PageHeaderWithBackButton.js","components/DetailView/DetailPageHeader.js","actions/sampleActions.js","components/DetailView/DetailView.js","components/shared/Button.styles.js","components/Contribute/ContributionForm.js","components/Contribute/ContributionsList.js","components/Contribute/SignInDialog.js","components/Contribute/Contribute.js","App.js","index.js","helpers/registerIcons.js"],"names":["sampleActionTypes","GETSAMPLES_SUCCESS","userActionTypes","GETCURRENTUSER_REQUEST","GETCURRENTUSER_SUCCESS","GETCURRENTUSER_FAILURE","LOGOUT","reducers_initialState","samples","authentication","loggedIn","user","loading","rootReducer","combineReducers","state","arguments","length","undefined","initialState","action","type","Object","objectSpread","_extends","assign","target","i","source","key","prototype","hasOwnProperty","call","apply","this","_objectWithoutProperties","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","_ref2","react_default","a","createElement","d","github_SvgGithub","_ref","svgRef","props","width","height","viewBox","ref","ForwardRef","forwardRef","__webpack_require__","p","contribution_extends","contribution_objectWithoutProperties","contribution_objectWithoutPropertiesLoose","contribution_ref2","contribution_SvgContribution","contribution_ForwardRef","trackEvent","eventName","eventData","appInsights","window","trackException","exception","properties","handleResponse","response","text","then","ok","error","status","statusText","errorString","trackTrace","trackError","url","Promise","reject","ex","method","handleJsonResponse","data","JSON","parse","queryStringToParams","queryString","split","pairs","result","forEach","pair","decodeURIComponent","paramsToQueryString","params","map","encodeURIComponent","join","technologies","solutionAreas","languages","SideBar","_this","classCallCheck","possibleConstructorReturn","getPrototypeOf","filters","initialFilters","category","item","includes","ev","checked","_this2","currentFilters","categoryArray","push","filter","setState","ChangeUrl","concat","location","search","solutionareas","history","_this3","checkboxStyles","index","root","marginTop","marginBottom","className","Constants","technology","Checkbox","styles","label","defaultChecked","isChecked","onChange","checkboxclicked","language","solutionarea","Component","SideBarContainer","connect","withRouter","ContentHeader","filterText","initialSearchText","sortby","initialSortBy","newValue","resultCount","style","marginLeft","Link","as","to","Icon","iconName","SearchBox","placeholder","value","onSearch","filterTextChanged","onClear","border","borderRadius","Dropdown","defaultSelectedKey","options","display","marginRight","color","fontSize","title","dropdown","sortbyChanged","ContentHeaderContainer","ItemTags","allTags","toConsumableArray","s","tags","userService","getCurrentUser","fetch","logout","libraryService","getAllSamples","submitNewSample","requestOptions","body","stringify","headers","Content-Type","catch","updateUserSentimentStats","sentimentPayload","updateDownloadCount","id","githubService","getReadMe","repoUrl","readMeUrl","getRawContentUrl","getLicense","licenseUrl","contentUrl","getArmTemplate","templateUrl","fileName","rawUrl","replace","MetricBar","sentimentAction","updateSentiment","choice","likeChanges","dislikeChanges","localStorage","setItem","Id","LikeChanges","DislikeChanges","_this$props","author","downloads","createddate","likes","dislikes","createdonLocaleDate","Date","toLocaleDateString","likeIconName","likeTitle","dislikeIconName","dislikeTitle","button","padding","IconButton","iconStyle","icon","tooltipStyles","tooltip","iconProps","ariaLabel","onClick","handleLikeClick","handleDislikeClick","nextProps","prevState","getItem","ItemList","_onRenderCell","bind","assertThisInitialized","disableHover","components_MetricBar_MetricBar","totaldownloads","description","components_ItemTags_ItemTags","FocusZone","direction","FocusZoneDirection","vertical","List","items","filteredSamples","onRenderCell","Main","getFiltersFromQueryParams","showContentHeaderShadow","onListScrollEvent","currentfilters","RegExp","filtertext","el","match","repository","some","x","categories","t","Sort","list","sort","b","dateA","titleA","toLowerCase","titleB","e","scrollTop","contentheaderShadowStyle","boxShadow","components_sidebar_SideBar","components_ContentHeader_ContentHeader","onScroll","components_ItemList_ItemList","MainContainer","userActions","getCurrentUserRequest","getCurrentUserSuccess","getCurrentUserFailure","SignInButton","currentLocation","PrimaryButton","fontWeight","primary","handleButtonClick","UserPersona","theme","getTheme","personaStyles","palette","white","float","selectors",":hover","$primaryText","details","primaryText","Persona","displayName","imageUrl","avatarUrl","imageAlt","fullName","size","PersonaSize","size28","onRenderInitials","_onRenderInitials","UserPersonaContainer","AuthControl","_renderMenuList","_onSignoutClick","_onContributionsClick","userName","itemType","ContextualMenuItemType","Header","Divider","menuListProps","defaultRender","shared_SignInButton","ActionButton","onRenderMenuIcon","_renderMenuIcon","menuProps","onRenderMenuList","shouldFocusOnMount","getMenuItems","Header_UserPersona","mapDispatchToProps","AuthControlContainer","linkStyles","lineHeight","&:active, &:hover, &:active:hover, &:visited","href","Header_AuthControl","HeaderContainer","ActionBar","outboundRepoClick","outboundDeployClick","openInVSCodeClick","trackUserActionEvent","template","getOpenInVSCodeLink","disabled","getDeployLink","DetailPageContent","armTemplateText","markdownText","licenseText","selectedKey","handleLinkClick","prevProps","r","pivotItem","itemKey","license","_this4","_this$state","Pivot","paddingLeft","linkSize","PivotLinkSize","large","onLinkClick","PivotItem","headerText","ScrollablePane","esm","borderTop","PageHeaderWithBackButton","handleHomeButtonClick","children","DetailPageHeader","components_shared_PageHeaderWithBackButton","sampleActions","getSamplesSuccess","DetailView","sample","setCurrentItemInState","currentItem","trackPageLoadEvent","DetailView_DetailPageHeader","components_DetailView_ActionBar","components_DetailView_DetailPageContent","DetailViewContainer","buttonStyles","minWidth","paddingRight","secondaryButtonStyles","mergeStyleSets","backgroundColor","rootHovered","showForm","dialogProps","isVisible","content","ContributionForm","onAddButtonClick","onCancelButtonClick","handleInputChange","onTitleChange","onDescriptionChange","onDismissDialog","validateForm","getFormValidationErrors","selected","event","name","defineProperty","errors","showDialog","resetForm","technologiesOptions","languageOptions","l","solutionAreasOptions","Dialog","dialogContentProps","hidden","onDismiss","Array","isArray","message","String","TextField","required","resizable","rows","multiline","technologiesOptionsChanged","multiSelect","languageOptionChanged","solutionAreasOptionsChanged","commonStyles","DefaultButton","ContributionsList","Label","paddingTop","paddingBottom","ContributionsListContainer","SignInDialog","subText","modalProps","isBlocking","DialogFooter","actionsRight","textAlign","SignInDialogContainer","ContributionsPage","Contribute_ContributionForm","Contribute_ContributionsList","Contribute_SignInDialog","App","showErrorDialog","onDismissErrorDialog","components_Header_Header","Switch","Route","exact","path","component","AppContainer","store","createStore","registerIcons","icons","GitHub-12px","GitHub-16px","contribution-svg","initializeIcons","rootElement","document","getElementById","ReactDOM","render","BrowserRouter","es","src_App_0"],"mappings":"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","file":"static/js/main.c26b1971.chunk.js","sourcesContent":["export const sampleActionTypes = {\r\n GETSAMPLES_SUCCESS: \"GETSAMPLES_SUCCESS\"\r\n};\r\n\r\nexport const userActionTypes = {\r\n GETCURRENTUSER_REQUEST: \"GETCURRENTUSER_REQUEST\",\r\n GETCURRENTUSER_SUCCESS: \"GETCURRENTUSER_SUCCESS\",\r\n GETCURRENTUSER_FAILURE: \"GETCURRENTUSER_FAILURE\",\r\n LOGOUT: \"LOGOUT\"\r\n};\r\n","export default {\r\n samples: [],\r\n authentication: {\r\n loggedIn: false,\r\n user: {},\r\n loading: false\r\n }\r\n};\r\n","import { combineReducers, createStore } from \"redux\";\r\n\r\nimport samples from \"./sampleReducer\";\r\nimport authentication from \"./authenticationReducer\";\r\n\r\nconst rootReducer = combineReducers({\r\n samples,\r\n authentication\r\n});\r\n\r\nexport default function configureStore(initialState) {\r\n return createStore(rootReducer, initialState);\r\n}\r\n","import { sampleActionTypes } from \"../actions/actionTypes\";\r\nimport initialState from \"./initialState\";\r\n\r\nexport default function sampleReducer(state = initialState.samples, action) {\r\n switch (action.type) {\r\n case sampleActionTypes.GETSAMPLES_SUCCESS:\r\n return action.samples;\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { userActionTypes } from \"../actions/actionTypes\";\r\nimport initialState from \"./initialState\";\r\n\r\nexport default function authenticationReducer(\r\n state = initialState.authentication,\r\n action\r\n) {\r\n switch (action.type) {\r\n case userActionTypes.GETCURRENTUSER_REQUEST:\r\n return {\r\n ...state,\r\n loading: true\r\n };\r\n case userActionTypes.GETCURRENTUSER_SUCCESS:\r\n return {\r\n ...state,\r\n loading: false,\r\n loggedIn: true,\r\n user: action.user\r\n };\r\n case userActionTypes.GETCURRENTUSER_FAILURE:\r\n return {\r\n ...state,\r\n loading: false,\r\n loggedIn: false,\r\n user: {}\r\n };\r\n case userActionTypes.LOGOUT:\r\n return {\r\n ...state,\r\n loggedIn: false,\r\n user: {}\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 =\n/*#__PURE__*/\nReact.createElement(\"path\", {\n d: \"M6.5 0.146484C7.05078 0.146484 7.58203 0.21875 8.09375 0.363281C8.60547 0.503906 9.08203 0.705078 9.52344 0.966797C9.96875 1.22852 10.373 1.54297 10.7363 1.91016C11.1035 2.27344 11.418 2.67773 11.6797 3.12305C11.9414 3.56445 12.1426 4.04102 12.2832 4.55273C12.4277 5.06445 12.5 5.5957 12.5 6.14648C12.5 6.79102 12.4004 7.41211 12.2012 8.00977C12.0059 8.60742 11.7285 9.15625 11.3691 9.65625C11.0098 10.1562 10.5781 10.5957 10.0742 10.9746C9.57031 11.3496 9.01172 11.6387 8.39844 11.8418C8.38672 11.8457 8.36914 11.8496 8.3457 11.8535C8.32227 11.8535 8.30469 11.8535 8.29297 11.8535C8.19922 11.8535 8.125 11.8262 8.07031 11.7715C8.01562 11.7168 7.98828 11.6445 7.98828 11.5547C7.98828 11.2773 7.98828 11.0039 7.98828 10.7344C7.99219 10.4609 7.99414 10.1855 7.99414 9.9082C7.99414 9.70898 7.96484 9.50781 7.90625 9.30469C7.84766 9.10156 7.74219 8.93164 7.58984 8.79492C8.04297 8.74414 8.43945 8.65234 8.7793 8.51953C9.12305 8.38281 9.4082 8.19531 9.63477 7.95703C9.86523 7.71875 10.0371 7.42578 10.1504 7.07812C10.2676 6.72656 10.3262 6.3125 10.3262 5.83594C10.3262 5.53125 10.2754 5.24414 10.1738 4.97461C10.0723 4.70117 9.91797 4.45117 9.71094 4.22461C9.75391 4.11523 9.78516 4.00195 9.80469 3.88477C9.82422 3.76758 9.83398 3.65039 9.83398 3.5332C9.83398 3.38086 9.81641 3.23047 9.78125 3.08203C9.75 2.92969 9.70703 2.78125 9.65234 2.63672C9.63281 2.62891 9.61133 2.625 9.58789 2.625C9.56445 2.625 9.54297 2.625 9.52344 2.625C9.39844 2.625 9.26758 2.64648 9.13086 2.68945C8.99414 2.72852 8.85742 2.7793 8.7207 2.8418C8.58789 2.90039 8.45898 2.9668 8.33398 3.04102C8.20898 3.11523 8.09766 3.18555 8 3.25195C7.51172 3.11523 7.01172 3.04688 6.5 3.04688C5.98828 3.04688 5.48828 3.11523 5 3.25195C4.90234 3.18555 4.79102 3.11523 4.66602 3.04102C4.54102 2.9668 4.41016 2.90039 4.27344 2.8418C4.14062 2.7793 4.00391 2.72852 3.86328 2.68945C3.72656 2.64648 3.59766 2.625 3.47656 2.625C3.45703 2.625 3.43555 2.625 3.41211 2.625C3.38867 2.625 3.36719 2.62891 3.34766 2.63672C3.29297 2.78125 3.24805 2.92969 3.21289 3.08203C3.18164 3.23047 3.16602 3.38086 3.16602 3.5332C3.16602 3.65039 3.17578 3.76758 3.19531 3.88477C3.21484 4.00195 3.24609 4.11523 3.28906 4.22461C3.08203 4.45117 2.92773 4.70117 2.82617 4.97461C2.72461 5.24414 2.67383 5.53125 2.67383 5.83594C2.67383 6.3125 2.73047 6.72461 2.84375 7.07227C2.96094 7.41992 3.13281 7.71484 3.35938 7.95703C3.58984 8.19531 3.875 8.38281 4.21484 8.51953C4.55469 8.65625 4.95117 8.75 5.4043 8.80078C5.29102 8.90234 5.20312 9.02539 5.14062 9.16992C5.08203 9.31055 5.04297 9.45508 5.02344 9.60352C4.91797 9.6543 4.80664 9.69336 4.68945 9.7207C4.57227 9.74805 4.45508 9.76172 4.33789 9.76172C4.08789 9.76172 3.88086 9.70312 3.7168 9.58594C3.55273 9.46875 3.40625 9.30859 3.27734 9.10547C3.23047 9.03125 3.17383 8.95703 3.10742 8.88281C3.04102 8.80859 2.96875 8.74219 2.89062 8.68359C2.8125 8.625 2.72852 8.57812 2.63867 8.54297C2.54883 8.50391 2.45508 8.48438 2.35742 8.48438C2.3418 8.48438 2.31836 8.48633 2.28711 8.49023C2.25586 8.49023 2.22461 8.49414 2.19336 8.50195C2.16602 8.50977 2.14062 8.52148 2.11719 8.53711C2.09375 8.55273 2.08203 8.57227 2.08203 8.5957C2.08203 8.64258 2.10938 8.68945 2.16406 8.73633C2.21875 8.7793 2.26367 8.8125 2.29883 8.83594L2.31641 8.84766C2.40234 8.91406 2.47656 8.97852 2.53906 9.04102C2.60547 9.09961 2.66406 9.16406 2.71484 9.23438C2.76562 9.30078 2.81055 9.375 2.84961 9.45703C2.89258 9.53516 2.9375 9.625 2.98438 9.72656C3.11719 10.0312 3.30273 10.2539 3.54102 10.3945C3.7832 10.5312 4.07031 10.5996 4.40234 10.5996C4.50391 10.5996 4.60547 10.5938 4.70703 10.582C4.80859 10.5664 4.91016 10.5488 5.01172 10.5293V11.5488C5.01172 11.6426 4.98242 11.7168 4.92383 11.7715C4.86914 11.8262 4.79492 11.8535 4.70117 11.8535C4.68945 11.8535 4.67188 11.8535 4.64844 11.8535C4.62891 11.8496 4.61328 11.8457 4.60156 11.8418C3.98828 11.6426 3.42969 11.3555 2.92578 10.9805C2.42188 10.6016 1.99023 10.1621 1.63086 9.66211C1.27148 9.1582 0.992188 8.60742 0.792969 8.00977C0.597656 7.41211 0.5 6.79102 0.5 6.14648C0.5 5.5957 0.570312 5.06445 0.710938 4.55273C0.855469 4.04102 1.05859 3.56445 1.32031 3.12305C1.58203 2.67773 1.89453 2.27344 2.25781 1.91016C2.625 1.54297 3.0293 1.22852 3.4707 0.966797C3.91602 0.705078 4.39453 0.503906 4.90625 0.363281C5.41797 0.21875 5.94922 0.146484 6.5 0.146484Z\"\n});\n\nvar SvgGithub = function SvgGithub(_ref) {\n var svgRef = _ref.svgRef,\n props = _objectWithoutProperties(_ref, [\"svgRef\"]);\n\n return React.createElement(\"svg\", _extends({\n width: 13,\n height: 12,\n viewBox: \"0 0 13 12\",\n ref: svgRef\n }, props), _ref2);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return React.createElement(SvgGithub, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/github.8723811b.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 =\n/*#__PURE__*/\nReact.createElement(\"path\", {\n d: \"M13 6.32812V13.0625L7.5 15.8125L2 13.0625V6.33594L0.601562 2.49219L4.75 4.5625L7.09375 3.39844L8.21094 0.046875L14.1094 3L13 6.32812ZM8.10938 3.5L12.2109 5.54688L12.8906 3.50781L8.78906 1.45312L8.10938 3.5ZM5.86719 5.125L6.90625 5.64062L7.78125 8.05469L11.3828 6.25L7.5 4.3125L5.86719 5.125ZM2.39844 4.50781L2.90625 5.89062L6.60156 7.74219L6.09375 6.35938L2.39844 4.50781ZM3 12.4453L7 14.4453V9.0625L3 7.0625V12.4453ZM12 12.4453V7.0625L8 9.0625V14.4453L12 12.4453Z\"\n});\n\nvar SvgContribution = function SvgContribution(_ref) {\n var svgRef = _ref.svgRef,\n props = _objectWithoutProperties(_ref, [\"svgRef\"]);\n\n return React.createElement(\"svg\", _extends({\n width: 15,\n height: 16,\n viewBox: \"0 0 15 16\",\n ref: svgRef\n }, props), _ref2);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return React.createElement(SvgContribution, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/contribution.10668b0f.svg\";\nexport { ForwardRef as ReactComponent };","export function trackEvent(eventName, eventData) {\r\n let appInsights = window.appInsights;\r\n if (typeof appInsights !== \"undefined\") {\r\n appInsights.trackEvent(eventName, eventData);\r\n }\r\n}\r\n\r\nexport function trackError(errorString, properties) {\r\n let appInsights = window.appInsights;\r\n if (typeof appInsights !== \"undefined\") {\r\n appInsights.trackTrace(errorString, properties, 3);\r\n }\r\n}\r\n\r\nexport function trackException(exception, properties) {\r\n let appInsights = window.appInsights;\r\n if (typeof appInsights !== \"undefined\") {\r\n appInsights.trackException(exception, null, properties);\r\n }\r\n}\r\n","import { trackError, trackException } from \"./appinsights\";\r\n\r\nexport function handleResponse(response) {\r\n try {\r\n return response.text().then(text => {\r\n if (response.ok) {\r\n return text;\r\n }\r\n const error = {\r\n status: response.status,\r\n error: text || response.statusText\r\n };\r\n trackError(error.error, { ...error, url: response.url });\r\n return Promise.reject(error);\r\n });\r\n } catch (ex) {\r\n trackException(ex, { url: response.url, method: \"handleResponse\" });\r\n return Promise.reject({\r\n status: -1,\r\n error: \"Encountered unexpected exception.\"\r\n });\r\n }\r\n}\r\n\r\nexport function handleJsonResponse(response) {\r\n return handleResponse(response).then(data => {\r\n try {\r\n return JSON.parse(data);\r\n } catch (ex) {\r\n trackException(ex, { url: response.url, method: \"handleJsonResponse\" });\r\n return Promise.reject({\r\n status: -1,\r\n error: \"Encountered unexpected exception.\"\r\n });\r\n }\r\n });\r\n}\r\n","export function queryStringToParams(queryString) {\r\n if (queryString.indexOf(\"?\") > -1) {\r\n queryString = queryString.split(\"?\")[1];\r\n }\r\n var pairs = queryString.split(\"&\");\r\n var result = {};\r\n pairs.forEach(function(pair) {\r\n pair = pair.split(\"=\");\r\n if (pair[0] && pair[0].length > 0) {\r\n result[pair[0]] = decodeURIComponent(pair[1] || \"\");\r\n }\r\n });\r\n return result;\r\n}\r\n\r\nexport function paramsToQueryString(params) {\r\n var queryString = Object.keys(params)\r\n .map(key => {\r\n return encodeURIComponent(key) + \"=\" + encodeURIComponent(params[key]);\r\n })\r\n .join(\"&\");\r\n return \"?\" + queryString;\r\n}\r\n","export const technologies = [\r\n \"Functions 2.x\",\r\n \"Functions 1.x\",\r\n \"Logic Apps\",\r\n \"Blob Storage\",\r\n \"Storage Queue\",\r\n \"Cosmos DB\",\r\n \"Cognitive Services\",\r\n \"Azure Active Directory\",\r\n \"App Service\",\r\n \"Key Vault\",\r\n \"SQL Server\",\r\n \"Service Bus Queue\",\r\n \"Event Grid\"\r\n];\r\n\r\nexport const solutionAreas = [\r\n \"Web API\",\r\n \"Data Processing\",\r\n \"Integration\",\r\n \"Authentication\",\r\n \"Automation\",\r\n \"Event Processing\",\r\n \"Machine Learning\",\r\n \"Scheduled Jobs\",\r\n \"Static Website\",\r\n \"Gaming\",\r\n \"IoT\"\r\n];\r\n\r\nexport const languages = [\r\n \"JavaScript\",\r\n \"TypeScript\",\r\n \"Java\",\r\n \"C#\",\r\n \"C# Script\",\r\n \"F#\",\r\n \"Python\",\r\n \"PowerShell\"\r\n];\r\n\r\nexport const NotApplicableLanguage = \"na\";\r\nexport const OtherSolutionArea = \"Other\";\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport { Checkbox } from \"office-ui-fabric-react/lib/index\";\r\nimport {\r\n paramsToQueryString,\r\n queryStringToParams,\r\n trackEvent\r\n} from \"../../helpers\";\r\n\r\nimport * as Constants from \"../shared/Constants\";\r\nimport \"./SideBar.css\";\r\n\r\nclass SideBar extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n filters: this.props.initialFilters\r\n };\r\n }\r\n\r\n isChecked(category, item) {\r\n return this.state.filters[category].includes(item);\r\n }\r\n\r\n checkboxclicked(ev, checked, category, item) {\r\n var currentFilters = this.state.filters;\r\n var categoryArray = currentFilters[category];\r\n if (!checked) {\r\n categoryArray = categoryArray.filter(i => i !== item);\r\n } else {\r\n categoryArray.push(item);\r\n }\r\n\r\n currentFilters[category] = categoryArray;\r\n this.setState({ filters: currentFilters }, () => this.ChangeUrl());\r\n trackEvent(`/filter/change/${category}`, currentFilters);\r\n }\r\n\r\n ChangeUrl() {\r\n var params = queryStringToParams(this.props.location.search);\r\n delete params[\"technology\"];\r\n delete params[\"language\"];\r\n delete params[\"solutionarea\"];\r\n if (this.state.filters.technologies.length > 0) {\r\n params[\"technology\"] = this.state.filters.technologies.join();\r\n }\r\n if (this.state.filters.languages.length > 0) {\r\n params[\"language\"] = this.state.filters.languages.join();\r\n }\r\n if (this.state.filters.solutionareas.length > 0) {\r\n params[\"solutionarea\"] = this.state.filters.solutionareas.join();\r\n }\r\n\r\n this.props.history.push(paramsToQueryString(params));\r\n }\r\n\r\n render() {\r\n const checkboxStyles = index => {\r\n return {\r\n root: {\r\n marginTop: index === 0 ? \"9px\" : \"0px\",\r\n marginBottom: \"5px\"\r\n }\r\n };\r\n };\r\n\r\n return (\r\n
\r\n
Filter by
\r\n
\r\n Technology\r\n {Constants.technologies.map((technology, index) => (\r\n \r\n this.checkboxclicked(ev, checked, \"technologies\", technology)\r\n }\r\n />\r\n ))}\r\n
\r\n\r\n
\r\n Language\r\n {Constants.languages.map((language, index) => (\r\n \r\n this.checkboxclicked(ev, checked, \"languages\", language)\r\n }\r\n />\r\n ))}\r\n
\r\n\r\n
\r\n Solution Area\r\n {Constants.solutionAreas.map((solutionarea, index) => (\r\n \r\n this.checkboxclicked(ev, checked, \"solutionareas\", solutionarea)\r\n }\r\n />\r\n ))}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({});\r\n\r\nconst mapDispatchToProps = {};\r\n\r\nconst SideBarContainer = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(SideBar);\r\n\r\nexport default withRouter(SideBarContainer);\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport {\r\n SearchBox,\r\n Dropdown,\r\n Icon,\r\n Link as FabricLink\r\n} from \"office-ui-fabric-react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport {\r\n paramsToQueryString,\r\n queryStringToParams,\r\n trackEvent\r\n} from \"../../helpers\";\r\nimport \"./ContentHeader.css\";\r\n\r\nclass ContentHeader extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n filterText: this.props.initialSearchText,\r\n sortby: this.props.initialSortBy\r\n };\r\n }\r\n\r\n filterTextChanged(newValue) {\r\n var params = queryStringToParams(this.props.location.search);\r\n delete params[\"filtertext\"];\r\n if (newValue && newValue !== \"\") {\r\n params[\"filtertext\"] = newValue;\r\n }\r\n\r\n this.setState({ filterText: newValue });\r\n this.props.history.push(paramsToQueryString(params));\r\n trackEvent(\"/filter/change/searchtext\", newValue);\r\n }\r\n\r\n sortbyChanged(newValue) {\r\n var params = queryStringToParams(this.props.location.search);\r\n delete params[\"sortby\"];\r\n if (newValue !== \"totaldownloads\") {\r\n params[\"sortby\"] = newValue;\r\n }\r\n this.setState({ sortby: newValue });\r\n this.props.history.push(paramsToQueryString(params));\r\n trackEvent(\"/sortby/change\", newValue);\r\n }\r\n\r\n render() {\r\n const dropdownStyles = () => {\r\n return {\r\n root: {\r\n display: \"flex\"\r\n },\r\n label: {\r\n marginRight: \"10px\",\r\n color: \"#000000\",\r\n fontSize: \"12px\"\r\n },\r\n title: {\r\n color: \"#595959;\",\r\n border: \"1px solid #BCBCBC\",\r\n borderRadius: \"2px\",\r\n fontSize: \"12px\"\r\n },\r\n dropdown: {\r\n width: 150\r\n }\r\n };\r\n };\r\n\r\n const searchBoxStyles = () => {\r\n return {\r\n root: {\r\n border: \"1px solid #BCBCBC\",\r\n borderRadius: \"3px\"\r\n }\r\n };\r\n };\r\n\r\n let resultCount = this.props.samples.length;\r\n return (\r\n
\r\n
\r\n
\r\n Azure serverless community library\r\n
\r\n
\r\n \r\n
\r\n \r\n
Contributions
\r\n
\r\n \r\n
\r\n
\r\n this.filterTextChanged(newValue)}\r\n onClear={() => this.filterTextChanged(\"\")}\r\n styles={searchBoxStyles}\r\n />\r\n
\r\n
\r\n Displaying {resultCount} {resultCount === 1 ? \"result\" : \"results\"}\r\n
\r\n
\r\n this.sortbyChanged(item.key)}\r\n />\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({});\r\n\r\nconst ContentHeaderContainer = connect(mapStateToProps)(ContentHeader);\r\n\r\nexport default withRouter(ContentHeaderContainer);\r\n","import React, { Component } from \"react\";\r\nimport * as Constants from \"../shared/Constants\";\r\nimport \"./ItemTags.css\";\r\n\r\nclass ItemTags extends Component {\r\n render() {\r\n // Tags contain technologies, language, solutionareas and custom tags\r\n let allTags = [];\r\n\r\n if (this.props.technologies) {\r\n allTags.push(...this.props.technologies);\r\n }\r\n if (\r\n this.props.language !== \"\" &&\r\n this.props.language !== Constants.NotApplicableLanguage\r\n ) {\r\n allTags.push(this.props.language);\r\n }\r\n if (this.props.solutionareas) {\r\n let solutionareas = this.props.solutionareas.filter(\r\n s => s !== Constants.OtherSolutionArea\r\n );\r\n allTags.push(...solutionareas);\r\n }\r\n\r\n if (this.props.tags) {\r\n allTags.push(...this.props.tags);\r\n }\r\n\r\n return (\r\n
\r\n Tags :\r\n {allTags.map((value, index) => (\r\n \r\n {value}\r\n \r\n ))}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default ItemTags;\r\n","import { handleResponse, handleJsonResponse } from \"../helpers\";\r\n\r\nexport const userService = {\r\n getCurrentUser,\r\n logout\r\n};\r\n\r\nfunction getCurrentUser() {\r\n const requestOptions = {\r\n method: \"GET\"\r\n };\r\n return fetch(\"/api/user\", requestOptions).then(handleJsonResponse);\r\n}\r\n\r\nfunction logout() {\r\n const requestOptions = {\r\n method: \"GET\"\r\n };\r\n return fetch(\"/api/user/logout\", requestOptions).then(handleResponse);\r\n}\r\n","import { handleResponse, handleJsonResponse } from \"../helpers\";\r\nimport { trackException } from \"../helpers/appinsights\";\r\n\r\nexport const libraryService = {\r\n getAllSamples,\r\n submitNewSample,\r\n updateUserSentimentStats,\r\n updateDownloadCount\r\n};\r\n\r\nfunction getAllSamples() {\r\n const requestOptions = {\r\n method: \"GET\"\r\n };\r\n\r\n return fetch(\"/api/Library\", requestOptions).then(handleJsonResponse);\r\n}\r\n\r\nfunction submitNewSample(item) {\r\n const requestOptions = {\r\n method: \"PUT\",\r\n body: JSON.stringify(item),\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n }\r\n };\r\n return fetch(\"/api/library\", requestOptions)\r\n .then(handleJsonResponse)\r\n .catch(data => {\r\n let error = data.error;\r\n if (data.status === 400) {\r\n try {\r\n error = JSON.parse(data.error);\r\n } catch (ex) {\r\n trackException(ex, { method: \"submitNewSample\" });\r\n }\r\n }\r\n return Promise.reject({\r\n status: data.status,\r\n error: error\r\n });\r\n });\r\n}\r\n\r\nfunction updateUserSentimentStats(sentimentPayload) {\r\n const requestOptions = {\r\n method: \"PUT\",\r\n body: JSON.stringify(sentimentPayload),\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n }\r\n };\r\n return fetch(\"/api/metrics/sentiment\", requestOptions).then(handleResponse);\r\n}\r\n\r\nfunction updateDownloadCount(id) {\r\n const requestOptions = {\r\n method: \"PUT\",\r\n body: '\"' + id + '\"',\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n }\r\n };\r\n return fetch(\"/api/metrics/downloads\", requestOptions).then(handleResponse);\r\n}\r\n","import { handleResponse } from \"../helpers\";\r\n\r\nexport const githubService = {\r\n getReadMe,\r\n getLicense,\r\n getArmTemplate\r\n};\r\n\r\nfunction getRawContentUrl(repoUrl, fileName) {\r\n let rawUrl = repoUrl\r\n .replace(\"https://github.com\", \"https://raw.githubusercontent.com\")\r\n .replace(\"/tree/\", \"/\");\r\n rawUrl = rawUrl.includes(\"/master/\") ? rawUrl + \"/\" : rawUrl + \"/master/\";\r\n let contentUrl = rawUrl + fileName;\r\n return contentUrl;\r\n}\r\n\r\nfunction getReadMe(repoUrl) {\r\n const requestOptions = {\r\n method: \"GET\"\r\n };\r\n const readMeUrl = getRawContentUrl(repoUrl, \"README.md\");\r\n return fetch(readMeUrl, requestOptions).then(handleResponse);\r\n}\r\n\r\nfunction getLicense(licenseUrl, repoUrl) {\r\n const requestOptions = {\r\n method: \"GET\"\r\n };\r\n const contentUrl = licenseUrl || getRawContentUrl(repoUrl, \"LICENSE\");\r\n return fetch(contentUrl, requestOptions).then(handleResponse);\r\n}\r\n\r\nfunction getArmTemplate(templateUrl) {\r\n const requestOptions = {\r\n method: \"GET\"\r\n };\r\n return fetch(templateUrl, requestOptions).then(handleResponse);\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { IconButton } from \"office-ui-fabric-react\";\r\nimport { libraryService } from \"../../services\";\r\n\r\nimport \"./MetricBar.css\";\r\nclass MetricBar extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n sentimentAction: \"none\"\r\n };\r\n }\r\n\r\n static getDerivedStateFromProps(nextProps, prevState) {\r\n if (nextProps.id && nextProps.id !== prevState.id) {\r\n return { sentimentAction: localStorage.getItem(nextProps.id) };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n handleLikeClick() {\r\n // If user already liked, then decrement like count and set the sentiment state to none.\r\n // If in past disliked and choose to like the sample, then decrement dislike count and increment like count\r\n // If not action taken ealier, just increment like count and set sentiment state to liked.\r\n if (this.state.sentimentAction === \"liked\") {\r\n this.updateSentiment(\"none\", -1, 0);\r\n } else if (this.state.sentimentAction === \"disliked\") {\r\n this.updateSentiment(\"liked\", 1, -1);\r\n } else {\r\n this.updateSentiment(\"liked\", 1, 0);\r\n }\r\n }\r\n\r\n handleDislikeClick() {\r\n if (this.state.sentimentAction === \"liked\") {\r\n this.updateSentiment(\"disliked\", -1, 1);\r\n } else if (this.state.sentimentAction === \"disliked\") {\r\n this.updateSentiment(\"none\", 0, -1);\r\n } else {\r\n this.updateSentiment(\"disliked\", 0, 1);\r\n }\r\n }\r\n\r\n updateSentiment(choice, likeChanges, dislikeChanges) {\r\n localStorage.setItem(this.props.id, choice);\r\n this.setState({ sentimentAction: choice });\r\n\r\n var sentimentPayload = {\r\n Id: this.props.id,\r\n LikeChanges: likeChanges,\r\n DislikeChanges: dislikeChanges\r\n };\r\n\r\n libraryService\r\n .updateUserSentimentStats(sentimentPayload)\r\n .then(() => {\r\n // do nothing\r\n })\r\n .catch(() => {\r\n // do nothing\r\n });\r\n }\r\n\r\n render() {\r\n let { author, downloads, createddate, likes, dislikes } = this.props;\r\n let createdonDate = new Date(createddate);\r\n let createdonLocaleDate = createdonDate.toLocaleDateString();\r\n\r\n let likeIconName = \"Like\";\r\n let likeTitle = \"Like\";\r\n let dislikeIconName = \"Dislike\";\r\n let dislikeTitle = \"Dislike\";\r\n\r\n if (this.state.sentimentAction === \"liked\") {\r\n likeIconName = \"LikeSolid\";\r\n likeTitle = \"Liked\";\r\n likes = likes + 1;\r\n }\r\n\r\n if (this.state.sentimentAction === \"disliked\") {\r\n dislikeIconName = \"DislikeSolid\";\r\n dislikeTitle = \"Disliked\";\r\n dislikes = dislikes + 1;\r\n }\r\n\r\n const styles = {\r\n button: {\r\n width: 16,\r\n height: 16,\r\n padding: 0,\r\n marginLeft: 7,\r\n marginRight: 7\r\n }\r\n };\r\n return (\r\n
\r\n
\r\n \r\n By: {author} | {downloads}{\" \"}\r\n {downloads === 1 ? \"download\" : \"downloads\"} | Created on:{\" \"}\r\n {createdonLocaleDate} |\r\n \r\n
\r\n\r\n this.handleLikeClick()}\r\n />\r\n
{likes}
\r\n\r\n this.handleDislikeClick()}\r\n />\r\n
{dislikes}
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default MetricBar;\r\n","import React, { Component } from \"react\";\r\nimport {\r\n FocusZone,\r\n FocusZoneDirection,\r\n List,\r\n Link as FabricLink\r\n} from \"office-ui-fabric-react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport ItemTags from \"../ItemTags/ItemTags\";\r\nimport MetricBar from \"../MetricBar/MetricBar\";\r\n\r\nimport \"./ItemList.scss\";\r\n\r\nclass ItemList extends Component {\r\n constructor(props) {\r\n super(props);\r\n this._onRenderCell = this._onRenderCell.bind(this);\r\n this.disableHover = this.props.disableHover || false;\r\n }\r\n\r\n _onRenderCell(item, index) {\r\n let likes = item.likes ? item.likes : 0;\r\n let dislikes = item.dislikes ? item.dislikes : 0;\r\n return (\r\n
\r\n
\r\n \r\n
\r\n \r\n {item.title}\r\n \r\n
\r\n \r\n
{item.description}
\r\n \r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default ItemList;\r\n","import React, { Component } from \"react\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\nimport SideBarContainer from \"../../components/sidebar/SideBar\";\r\nimport ContentHeaderContainer from \"../ContentHeader/ContentHeader\";\r\nimport ItemList from \"../../components/ItemList/ItemList\";\r\nimport \"./Main.css\";\r\nimport { queryStringToParams } from \"../../helpers\";\r\n\r\nclass Main extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n initialFilters: this.getFiltersFromQueryParams(),\r\n showContentHeaderShadow: false\r\n };\r\n\r\n this.onListScrollEvent = this.onListScrollEvent.bind(this);\r\n }\r\n\r\n filteredSamples() {\r\n let samples = this.props.samples;\r\n let currentfilters = this.getFiltersFromQueryParams();\r\n let filter = new RegExp(currentfilters.filtertext, \"i\");\r\n samples = samples.filter(\r\n el =>\r\n el.title.match(filter) ||\r\n el.description.match(filter) ||\r\n el.language.match(filter) ||\r\n el.repository.replace(\"https://github.com/\", \"\").match(filter) ||\r\n (el.tags && el.tags.some(x => x.match(filter))) ||\r\n (el.technologies && el.technologies.some(x => x.match(filter))) ||\r\n (el.solutionareas && el.solutionareas.some(x => x.match(filter))) ||\r\n (el.author && el.author.match(filter))\r\n );\r\n\r\n if (currentfilters.categories.technologies.length > 0) {\r\n samples = samples.filter(s =>\r\n s.technologies.some(t =>\r\n currentfilters.categories.technologies.includes(t)\r\n )\r\n );\r\n }\r\n\r\n if (currentfilters.categories.languages.length > 0) {\r\n samples = samples.filter(s =>\r\n currentfilters.categories.languages.includes(s.language)\r\n );\r\n }\r\n\r\n if (currentfilters.categories.solutionareas.length > 0) {\r\n samples = samples.filter(s =>\r\n s.solutionareas.some(a =>\r\n currentfilters.categories.solutionareas.includes(a)\r\n )\r\n );\r\n }\r\n\r\n return this.Sort(samples, currentfilters.sortby);\r\n }\r\n\r\n Sort(list, sortby) {\r\n list = list.map(a => a);\r\n if (sortby === \"totaldownloads\") {\r\n list = list.sort(function(a, b) {\r\n return b.totaldownloads - a.totaldownloads;\r\n });\r\n } else if (sortby === \"createddate\") {\r\n list.sort(function(a, b) {\r\n let dateA = new Date(a.createddate),\r\n dateB = new Date(b.createddate);\r\n return dateB - dateA;\r\n });\r\n } else {\r\n list = list.sort(function(a, b) {\r\n let titleA = a.title.toLowerCase(),\r\n titleB = b.title.toLowerCase();\r\n if (titleA < titleB)\r\n //sort string ascending\r\n return -1;\r\n if (titleA > titleB) return 1;\r\n return 0; //default return value (no sorting)\r\n });\r\n }\r\n\r\n return list;\r\n }\r\n\r\n getFiltersFromQueryParams() {\r\n var filter = {\r\n categories: {\r\n technologies: [],\r\n languages: [],\r\n solutionareas: []\r\n },\r\n filtertext: \"\",\r\n sortby: \"totaldownloads\"\r\n };\r\n\r\n var params = queryStringToParams(this.props.location.search);\r\n if (params.technology && params.technology.length > 0) {\r\n filter.categories.technologies = params.technology.split(\",\");\r\n }\r\n\r\n if (params.language && params.language.length > 0) {\r\n filter.categories.languages = params.language.split(\",\");\r\n }\r\n\r\n if (params.solutionarea && params.solutionarea.length > 0) {\r\n filter.categories.solutionareas = params.solutionarea.split(\",\");\r\n }\r\n if (params.filtertext && params.filtertext.length > 0) {\r\n filter.filtertext = params.filtertext;\r\n }\r\n if (params.sortby && params.sortby.length > 0) {\r\n filter.sortby = params.sortby;\r\n }\r\n\r\n return filter;\r\n }\r\n\r\n onListScrollEvent(e) {\r\n let element = e.target;\r\n if (element.scrollTop > 0) {\r\n !this.state.showContentHeaderShadow &&\r\n this.setState({ showContentHeaderShadow: true });\r\n } else {\r\n this.state.showContentHeaderShadow &&\r\n this.setState({ showContentHeaderShadow: false });\r\n }\r\n }\r\n render() {\r\n const contentheaderShadowStyle = {\r\n boxShadow: this.state.showContentHeaderShadow\r\n ? \"0 4px 6px -6px #222\"\r\n : \"none\"\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n samples: state.samples\r\n});\r\n\r\nconst MainContainer = connect(mapStateToProps)(withRouter(Main));\r\n\r\nexport default MainContainer;\r\n","import { userActionTypes } from \"./actionTypes\";\r\n\r\nexport const userActions = {\r\n getCurrentUserRequest,\r\n getCurrentUserSuccess,\r\n getCurrentUserFailure,\r\n logout\r\n};\r\n\r\nfunction getCurrentUserRequest(user) {\r\n return {\r\n type: userActionTypes.GETCURRENTUSER_REQUEST,\r\n user\r\n };\r\n}\r\n\r\nfunction getCurrentUserSuccess(user) {\r\n return {\r\n type: userActionTypes.GETCURRENTUSER_SUCCESS,\r\n user\r\n };\r\n}\r\n\r\nfunction getCurrentUserFailure(user) {\r\n return {\r\n type: userActionTypes.GETCURRENTUSER_FAILURE,\r\n user\r\n };\r\n}\r\n\r\nfunction logout() {\r\n return {\r\n type: userActionTypes.LOGOUT\r\n };\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { PrimaryButton } from \"office-ui-fabric-react\";\r\n\r\nclass SignInButton extends Component {\r\n handleButtonClick() {\r\n const currentLocation = encodeURIComponent(window.location);\r\n window.location = `/api/user/login?returnUrl=${currentLocation}`;\r\n }\r\n\r\n render() {\r\n const buttonStyles = {\r\n root: {\r\n fontSize: \"12px\",\r\n height: \"32px\"\r\n },\r\n label: {\r\n fontWeight: \"normal\"\r\n }\r\n };\r\n\r\n return (\r\n \r\n Sign in with GitHub\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default SignInButton;\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { Persona, PersonaSize, Icon } from \"office-ui-fabric-react\";\r\nimport { getTheme } from \"office-ui-fabric-react\";\r\n\r\nclass UserPersona extends Component {\r\n _onRenderInitials() {\r\n return ;\r\n }\r\n\r\n render() {\r\n const theme = getTheme();\r\n const personaStyles = {\r\n root: {\r\n height: \"40px\",\r\n color: theme.palette.white,\r\n float: \"right\",\r\n selectors: {\r\n \":hover\": {\r\n selectors: {\r\n $primaryText: {\r\n color: theme.palette.white\r\n }\r\n }\r\n }\r\n }\r\n },\r\n details: {\r\n width: \"85px\"\r\n },\r\n primaryText: {\r\n color: theme.palette.white\r\n }\r\n };\r\n\r\n const { loading, loggedIn, user } = this.props;\r\n if (loading) {\r\n return null;\r\n }\r\n\r\n return loggedIn ? (\r\n \r\n ) : (\r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n loading: state.authentication.loading,\r\n loggedIn: state.authentication.loggedIn,\r\n user: state.authentication.user\r\n});\r\n\r\nconst UserPersonaContainer = connect(mapStateToProps)(UserPersona);\r\n\r\nexport default UserPersonaContainer;\r\n","import React, { Component } from \"react\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\nimport { ActionButton, ContextualMenuItemType } from \"office-ui-fabric-react\";\r\n\r\nimport { userService } from \"../../services\";\r\nimport { userActions } from \"../../actions/userActions\";\r\nimport SignInButton from \"../shared/SignInButton\";\r\nimport UserPersona from \"./UserPersona\";\r\n\r\nclass AuthControl extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this._renderMenuList = this._renderMenuList.bind(this);\r\n this._onSignoutClick = this._onSignoutClick.bind(this);\r\n this._onContributionsClick = this._onContributionsClick.bind(this);\r\n }\r\n\r\n getMenuItems() {\r\n const { user } = this.props;\r\n const userName =\r\n user.fullName && user.fullName !== \"\" ? user.fullName : user.displayName;\r\n\r\n return [\r\n {\r\n key: \"Header\",\r\n itemType: ContextualMenuItemType.Header,\r\n text: \"Logged in as: \" + userName\r\n },\r\n {\r\n key: \"divider_1\",\r\n itemType: ContextualMenuItemType.Divider\r\n },\r\n {\r\n key: \"contributions\",\r\n text: \"My contributions\",\r\n onClick: this._onContributionsClick\r\n },\r\n {\r\n key: \"divider_1\",\r\n itemType: ContextualMenuItemType.Divider\r\n },\r\n {\r\n key: \"signOut\",\r\n text: \"Sign out\",\r\n onClick: this._onSignoutClick\r\n }\r\n ];\r\n }\r\n\r\n _renderMenuIcon() {\r\n return null;\r\n }\r\n\r\n _renderMenuList(menuListProps, defaultRender) {\r\n const { loggedIn } = this.props;\r\n if (loggedIn) {\r\n return
{defaultRender(menuListProps)}
;\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n _onContributionsClick() {\r\n this.props.history.push(\"/contribute\");\r\n }\r\n\r\n _onSignoutClick() {\r\n this.props.logout(); // clear the redux store before making a call to the backend\r\n userService\r\n .logout()\r\n .then(() => {\r\n // do nothing\r\n })\r\n .catch(() => {\r\n // do nothing\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n loggedIn: state.authentication.loggedIn,\r\n user: state.authentication.user\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n logout: userActions.logout\r\n};\r\n\r\nconst AuthControlContainer = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(AuthControl);\r\n\r\nexport default withRouter(AuthControlContainer);\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { Link } from \"office-ui-fabric-react\";\r\nimport { getTheme } from \"office-ui-fabric-react\";\r\n\r\nimport \"./Header.scss\";\r\nimport AuthControl from \"./AuthControl\";\r\n\r\nclass Header extends Component {\r\n render() {\r\n const theme = getTheme();\r\n const linkStyles = {\r\n root: {\r\n marginLeft: \"15px\",\r\n lineHeight: \"40px\",\r\n fontSize: \"14px\",\r\n color: theme.palette.white,\r\n selectors: {\r\n \"&:active, &:hover, &:active:hover, &:visited\": {\r\n color: theme.palette.white\r\n }\r\n }\r\n }\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n Microsoft Azure\r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n loggedIn: state.authentication.loggedIn\r\n});\r\n\r\nconst HeaderContainer = connect(mapStateToProps)(Header);\r\n\r\nexport default HeaderContainer;\r\n","import React, { Component } from \"react\";\r\nimport { Icon, Link as FabricLink } from \"office-ui-fabric-react\";\r\nimport { trackEvent } from \"../../helpers\";\r\nimport { libraryService } from \"../../services\";\r\nimport \"./ActionBar.scss\";\r\n\r\nclass ActionBar extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.outboundRepoClick = this.outboundRepoClick.bind(this);\r\n this.outboundDeployClick = this.outboundDeployClick.bind(this);\r\n this.openInVSCodeClick = this.openInVSCodeClick.bind(this);\r\n this.trackUserActionEvent = this.trackUserActionEvent.bind(this);\r\n }\r\n\r\n outboundDeployClick() {\r\n this.updateDownloadCount(this.props.id);\r\n this.trackUserActionEvent(\"/sample/deploy/agree\");\r\n }\r\n\r\n updateDownloadCount(id) {\r\n libraryService\r\n .updateDownloadCount(id)\r\n .then(() => {\r\n // do nothing\r\n })\r\n .catch(() => {\r\n // do nothing\r\n });\r\n }\r\n\r\n getDeployLink(template) {\r\n return (\r\n \"https://portal.azure.com/#create/Microsoft.Template/uri/\" +\r\n encodeURIComponent(template)\r\n );\r\n }\r\n\r\n outboundRepoClick() {\r\n this.trackUserActionEvent(\"/sample/source\");\r\n }\r\n\r\n getOpenInVSCodeLink(repository) {\r\n return \"vscode://vscode.git/clone?url=\" + encodeURIComponent(repository);\r\n }\r\n\r\n openInVSCodeClick() {\r\n this.updateDownloadCount(this.props.id);\r\n this.trackUserActionEvent(\"/sample/openinvscode\");\r\n }\r\n\r\n trackUserActionEvent(eventName) {\r\n let eventData = {\r\n id: this.props.id,\r\n repository: this.props.repository,\r\n template: this.props.template\r\n };\r\n\r\n trackEvent(eventName, eventData);\r\n }\r\n\r\n render() {\r\n const { repository, template } = this.props;\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n \r\n Edit in VS Code\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n Deploy\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n Open in Github\r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default ActionBar;\r\n","import React, { Component } from \"react\";\r\nimport ReactMarkdown from \"markdown-to-jsx\";\r\nimport {\r\n Pivot,\r\n PivotItem,\r\n PivotLinkSize,\r\n ScrollablePane\r\n} from \"office-ui-fabric-react/lib/index\";\r\nimport { githubService } from \"../../services\";\r\nimport \"./DetailPageContent.scss\";\r\n\r\nconst defaultLicenseText =\r\n \"Each application is licensed to you by its owner (which may or may not be Microsoft) under the agreement which accompanies the application. Microsoft is not responsible for any non-Microsoft code and does not screen for security, compatibility, or performance. The applications are not supported by any Microsoft support program or service. The applications are provided AS IS without warranty of any kind.\";\r\n\r\nclass DetailPageContent extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n armTemplateText: \"\",\r\n markdownText: \"\",\r\n licenseText: \"\",\r\n selectedKey: \"overview\"\r\n };\r\n\r\n this.handleLinkClick = this.handleLinkClick.bind(this);\r\n }\r\n\r\n // This method is used to fetch readme content from repo when valid repository url is received as props\r\n componentDidUpdate(prevProps, prevState) {\r\n if (\r\n this.props.repository !== prevProps.repository &&\r\n prevState.markdownText === \"\"\r\n ) {\r\n let { repository } = this.props;\r\n githubService\r\n .getReadMe(repository)\r\n .then(data => {\r\n var r = new RegExp(\r\n \"https?://Azuredeploy.net/deploybutton.(png|svg)\",\r\n \"ig\"\r\n );\r\n data = data.replace(r, \"\");\r\n this.setState({ markdownText: data });\r\n })\r\n .catch(() => {\r\n // do nothing\r\n });\r\n }\r\n }\r\n\r\n handleLinkClick(pivotItem, ev) {\r\n const selectedKey = pivotItem.props.itemKey;\r\n this.setState({ selectedKey });\r\n if (selectedKey === \"armtemplate\" && this.state.armTemplateText === \"\") {\r\n const { template } = this.props;\r\n if (template) {\r\n githubService\r\n .getArmTemplate(template)\r\n .then(data =>\r\n this.setState({\r\n armTemplateText: data\r\n })\r\n )\r\n .catch(() => {\r\n // do nothing\r\n });\r\n }\r\n }\r\n if (selectedKey === \"license\" && this.state.licenseText === \"\") {\r\n const { license, repository } = this.props;\r\n githubService\r\n .getLicense(license, repository)\r\n .then(data =>\r\n this.setState({\r\n licenseText: data\r\n })\r\n )\r\n .catch(() => {\r\n // do nothing\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n const pivotStyles = {\r\n root: {\r\n paddingLeft: \"15px\"\r\n },\r\n text: {\r\n color: \" #0058AD\",\r\n fontSize: \"14px\"\r\n }\r\n };\r\n\r\n const {\r\n selectedKey,\r\n markdownText,\r\n licenseText,\r\n armTemplateText\r\n } = this.state;\r\n return (\r\n
\r\n this.handleLinkClick(item, ev)}\r\n >\r\n \r\n
\r\n
\r\n \r\n {markdownText}\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n

{defaultLicenseText}

\r\n {licenseText !== \"\" && (\r\n

{licenseText}

\r\n )}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {this.props.template && (\r\n \r\n
\r\n
\r\n \r\n
\r\n
{armTemplateText}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n )}\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default DetailPageContent;\r\n","import React, { Component } from \"react\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport { IconButton } from \"office-ui-fabric-react\";\r\n\r\nimport \"./PageHeaderWithBackButton.scss\";\r\n\r\nclass PageHeaderWithBackButton extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.handleHomeButtonClick = this.handleHomeButtonClick.bind(this);\r\n }\r\n\r\n handleHomeButtonClick() {\r\n this.props.history.push(\"/\");\r\n }\r\n\r\n render() {\r\n let { title } = this.props;\r\n\r\n const homeButton = {\r\n button: {\r\n width: 17,\r\n height: 18,\r\n marginRight: 12\r\n }\r\n };\r\n\r\n return (\r\n
\r\n
\r\n
\r\n this.handleHomeButtonClick()}\r\n />\r\n
\r\n
\r\n {title}\r\n
\r\n
\r\n
{this.props.children}
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(PageHeaderWithBackButton);\r\n","import React, { Component } from \"react\";\r\nimport PageHeaderWithBackButton from \"../shared/PageHeaderWithBackButton\";\r\nimport MetricBar from \"../MetricBar/MetricBar\";\r\n\r\nclass DetailPageHeader extends Component {\r\n render() {\r\n let {\r\n title,\r\n author,\r\n id,\r\n totaldownloads,\r\n createddate,\r\n description,\r\n likes,\r\n dislikes\r\n } = this.props;\r\n return (\r\n
\r\n \r\n \r\n

{description}

\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default DetailPageHeader;\r\n","import { sampleActionTypes } from \"./actionTypes\";\r\n\r\nexport const sampleActions = {\r\n getSamplesSuccess\r\n};\r\n\r\nfunction getSamplesSuccess(samples) {\r\n return {\r\n type: sampleActionTypes.GETSAMPLES_SUCCESS,\r\n samples\r\n };\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport ActionBar from \"./ActionBar\";\r\nimport DetailPageContent from \"./DetailPageContent\";\r\nimport DetailPageHeader from \"./DetailPageHeader\";\r\n\r\nimport { sampleActions } from \"../../actions/sampleActions\";\r\nimport { trackEvent } from \"../../helpers\";\r\n\r\nclass DetailView extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n sample: {}\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.setCurrentItemInState();\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n this.setCurrentItemInState();\r\n }\r\n\r\n setCurrentItemInState() {\r\n if (!this.state.sample.id && this.props.samples.length > 0) {\r\n const id = this.props.match.params.id;\r\n let currentItem = this.props.samples.filter(s => s.id === id)[0] || {};\r\n this.setState({ sample: currentItem });\r\n this.trackPageLoadEvent(currentItem);\r\n }\r\n }\r\n\r\n trackPageLoadEvent(sample) {\r\n let eventData = {\r\n id: sample.id,\r\n repository: sample.repository,\r\n template: sample.template\r\n };\r\n trackEvent(\"/sample/detailpage\", eventData);\r\n }\r\n\r\n render() {\r\n let likes = this.state.sample.likes ? this.state.sample.likes : 0;\r\n let dislikes = this.state.sample.dislikes ? this.state.sample.dislikes : 0;\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n samples: state.samples\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n getSamplesSuccess: sampleActions.getSamplesSuccess\r\n};\r\n\r\nconst DetailViewContainer = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(DetailView);\r\n\r\nexport default DetailViewContainer;\r\n","import { mergeStyleSets } from \"office-ui-fabric-react\";\r\n\r\nexport const buttonStyles = {\r\n root: {\r\n fontSize: \"12px\",\r\n height: \"25px\",\r\n marginRight: \"8px\",\r\n minWidth: \"0px\",\r\n paddingRight: \"10px\",\r\n paddingLeft: \"10px\"\r\n },\r\n label: {\r\n fontWeight: \"normal\"\r\n }\r\n};\r\n\r\nconst secondaryButtonAdditionalStyles = {\r\n root: {\r\n backgroundColor: \"white\",\r\n border: \"1px solid #0078D7\",\r\n color: \"#0058AD\"\r\n },\r\n rootHovered: {\r\n // backgroundColor: \"white\",\r\n border: \"1px solid #0078D7\",\r\n color: \"#0058AD\"\r\n }\r\n};\r\n\r\nexport const secondaryButtonStyles = mergeStyleSets(\r\n buttonStyles,\r\n secondaryButtonAdditionalStyles\r\n);\r\n","import React, { Component } from \"react\";\r\nimport {\r\n Icon,\r\n Link,\r\n TextField,\r\n PrimaryButton,\r\n DefaultButton,\r\n Dropdown,\r\n Dialog\r\n} from \"office-ui-fabric-react\";\r\n\r\nimport { libraryService } from \"../../services\";\r\nimport * as commonStyles from \"../shared/Button.styles\";\r\nimport * as Constants from \"../shared/Constants\";\r\n\r\nconst initialState = {\r\n showForm: false,\r\n title: \"\",\r\n description: \"\",\r\n repository: \"\",\r\n template: \"\",\r\n technologies: [],\r\n language: \"\",\r\n solutionareas: [],\r\n dialogProps: {\r\n isVisible: false,\r\n title: \"\",\r\n content: {}\r\n }\r\n};\r\n\r\nclass ContributionForm extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = initialState;\r\n\r\n this.onLinkClick = this.onLinkClick.bind(this);\r\n this.onAddButtonClick = this.onAddButtonClick.bind(this);\r\n this.onCancelButtonClick = this.onCancelButtonClick.bind(this);\r\n this.handleInputChange = this.handleInputChange.bind(this);\r\n this.onTitleChange = this.onTitleChange.bind(this);\r\n this.onDescriptionChange = this.onDescriptionChange.bind(this);\r\n this.onDismissDialog = this.onDismissDialog.bind(this);\r\n this.validateForm = this.getFormValidationErrors.bind(this);\r\n }\r\n\r\n technologiesOptionsChanged(newValue) {\r\n let technologies = this.state.technologies;\r\n if (newValue.selected) {\r\n technologies.push(newValue.key);\r\n } else {\r\n technologies = technologies.filter(t => t !== newValue.key);\r\n }\r\n\r\n this.setState({ technologies: technologies });\r\n }\r\n\r\n solutionAreasOptionsChanged(newValue) {\r\n let solutionAreas = this.state.solutionareas;\r\n if (newValue.selected) {\r\n solutionAreas.push(newValue.key);\r\n } else {\r\n solutionAreas = solutionAreas.filter(t => t !== newValue.key);\r\n }\r\n\r\n this.setState({ solutionareas: solutionAreas });\r\n }\r\n\r\n languageOptionChanged(newValue) {\r\n this.setState({ language: newValue });\r\n }\r\n\r\n handleInputChange(event, newValue) {\r\n const target = event.target;\r\n const name = target.name;\r\n this.setState({ [name]: newValue });\r\n }\r\n\r\n onTitleChange(event, newValue) {\r\n if (!newValue || newValue.length <= 80) {\r\n this.setState({ title: newValue || \"\" });\r\n } else {\r\n // this block is needed because of Fabric bug #1350\r\n this.setState({ title: this.state.title });\r\n }\r\n }\r\n\r\n onDescriptionChange(event, newValue) {\r\n if (!newValue || newValue.length <= 300) {\r\n this.setState({ description: newValue || \"\" });\r\n } else {\r\n // this block is needed because of Fabric bug #1350\r\n this.setState({ description: this.state.description });\r\n }\r\n }\r\n\r\n getFormValidationErrors(sample) {\r\n let errors = [];\r\n if (sample.title.length === 0) {\r\n errors.push(\"Title cannot be empty\");\r\n }\r\n if (sample.repository.length === 0) {\r\n errors.push(\"Repository URL cannot be empty\");\r\n }\r\n if (sample.description.length === 0) {\r\n errors.push(\"Description cannot be empty\");\r\n }\r\n if (sample.technologies.length === 0) {\r\n errors.push(\"At least one technology must be selected\");\r\n }\r\n if (sample.language.length === 0) {\r\n errors.push(\"Language must be selected\");\r\n }\r\n if (sample.solutionareas.length === 0) {\r\n errors.push(\"At least one solution area must be selected\");\r\n }\r\n\r\n return errors;\r\n }\r\n\r\n onLinkClick() {\r\n this.setState({ showForm: true });\r\n }\r\n\r\n onAddButtonClick() {\r\n const sample = {\r\n title: this.state.title,\r\n description: this.state.description,\r\n repository: this.state.repository,\r\n template: this.state.template,\r\n technologies: this.state.technologies,\r\n language: this.state.language,\r\n solutionareas: this.state.solutionareas\r\n };\r\n const errors = this.getFormValidationErrors(sample);\r\n if (errors.length > 0) {\r\n this.showDialog(\"Unable to add sample\", errors);\r\n return;\r\n }\r\n\r\n libraryService\r\n .submitNewSample(sample)\r\n .then(sample => {\r\n this.resetForm();\r\n this.showDialog(\r\n \"Thank you!\",\r\n \"Thank you for your contribution! Your sample has been submitted for approval.\"\r\n );\r\n })\r\n .catch(data => {\r\n this.showDialog(\"Unable to add sample\", data.error);\r\n });\r\n }\r\n\r\n showDialog(title, content) {\r\n const dialogProps = {\r\n title: title,\r\n content: content,\r\n isVisible: true\r\n };\r\n this.setState({ dialogProps });\r\n }\r\n\r\n onDismissDialog() {\r\n const dialogProps = { ...this.state.dialogProps, isVisible: false };\r\n this.setState({ dialogProps });\r\n }\r\n\r\n onCancelButtonClick() {\r\n this.resetForm();\r\n }\r\n\r\n resetForm() {\r\n this.setState(initialState);\r\n }\r\n\r\n render() {\r\n let technologiesOptions = Constants.technologies.map(t => ({\r\n key: t,\r\n text: t\r\n }));\r\n let languageOptions = Constants.languages.map(l => ({ key: l, text: l }));\r\n languageOptions.push({\r\n key: Constants.NotApplicableLanguage,\r\n text: \"Not applicable\"\r\n });\r\n let solutionAreasOptions = Constants.solutionAreas.map(s => ({\r\n key: s,\r\n text: s\r\n }));\r\n solutionAreasOptions.push({\r\n key: Constants.OtherSolutionArea,\r\n text: Constants.OtherSolutionArea\r\n });\r\n let { showForm, dialogProps } = this.state;\r\n return (\r\n
\r\n
\r\n \r\n \r\n Add new contribution\r\n \r\n
\r\n {dialogProps.isVisible && (\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default ContributionForm;\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { Label } from \"office-ui-fabric-react\";\r\nimport ItemList from \"../../components/ItemList/ItemList\";\r\n\r\nclass ContributionsList extends Component {\r\n filteredSamples() {\r\n let { loggedIn, user, samples } = this.props;\r\n let { userName } = user;\r\n if (!loggedIn || !userName) {\r\n return {};\r\n }\r\n\r\n let filter = new RegExp(userName, \"i\");\r\n samples = samples.filter(\r\n el =>\r\n el.repository.replace(\"https://github.com/\", \"\").match(filter) || // this match should be against author\r\n (el.author && el.author.match(filter))\r\n );\r\n\r\n return samples;\r\n }\r\n\r\n render() {\r\n const headerLabelStyles = {\r\n root: {\r\n fontSize: \"12px\",\r\n fontWeight: \"bold\",\r\n paddingTop: \"0px\",\r\n paddingBottom: \"6px\"\r\n }\r\n };\r\n const filteredSamples = this.filteredSamples();\r\n return (\r\n
\r\n \r\n {filteredSamples.length > 0 ? (\r\n \r\n ) : (\r\n
\r\n You currently do not have any samples\r\n
\r\n )}\r\n
\r\n );\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n samples: state.samples,\r\n loggedIn: state.authentication.loggedIn,\r\n user: state.authentication.user\r\n };\r\n}\r\n\r\nconst ContributionsListContainer = connect(mapStateToProps)(ContributionsList);\r\n\r\nexport default ContributionsListContainer;\r\n","import React, { Component } from \"react\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\nimport { Dialog, DialogFooter, DefaultButton } from \"office-ui-fabric-react\";\r\n\r\nimport SignInButton from \"../shared/SignInButton\";\r\n\r\nclass SignInDialog extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.handleHomeButtonClick = this.handleHomeButtonClick.bind(this);\r\n }\r\n\r\n handleHomeButtonClick() {\r\n this.props.history.push(\"/\");\r\n }\r\n\r\n render() {\r\n const footerStyles = {\r\n actionsRight: {\r\n textAlign: \"center\",\r\n marginRight: \"0px\"\r\n }\r\n };\r\n const buttonStyles = {\r\n root: {\r\n fontSize: \"12px\",\r\n height: \"32px\",\r\n minWidth: \"40px\",\r\n backgroundColor: \"white\",\r\n border: \"1px solid #0078D7\",\r\n color: \"#0058AD\"\r\n },\r\n rootHovered: {\r\n border: \"1px solid #0078D7\",\r\n color: \"#0058AD\"\r\n },\r\n label: {\r\n fontWeight: \"normal\"\r\n }\r\n };\r\n\r\n const { loading, loggedIn } = this.props;\r\n if (loading) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n loading: state.authentication.loading,\r\n loggedIn: state.authentication.loggedIn\r\n});\r\n\r\nconst SignInDialogContainer = connect(mapStateToProps)(SignInDialog);\r\n\r\nexport default withRouter(SignInDialogContainer);\r\n","import React, { Component } from \"react\";\r\nimport ContributionForm from \"./ContributionForm\";\r\nimport ContributionsList from \"./ContributionsList\";\r\nimport SignInDialog from \"./SignInDialog\";\r\nimport PageHeaderWithBackButton from \"../shared/PageHeaderWithBackButton\";\r\n\r\nimport \"./Contribute.scss\";\r\n\r\nclass ContributionsPage extends Component {\r\n render() {\r\n return (\r\n
\r\n \r\n

\r\n This is where you can see all your existing contributions. You can\r\n also add a new contribution by clicking on the add new contribution\r\n link.\r\n

\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default ContributionsPage;\r\n","import React, { Component } from \"react\";\r\nimport { Switch, Route, withRouter } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\nimport { Dialog } from \"office-ui-fabric-react\";\r\n\r\nimport \"./App.css\";\r\n\r\nimport Main from \"./components/Main/Main\";\r\nimport Header from \"./components/Header/Header\";\r\nimport DetailView from \"./components/DetailView/DetailView\";\r\nimport ContributionsPage from \"./components/Contribute/Contribute\";\r\nimport { sampleActions } from \"./actions/sampleActions\";\r\nimport { userActions } from \"./actions/userActions\";\r\nimport { libraryService, userService } from \"./services\";\r\n\r\nconst loginErrorMsg = \"We were unable to log you in. Please try again later.\";\r\n\r\nclass App extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n showErrorDialog: false\r\n };\r\n this.onDismissErrorDialog = this.onDismissErrorDialog.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n libraryService\r\n .getAllSamples()\r\n .then(samples => this.props.getSamplesSuccess(samples))\r\n .catch(() => {\r\n // do nothing\r\n });\r\n\r\n this.props.getCurrentUserRequest();\r\n userService\r\n .getCurrentUser()\r\n .then(user => this.props.getCurrentUserSuccess(user))\r\n .catch(data => {\r\n this.props.getCurrentUserFailure();\r\n if (data.status !== 401) {\r\n this.setState({\r\n showErrorDialog: true\r\n });\r\n }\r\n });\r\n }\r\n\r\n onDismissErrorDialog() {\r\n this.setState({\r\n showErrorDialog: false\r\n });\r\n }\r\n\r\n render() {\r\n const { showErrorDialog } = this.state;\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n {showErrorDialog && (\r\n
\r\n );\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {};\r\n}\r\n\r\nconst mapDispatchToProps = {\r\n getSamplesSuccess: sampleActions.getSamplesSuccess,\r\n getCurrentUserRequest: userActions.getCurrentUserRequest,\r\n getCurrentUserSuccess: userActions.getCurrentUserSuccess,\r\n getCurrentUserFailure: userActions.getCurrentUserFailure\r\n};\r\nconst AppContainer = withRouter(\r\n connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n )(App)\r\n);\r\n\r\nexport default AppContainer;\r\n","// These must be the first lines in src/index.js\r\nimport \"react-app-polyfill/ie11\";\r\nimport \"react-app-polyfill/stable\";\r\n\r\nimport \"./index.css\";\r\nimport React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { BrowserRouter } from \"react-router-dom\";\r\nimport { Provider } from \"react-redux\";\r\nimport { initializeIcons } from \"office-ui-fabric-react\";\r\nimport configureStore from \"./reducers\";\r\nimport registerCustomIcons from \"./helpers/registerIcons\";\r\n\r\nimport AppContainer from \"./App\";\r\n\r\nconst store = configureStore();\r\nregisterCustomIcons();\r\ninitializeIcons();\r\nconst rootElement = document.getElementById(\"root\");\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n ,\r\n rootElement\r\n);\r\n","import React from \"react\";\r\nimport { registerIcons } from \"office-ui-fabric-react\";\r\nimport \"./registerIcons.scss\";\r\nimport { ReactComponent as GithubIconSvg } from \"../assets/github.svg\";\r\nimport { ReactComponent as ContributionSvg } from \"../assets/contribution.svg\";\r\n\r\nexport default function registerCustomIcons() {\r\n registerIcons({\r\n icons: {\r\n \"GitHub-12px\": ,\r\n \"GitHub-16px\": ,\r\n \"contribution-svg\": \r\n }\r\n });\r\n}\r\n"],"sourceRoot":""}