forked from badges/shields
-
Notifications
You must be signed in to change notification settings - Fork 1
/
1-7cf44aab56d86e7fd802.js.map
1 lines (1 loc) · 66.4 KB
/
1-7cf44aab56d86e7fd802.js.map
1
{"version":3,"sources":["webpack:///./frontend/components/common.js","webpack:///./core/badge-urls/make-badge-url.js","webpack:///./frontend/lib/service-definitions/service-definition-prop-types.js","webpack:///./frontend/components/snippet.js","webpack:///./frontend/constants.js","webpack:///./frontend/components/meta.js","webpack:///./frontend/components/header.js","webpack:///./frontend/components/footer.js","webpack:///./frontend/lib/generate-image-markup.js","webpack:///./frontend/components/customizer/builder-common.js","webpack:///./frontend/components/customizer/path-builder.js","webpack:///./frontend/components/customizer/query-string-builder.js","webpack:///./frontend/components/customizer/request-markup-button.js","webpack:///./frontend/components/customizer/copied-content-indicator.js","webpack:///./frontend/components/customizer/customizer.js","webpack:///./frontend/images/favicon.png","webpack:///./frontend/lib/pattern-helpers.js"],"names":["noAutocorrect","Object","freeze","autoComplete","autoCorrect","autoCapitalize","spellCheck","GlobalStyle","createGlobalStyle","_templateObject","BaseFont","styled","div","withConfig","displayName","componentId","H2","h2","H3","h3","BadgeWrapper","span","_ref","height","_ref2","display","_ref3","clickable","css","Badge","_ref4","src","_ref4$alt","alt","_ref4$display","_ref4$height","_ref4$clickable","rest","_babel_runtime_helpers_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1___default","react__WEBPACK_IMPORTED_MODULE_4___default","a","createElement","assign","propTypes","PropTypes","string","isRequired","oneOf","bool","StyledInput","input","InlineInput","BlockInput","VerticalSpace","hr","queryString","require","pathToRegexp","badgeUrlFromPath","_ref$baseUrl","baseUrl","path","queryParams","style","_ref$format","format","_ref$longCache","longCache","outExt","length","outQueryString","stringify","cacheSeconds","undefined","encodeField","s","encodeURIComponent","replace","module","exports","badgeUrlFromPattern","_ref2$baseUrl","pattern","namedParams","_ref2$format","_ref2$longCache","compile","strict","sensitive","toPath","staticBadgeUrl","_ref3$baseUrl","label","message","_ref3$color","color","namedLogo","_ref3$format","map","join","logo","queryStringStaticBadgeUrl","_ref4$baseUrl","labelColor","logoColor","logoWidth","logoPosition","_ref4$format","dynamicBadgeUrl","_ref5","datatype","dataUrl","query","prefix","suffix","_ref5$format","url","__webpack_require__","d","__webpack_exports__","objectOfKeyValuesPropType","examplePropType","serviceDefinitionPropType","prop_types__WEBPACK_IMPORTED_MODULE_0__","prop_types__WEBPACK_IMPORTED_MODULE_0___default","n","arrayOfStringsPropType","arrayOf","objectOf","exact","title","example","preview","keywords","documentation","__html","category","name","isDeprecated","route","oneOfType","examples","Snippet","StyledCode","react__WEBPACK_IMPORTED_MODULE_0__","react__WEBPACK_IMPORTED_MODULE_0___default","prop_types__WEBPACK_IMPORTED_MODULE_1__","prop_types__WEBPACK_IMPORTED_MODULE_1___default","_mapbox_react_click_to_select__WEBPACK_IMPORTED_MODULE_2__","_mapbox_react_click_to_select__WEBPACK_IMPORTED_MODULE_2___default","styled_components__WEBPACK_IMPORTED_MODULE_3__","CodeContainer","truncate","code","fontSize","snippet","_ref3$truncate","process","react_helmet__WEBPACK_IMPORTED_MODULE_1__","_images_favicon_png__WEBPACK_IMPORTED_MODULE_2__","_images_favicon_png__WEBPACK_IMPORTED_MODULE_2___default","charSet","content","href","favicon","rel","type","gatsby__WEBPACK_IMPORTED_MODULE_0__","react__WEBPACK_IMPORTED_MODULE_1__","react__WEBPACK_IMPORTED_MODULE_1___default","styled_components__WEBPACK_IMPORTED_MODULE_2__","_common__WEBPACK_IMPORTED_MODULE_3__","Logo","Highlights","p","to","_core_badge_urls_make_badge_url__WEBPACK_IMPORTED_MODULE_3__","_common__WEBPACK_IMPORTED_MODULE_4__","SpacedA","Footer","id","data","link","bareLink","badgeUrl","html","img","markdown","withoutLink","reStructuredText","result","quoteAsciiDocAttribute","attr","asciiDoc","positional","named","some","includes","keys","obj","iteratee","k","mapValues","items","concat","entries","renderAsciiDocAttributes","generateMarkup","generatorFn","rst","asciidoc","markupFormat","BuilderOuterContainer","BuilderInnerContainer","BuilderContainer","children","react_default","node","labelFont","BuilderLabel","BuilderCaption","PathBuilderColumn","withHorizPadding","PathLiteral","isFirstToken","NamedParamLabelContainer","inputStyling","NamedParamInput","NamedParamSelect","select","NamedParamCaption","PathBuilder","props","_this","_React$Component","call","this","handleTokenChange","evt","_Object$assign","_evt$target","target","value","_this$state","state","tokens","oldNamedParams","setState","notePathChanged","parse","filter","t","forEach","constructPath","isComplete","token","delimiter","optional","onChange","_this$constructor$con","constructor","componentDidMount","_this$state2","renderLiteral","literal","tokenIndex","key","renderNamedParamInput","options","patternToOptions","option","renderNamedParam","namedParamIndex","exampleValue","exampleParams","Fragment","htmlFor","humanizeString","render","_this2","builder_common_BuilderContainer","React","Component","func","QueryParamLabel","QueryParamInput","QueryParamCaption","supportedBadgeOptions","shieldsDefaultValue","getBadgeOption","find","opt","QueryStringBuilder","handleServiceQueryParamChange","event","_event$target","checked","oldQueryParams","badgeOptions","noteQueryStringChanged","handleBadgeOptionChange","_Object$assign2","_event$target2","oldBadgeOptions","initialStyle","isStringParam","getQueryString","outQuery","stringifyQueryString","_ref6","_this$constructor$get","_this$state3","renderServiceQueryParam","_ref7","stringParamCount","toLowerCase","renderBadgeOptionInput","advertisedStyles","renderBadgeOption","_getBadgeOption2","_getBadgeOption2$labe","hasShieldsDefaultValue","_this$state4","hasQueryParams","Boolean","_ref8","_ref9","defaultProps","ClickableControl","react_select_esm","Control","innerProps","onMouseDown","selectProps","onControlMouseDown","object","MarkupFormatSelect","Select","markupOptions","GetMarkupButton","selectRef","createRef","_callee","_assertThisInitialize","onMarkupRequested","regenerator_default","wrap","_context","prev","next","assertThisInitialized_default","current","blur","stop","onOptionClick","_callee2","_context2","isDisabled","blurInputOnSelect","classNamePrefix","closeMenuOnScroll","components","isSearchable","menuPlacement","placeholder","ref","PureComponent","ContentAnchor","ContentContainer","PosedContentContainer","posed","hidden","opacity","transition","duration","effectStart","top","effectEnd","CopiedContentIndicator","pose","handlePoseComplete","trigger","onPoseComplete","copiedContent","Customizer","indicatorRef","copyMarkup","builtBadgeUrl","markup","generateBuiltBadgeUrl","clipboardCopy","t0","abrupt","handlePathChange","pathIsComplete","handleQueryStringChange","renderLivePreview","common","renderMarkupAndLivePreview","copied_content_indicator_CopiedContentIndicator","request_markup_button","_this$props","exampleNamedParams","exampleQueryParams","action","path_builder_PathBuilder","query_string_builder_QueryStringBuilder","_window$location","window","location","protocol","hostname","basicChars","split","part","match"],"mappings":"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","file":"1-7cf44aab56d86e7fd802.js","sourcesContent":["import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled, { css, createGlobalStyle } from 'styled-components'\n\nconst noAutocorrect = Object.freeze({\n autoComplete: 'off',\n autoCorrect: 'off',\n autoCapitalize: 'off',\n spellCheck: 'false',\n})\n\nconst nonBreakingSpace = '\\u00a0'\n\nconst GlobalStyle = createGlobalStyle`\n * {\n box-sizing: border-box;\n }\n`\n\nconst BaseFont = styled.div`\n font-family: Lekton, sans-serif;\n color: #534;\n`\n\nconst H2 = styled.h2`\n font-style: italic;\n\n margin-top: 12mm;\n font-variant: small-caps;\n\n ::before {\n content: '☙ ';\n }\n\n ::after {\n content: ' ❧';\n }\n`\n\nconst H3 = styled.h3`\n font-style: italic;\n`\n\nconst BadgeWrapper = styled.span`\n padding: 2px;\n height: ${({ height }) => height};\n vertical-align: middle;\n display: ${({ display }) => display};\n\n ${({ clickable }) =>\n clickable &&\n css`\n cursor: pointer;\n `};\n`\n\nconst Badge = ({\n src,\n alt = '',\n display = 'inline',\n height = '20px',\n clickable = false,\n ...rest\n}) => (\n <BadgeWrapper clickable={clickable} display={display} height={height}>\n {src ? <img alt={alt} src={src} {...rest} /> : nonBreakingSpace}\n </BadgeWrapper>\n)\nBadge.propTypes = {\n src: PropTypes.string.isRequired,\n alt: PropTypes.string,\n display: PropTypes.oneOf(['inline', 'block', 'inline-block']),\n height: PropTypes.string,\n clickable: PropTypes.bool,\n}\n\nconst StyledInput = styled.input`\n height: 15px;\n border: solid #b9a;\n border-width: 0 0 1px 0;\n padding: 0;\n\n text-align: center;\n\n color: #534;\n\n :focus {\n outline: 0;\n }\n`\n\nconst InlineInput = styled(StyledInput)`\n width: 70px;\n margin-left: 5px;\n margin-right: 5px;\n`\n\nconst BlockInput = styled(StyledInput)`\n width: 40%;\n background-color: transparent;\n`\n\nconst VerticalSpace = styled.hr`\n border: 0;\n display: block;\n height: 3mm;\n`\n\nexport {\n noAutocorrect,\n nonBreakingSpace,\n GlobalStyle,\n BaseFont,\n H2,\n H3,\n Badge,\n StyledInput,\n InlineInput,\n BlockInput,\n VerticalSpace,\n}\n","'use strict'\n\nconst queryString = require('query-string')\nconst pathToRegexp = require('path-to-regexp')\n\nfunction badgeUrlFromPath({\n baseUrl = '',\n path,\n queryParams,\n style,\n format = 'svg',\n longCache = false,\n}) {\n const outExt = format.length ? `.${format}` : ''\n\n const outQueryString = queryString.stringify({\n cacheSeconds: longCache ? '2592000' : undefined,\n style,\n ...queryParams,\n })\n const suffix = outQueryString ? `?${outQueryString}` : ''\n\n return `${baseUrl}${path}${outExt}${suffix}`\n}\n\nfunction badgeUrlFromPattern({\n baseUrl = '',\n pattern,\n namedParams,\n queryParams,\n style,\n format = 'svg',\n longCache = false,\n}) {\n const toPath = pathToRegexp.compile(pattern, {\n strict: true,\n sensitive: true,\n })\n\n const path = toPath(namedParams)\n\n return badgeUrlFromPath({\n baseUrl,\n path,\n queryParams,\n style,\n format,\n longCache,\n })\n}\n\nfunction encodeField(s) {\n return encodeURIComponent(s.replace(/-/g, '--').replace(/_/g, '__'))\n}\n\nfunction staticBadgeUrl({\n baseUrl = '',\n label,\n message,\n color = 'lightgray',\n style,\n namedLogo,\n format = 'svg',\n}) {\n const path = [label, message, color].map(encodeField).join('-')\n const outQueryString = queryString.stringify({\n style,\n logo: namedLogo,\n })\n const suffix = outQueryString ? `?${outQueryString}` : ''\n return `${baseUrl}/badge/${path}.${format}${suffix}`\n}\n\nfunction queryStringStaticBadgeUrl({\n baseUrl = '',\n label,\n message,\n color,\n labelColor,\n style,\n namedLogo,\n logoColor,\n logoWidth,\n logoPosition,\n format = 'svg',\n}) {\n // schemaVersion could be a parameter if we iterate on it,\n // for now it's hardcoded to the only supported version.\n const schemaVersion = '1'\n const suffix = `?${queryString.stringify({\n label,\n message,\n color,\n labelColor,\n style,\n logo: namedLogo,\n logoColor,\n logoWidth,\n logoPosition,\n })}`\n return `${baseUrl}/static/v${schemaVersion}.${format}${suffix}`\n}\n\nfunction dynamicBadgeUrl({\n baseUrl,\n datatype,\n label,\n dataUrl,\n query,\n prefix,\n suffix,\n color,\n style,\n format = 'svg',\n}) {\n const queryParams = {\n label,\n url: dataUrl,\n query,\n style,\n }\n\n if (color) {\n queryParams.color = color\n }\n if (prefix) {\n queryParams.prefix = prefix\n }\n if (suffix) {\n queryParams.suffix = suffix\n }\n\n const outQueryString = queryString.stringify(queryParams)\n return `${baseUrl}/badge/dynamic/${datatype}.${format}?${outQueryString}`\n}\n\nmodule.exports = {\n badgeUrlFromPath,\n badgeUrlFromPattern,\n encodeField,\n staticBadgeUrl,\n queryStringStaticBadgeUrl,\n dynamicBadgeUrl,\n}\n","import PropTypes from 'prop-types'\n\n// This should be kept in sync with the schema in\n// `core/base-service/service-definitions.js`.\n\nconst arrayOfStringsPropType = PropTypes.arrayOf(PropTypes.string.isRequired)\n .isRequired\nconst objectOfKeyValuesPropType = PropTypes.objectOf(PropTypes.string)\n .isRequired\n\nconst examplePropType = PropTypes.exact({\n title: PropTypes.string.isRequired,\n example: PropTypes.exact({\n pattern: PropTypes.string.isRequired,\n namedParams: objectOfKeyValuesPropType,\n queryParams: objectOfKeyValuesPropType,\n }).isRequired,\n preview: PropTypes.exact({\n label: PropTypes.string,\n message: PropTypes.string.isRequired,\n color: PropTypes.string.isRequired,\n style: PropTypes.string,\n namedLogo: PropTypes.string,\n }).isRequired,\n keywords: arrayOfStringsPropType,\n documentation: PropTypes.exact({\n __html: PropTypes.string.isRequired,\n }),\n})\n\nconst serviceDefinitionPropType = PropTypes.exact({\n category: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n isDeprecated: PropTypes.bool.isRequired,\n // Route is missing for e.g. Buildkite.\n route: PropTypes.oneOfType([\n PropTypes.exact({\n pattern: PropTypes.string.isRequired,\n queryParams: arrayOfStringsPropType,\n }),\n PropTypes.exact({\n format: PropTypes.string.isRequired,\n queryParams: arrayOfStringsPropType,\n }),\n ]),\n examples: PropTypes.arrayOf(examplePropType).isRequired,\n}).isRequired\n\nexport {\n arrayOfStringsPropType,\n objectOfKeyValuesPropType,\n examplePropType,\n serviceDefinitionPropType,\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport ClickToSelect from '@mapbox/react-click-to-select'\nimport styled, { css } from 'styled-components'\n\nconst CodeContainer = styled.span`\n position: relative;\n\n vertical-align: middle;\n display: inline-block;\n\n ${({ truncate }) =>\n truncate &&\n css`\n max-width: 40%;\n overflow: hidden;\n text-overflow: ellipsis;\n `};\n`\n\nconst StyledCode = styled.code`\n line-height: 1.2em;\n padding: 0.1em 0.3em;\n\n border-radius: 4px;\n background: #eef;\n font-family: Lekton;\n font-size: ${({ fontSize }) => fontSize};\n\n white-space: nowrap;\n`\n\nconst Snippet = ({ snippet, truncate = false, fontSize }) => (\n <CodeContainer truncate={truncate}>\n <ClickToSelect>\n <StyledCode fontSize={fontSize}>{snippet}</StyledCode>\n </ClickToSelect>\n </CodeContainer>\n)\nSnippet.propTypes = {\n snippet: PropTypes.string.isRequired,\n truncate: PropTypes.bool,\n fontSize: PropTypes.string,\n}\n\nexport { Snippet, StyledCode }\n","const baseUrl = process.env.GATSBY_BASE_URL || ''\n\nexport { baseUrl }\n","import React from 'react'\nimport { Helmet } from 'react-helmet'\nimport favicon from '../images/favicon.png'\n\nconst description = `We serve fast and scalable informational images as badges\nfor GitHub, Travis CI, Jenkins, WordPress and many more services. Use them to\ntrack the state of your projects, or for promotional purposes.`\n\nexport default () => (\n <Helmet>\n <title>Shields.io: Quality metadata badges for open source projects</title>\n <meta charSet=\"utf-8\" />\n <meta content=\"width=device-width,initial-scale=1\" name=\"viewport\" />\n <meta content={description} name=\"description\" />\n <link href={favicon} rel=\"icon\" type=\"image/png\" />\n <link\n href=\"https://fonts.googleapis.com/css?family=Lato|Lekton\"\n rel=\"stylesheet\"\n />\n </Helmet>\n)\n","import { Link } from 'gatsby'\nimport React from 'react'\nimport styled from 'styled-components'\nimport Logo from '../images/logo.svg'\nimport { VerticalSpace } from './common'\n\nconst Highlights = styled.p`\n font-style: italic;\n`\n\nexport default () => (\n <section>\n <Link to=\"/\">\n <Logo />\n </Link>\n\n <VerticalSpace />\n\n <Highlights>\n Pixel-perfect Retina-ready Fast Consistent \n Hackable No tracking\n </Highlights>\n </section>\n)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport { badgeUrlFromPath } from '../../core/badge-urls/make-badge-url'\nimport { H2 } from './common'\n\nconst SpacedA = styled.a`\n margin-left: 10px;\n margin-right: 10px;\n`\n\nconst Footer = ({ baseUrl }) => (\n <section>\n <H2 id=\"like-this\">Like This?</H2>\n\n <p>\n <object\n alt=\"Follow @shields_io\"\n data={badgeUrlFromPath({\n baseUrl,\n path: '/twitter/follow/shields_io',\n queryParams: { label: 'Follow' },\n style: 'social',\n })}\n />{' '}\n {}\n <object\n alt=\"Donate to us!\"\n data={badgeUrlFromPath({\n baseUrl,\n path: '/opencollective/backers/shields',\n queryParams: { link: 'https://opencollective.com/shields' },\n style: 'social',\n })}\n />{' '}\n {}\n <object\n alt=\"Donate to us!\"\n data={badgeUrlFromPath({\n baseUrl,\n path: '/opencollective/sponsors/shields',\n queryParams: { link: 'https://opencollective.com/shields' },\n style: 'social',\n })}\n />{' '}\n {}\n <object\n alt=\"Fork on GitHub\"\n data={badgeUrlFromPath({\n baseUrl,\n path: '/github/forks/badges/shields',\n queryParams: { label: 'Fork' },\n style: 'social',\n })}\n />{' '}\n {}\n <object\n alt=\"chat on Discord\"\n data={badgeUrlFromPath({\n baseUrl,\n path: '/discord/308323056592486420',\n queryParams: {\n label: 'Chat',\n link: 'https://discord.gg/HjJCwm5',\n },\n style: 'social',\n })}\n />\n </p>\n\n <p>\n What is your favorite badge service to use?\n <br />\n <a href=\"https://github.com/badges/shields/blob/master/CONTRIBUTING.md\">\n Tell us\n </a>{' '}\n and we might bring it to you!\n </p>\n\n <p>\n <SpacedA href=\"https://status.shields.io/\">Status</SpacedA>\n <SpacedA href=\"https://github.com/badges/shields\">GitHub</SpacedA>\n </p>\n </section>\n)\nexport default Footer\nFooter.propTypes = {\n baseUrl: PropTypes.string.isRequired,\n}\n","export function bareLink(badgeUrl, link, title = '') {\n return badgeUrl\n}\n\nexport function html(badgeUrl, link, title) {\n // To be more robust, this should escape the title.\n const alt = title ? ` alt=\"${title}\"` : ''\n const img = `<img${alt} src=\"${badgeUrl}\">`\n if (link) {\n return `<a href=\"${link}\">${img}</a>`\n } else {\n return img\n }\n}\n\nexport function markdown(badgeUrl, link, title) {\n const withoutLink = `![${title || ''}](${badgeUrl})`\n if (link) {\n return `[${withoutLink}](${link})`\n } else {\n return withoutLink\n }\n}\n\nexport function reStructuredText(badgeUrl, link, title) {\n let result = `.. image:: ${badgeUrl}`\n if (title) {\n result += ` :alt: ${title}`\n }\n if (link) {\n result += ` :target: ${link}`\n }\n return result\n}\n\nfunction quoteAsciiDocAttribute(attr) {\n if (attr == null) {\n return 'None'\n } else {\n const withQuotesEscaped = attr.replace(/\"/g, '\\\\\"')\n return `\"${withQuotesEscaped}\"`\n }\n}\n\n// lodash.mapvalues is huge!\nfunction mapValues(obj, iteratee) {\n const result = {}\n for (const k in obj) {\n result[k] = iteratee(obj[k])\n }\n return result\n}\n\nexport function renderAsciiDocAttributes(positional, named) {\n // http://asciidoc.org/userguide.html#X21\n const needsQuoting =\n positional.some(attr => attr && attr.includes(',')) ||\n Object.keys(named).length > 0\n\n if (needsQuoting) {\n positional = positional.map(attr => quoteAsciiDocAttribute(attr))\n named = mapValues(named, attr => quoteAsciiDocAttribute(attr))\n }\n\n const items = positional.concat(\n Object.entries(named).map(([k, v]) => `${k}=${v}`)\n )\n\n if (items.length) {\n return `[${items.join(',')}]`\n } else {\n return '[]'\n }\n}\n\nexport function asciiDoc(badgeUrl, link, title) {\n const positional = title ? [title] : []\n const named = link ? { link } : {}\n const attrs = renderAsciiDocAttributes(positional, named)\n return `image:${badgeUrl}${attrs}`\n}\n\nexport function generateMarkup({ badgeUrl, link, title, markupFormat }) {\n const generatorFn = {\n markdown,\n rst: reStructuredText,\n asciidoc: asciiDoc,\n link: bareLink,\n html,\n }[markupFormat]\n return generatorFn(badgeUrl, link, title)\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\n\nconst BuilderOuterContainer = styled.div`\n margin-top: 10px;\n margin-bottom: 10px;\n`\n\n// The inner container is inline-block so that its width matches its columns.\nconst BuilderInnerContainer = styled.div`\n display: inline-block;\n\n padding: 1px 14px 10px;\n\n border-radius: 4px;\n background: #eef;\n`\n\nconst BuilderContainer = ({ children }) => (\n <BuilderOuterContainer>\n <BuilderInnerContainer>{children}</BuilderInnerContainer>\n </BuilderOuterContainer>\n)\nBuilderContainer.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n ]),\n}\n\nconst labelFont = `\n font-family: system-ui;\n font-size: 11px;\n`\n\nconst BuilderLabel = styled.label`\n ${labelFont}\n\n text-transform: lowercase;\n`\n\nconst BuilderCaption = styled.span`\n ${labelFont}\n\n color: #999;\n`\n\nexport { BuilderContainer, BuilderLabel, BuilderCaption }\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled, { css } from 'styled-components'\nimport pathToRegexp from 'path-to-regexp'\nimport humanizeString from 'humanize-string'\nimport { objectOfKeyValuesPropType } from '../../lib/service-definitions/service-definition-prop-types'\nimport { patternToOptions } from '../../lib/pattern-helpers'\nimport { noAutocorrect, StyledInput } from '../common'\nimport {\n BuilderContainer,\n BuilderLabel,\n BuilderCaption,\n} from './builder-common'\n\nconst PathBuilderColumn = styled.span`\n height: 78px;\n\n float: left;\n display: flex;\n flex-direction: column;\n\n margin: 0;\n\n ${({ withHorizPadding }) =>\n withHorizPadding &&\n css`\n padding: 0 8px;\n `};\n`\n\nconst PathLiteral = styled.div`\n margin-top: 39px;\n ${({ isFirstToken }) =>\n isFirstToken &&\n css`\n margin-left: 3px;\n `};\n`\n\nconst NamedParamLabelContainer = styled.span`\n display: flex;\n flex-direction: column;\n height: 37px;\n width: 100%;\n justify-content: center;\n`\n\nconst inputStyling = `\n width: 100%;\n text-align: center;\n`\n\n// 2px to align with input boxes alongside.\nconst NamedParamInput = styled(StyledInput)`\n ${inputStyling}\n margin-top: 2px;\n margin-bottom: 10px;\n`\n\nconst NamedParamSelect = styled.select`\n ${inputStyling}\n margin-bottom: 9px;\n font-size: 10px;\n`\n\nconst NamedParamCaption = styled(BuilderCaption)`\n width: 100%;\n text-align: center;\n`\n\nexport default class PathBuilder extends React.Component {\n static propTypes = {\n pattern: PropTypes.string.isRequired,\n exampleParams: objectOfKeyValuesPropType,\n onChange: PropTypes.func,\n }\n\n constructor(props) {\n super(props)\n\n const { pattern } = props\n const tokens = pathToRegexp.parse(pattern)\n\n const namedParams = {}\n\n // `pathToRegexp.parse()` returns a mixed array of strings for literals\n // and objects for parameters. Filter out the literals and work with the\n // objects.\n tokens\n .filter(t => typeof t !== 'string')\n .forEach(({ name }) => {\n namedParams[name] = ''\n })\n\n this.state = {\n tokens,\n namedParams,\n }\n }\n\n static constructPath({ tokens, namedParams }) {\n let isComplete = true\n const path = tokens\n .map(token => {\n if (typeof token === 'string') {\n return token\n } else {\n const { delimiter, name, optional } = token\n const value = namedParams[name]\n if (value) {\n return `${delimiter}${value}`\n } else if (optional) {\n return ''\n } else {\n isComplete = false\n return `${delimiter}:${name}`\n }\n }\n })\n .join('')\n return { path, isComplete }\n }\n\n notePathChanged({ tokens, namedParams }) {\n const { onChange } = this.props\n if (onChange) {\n const { path, isComplete } = this.constructor.constructPath({\n tokens,\n namedParams,\n })\n onChange({ path, isComplete })\n }\n }\n\n componentDidMount() {\n // Ensure the default style is applied right away.\n const { tokens, namedParams } = this.state\n this.notePathChanged({ tokens, namedParams })\n }\n\n handleTokenChange = evt => {\n const { name, value } = evt.target\n const { tokens, namedParams: oldNamedParams } = this.state\n\n const namedParams = {\n ...oldNamedParams,\n [name]: value,\n }\n\n this.setState({ namedParams })\n this.notePathChanged({ tokens, namedParams })\n }\n\n renderLiteral(literal, tokenIndex) {\n return (\n <PathBuilderColumn key={`${tokenIndex}-${literal}`}>\n <PathLiteral isFirstToken={tokenIndex === 0}>{literal}</PathLiteral>\n </PathBuilderColumn>\n )\n }\n\n renderNamedParamInput(token) {\n const { name, pattern } = token\n const options = patternToOptions(pattern)\n\n const { namedParams } = this.state\n const value = namedParams[name]\n\n if (options) {\n return (\n <NamedParamSelect\n name={name}\n onChange={this.handleTokenChange}\n value={value}\n >\n <option key=\"empty\" value=\"\">\n {' '}\n </option>\n {options.map(option => (\n <option key={option} value={option}>\n {option}\n </option>\n ))}\n </NamedParamSelect>\n )\n } else {\n return (\n <NamedParamInput\n name={name}\n onChange={this.handleTokenChange}\n type=\"text\"\n value={value}\n {...noAutocorrect}\n />\n )\n }\n }\n\n renderNamedParam(token, tokenIndex, namedParamIndex) {\n const { delimiter, name, optional } = token\n\n const { exampleParams } = this.props\n const exampleValue = exampleParams[name] || '(not set)'\n\n return (\n <React.Fragment key={token.name}>\n {this.renderLiteral(delimiter, tokenIndex)}\n <PathBuilderColumn withHorizPadding>\n <NamedParamLabelContainer>\n <BuilderLabel htmlFor={name}>{humanizeString(name)}</BuilderLabel>\n {optional ? <BuilderLabel>(optional)</BuilderLabel> : null}\n </NamedParamLabelContainer>\n {this.renderNamedParamInput(token)}\n <NamedParamCaption>\n {namedParamIndex === 0 ? `e.g. ${exampleValue}` : exampleValue}\n </NamedParamCaption>\n </PathBuilderColumn>\n </React.Fragment>\n )\n }\n\n render() {\n const { tokens } = this.state\n let namedParamIndex = 0\n return (\n <BuilderContainer>\n {tokens.map((token, tokenIndex) =>\n typeof token === 'string'\n ? this.renderLiteral(token, tokenIndex)\n : this.renderNamedParam(token, tokenIndex, namedParamIndex++)\n )}\n </BuilderContainer>\n )\n }\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport humanizeString from 'humanize-string'\nimport { stringify as stringifyQueryString } from 'query-string'\nimport { advertisedStyles } from '../../../supported-features.json'\nimport { objectOfKeyValuesPropType } from '../../lib/service-definitions/service-definition-prop-types'\nimport { noAutocorrect, StyledInput } from '../common'\nimport {\n BuilderContainer,\n BuilderLabel,\n BuilderCaption,\n} from './builder-common'\n\nconst QueryParamLabel = styled(BuilderLabel)`\n margin: 5px;\n`\n\nconst QueryParamInput = styled(StyledInput)`\n margin: 5px 10px;\n`\n\nconst QueryParamCaption = styled(BuilderCaption)`\n margin: 5px;\n`\n\nconst supportedBadgeOptions = [\n { name: 'style', shieldsDefaultValue: 'flat' },\n { name: 'label', label: 'override label' },\n { name: 'color', label: 'override color' },\n { name: 'logo', label: 'named logo' },\n { name: 'logoColor', label: 'override logo color' },\n]\n\nfunction getBadgeOption(name) {\n return supportedBadgeOptions.find(opt => opt.name === name)\n}\n\n// The UI for building the query string, which includes two kinds of settings:\n// 1. Custom query params defined by the service, stored in\n// `this.state.queryParams`\n// 2. The standard badge options which apply to all badges, stored in\n// `this.state.badgeOptions`\nexport default class QueryStringBuilder extends React.Component {\n constructor(props) {\n super(props)\n\n const { exampleParams, initialStyle } = props\n\n // Create empty values in `this.state.queryParams` for each of the custom\n // query params defined in `this.props.exampleParams`.\n const queryParams = {}\n Object.entries(exampleParams).forEach(([name, value]) => {\n // Custom query params are either string or boolean. Inspect the example\n // value to infer which one, and set empty values accordingly.\n // Throughout the component, these two types are supported in the same\n // manner: by inspecting this value type.\n const isStringParam = typeof value === 'string'\n queryParams[name] = isStringParam ? '' : true\n })\n\n // Create empty values in `this.state.badgeOptions` for each of the\n // standard badge options. When `this.props.initialStyle` has been\n // provided, use that as the initial style.\n const badgeOptions = {}\n supportedBadgeOptions.forEach(({ name }) => {\n if (name === 'style') {\n badgeOptions[name] = initialStyle\n } else {\n badgeOptions[name] = ''\n }\n })\n\n this.state = { queryParams, badgeOptions }\n }\n\n static getQueryString({ queryParams, badgeOptions }) {\n const outQuery = {}\n let isComplete = true\n\n Object.entries(queryParams).forEach(([name, value]) => {\n // As above, there are two types of supported params: strings and\n // booleans.\n const isStringParam = typeof value === 'string'\n if (isStringParam) {\n if (value) {\n outQuery[name] = value\n } else {\n // Skip empty params.\n isComplete = false\n }\n } else {\n // Generate empty query params for boolean parameters by translating\n // `{ compact_message: true }` to `?compact_message`. When values are\n // false, skip the param.\n if (value) {\n outQuery[name] = null\n }\n }\n })\n\n Object.entries(badgeOptions).forEach(([name, value]) => {\n const { shieldsDefaultValue } = getBadgeOption(name)\n if (value && value !== shieldsDefaultValue) {\n outQuery[name] = value\n }\n })\n\n const queryString = stringifyQueryString(outQuery)\n\n return { queryString, isComplete }\n }\n\n noteQueryStringChanged({ queryParams, badgeOptions }) {\n const { onChange } = this.props\n if (onChange) {\n const { queryString, isComplete } = this.constructor.getQueryString({\n queryParams,\n badgeOptions,\n })\n onChange({ queryString, isComplete })\n }\n }\n\n componentDidMount() {\n // Ensure the default style is applied right away.\n const { queryParams, badgeOptions } = this.state\n this.noteQueryStringChanged({ queryParams, badgeOptions })\n }\n\n handleServiceQueryParamChange = event => {\n const { name, type } = event.target\n const value =\n type === 'checkbox' ? event.target.checked : event.target.value\n const { queryParams: oldQueryParams, badgeOptions } = this.state\n\n const queryParams = {\n ...oldQueryParams,\n [name]: value,\n }\n\n this.setState({ queryParams })\n this.noteQueryStringChanged({ queryParams, badgeOptions })\n }\n\n handleBadgeOptionChange = event => {\n const { name, value } = event.target\n const { badgeOptions: oldBadgeOptions, queryParams } = this.state\n\n const badgeOptions = {\n ...oldBadgeOptions,\n [name]: value,\n }\n\n this.setState({ badgeOptions })\n this.noteQueryStringChanged({ queryParams, badgeOptions })\n }\n\n renderServiceQueryParam({ name, value, isStringParam, stringParamCount }) {\n const exampleValue = this.props.exampleParams[name]\n return (\n <tr key={name}>\n <td>\n <QueryParamLabel htmlFor={name}>\n {humanizeString(name).toLowerCase()}\n </QueryParamLabel>\n </td>\n <td>\n {isStringParam && (\n <QueryParamCaption>\n {stringParamCount === 0 ? `e.g. ${exampleValue}` : exampleValue}\n </QueryParamCaption>\n )}\n </td>\n <td>\n {isStringParam ? (\n <QueryParamInput\n checked={value}\n name={name}\n onChange={this.handleServiceQueryParamChange}\n type=\"text\"\n {...noAutocorrect}\n />\n ) : (\n <input\n checked={value}\n name={name}\n onChange={this.handleServiceQueryParamChange}\n type=\"checkbox\"\n />\n )}\n </td>\n </tr>\n )\n }\n\n renderBadgeOptionInput(name, value) {\n if (name === 'style') {\n return (\n <select\n name=\"style\"\n onChange={this.handleBadgeOptionChange}\n value={value}\n >\n {advertisedStyles.map(style => (\n <option key={style} value={style}>\n {style}\n </option>\n ))}\n </select>\n )\n } else {\n return (\n <QueryParamInput\n checked={value}\n name={name}\n onChange={this.handleBadgeOptionChange}\n type=\"text\"\n {...noAutocorrect}\n />\n )\n }\n }\n\n renderBadgeOption(name, value) {\n const {\n label = humanizeString(name),\n shieldsDefaultValue: hasShieldsDefaultValue,\n } = getBadgeOption(name)\n return (\n <tr key={name}>\n <td>\n <QueryParamLabel htmlFor={name}>{label}</QueryParamLabel>\n </td>\n <td>\n {!hasShieldsDefaultValue && (\n <QueryParamCaption>optional</QueryParamCaption>\n )}\n </td>\n <td>{this.renderBadgeOptionInput(name, value)}</td>\n </tr>\n )\n }\n\n render() {\n const { queryParams, badgeOptions } = this.state\n const hasQueryParams = Boolean(Object.keys(queryParams).length)\n let stringParamCount = 0\n return (\n <>\n {hasQueryParams && (\n <BuilderContainer>\n <table>\n <tbody>\n {Object.entries(queryParams).map(([name, value]) => {\n const isStringParam = typeof value === 'string'\n return this.renderServiceQueryParam({\n name,\n value,\n isStringParam,\n stringParamCount: isStringParam\n ? stringParamCount++\n : undefined,\n })\n })}\n </tbody>\n </table>\n </BuilderContainer>\n )}\n <BuilderContainer>\n <table>\n <tbody>\n {Object.entries(badgeOptions).map(([name, value]) =>\n this.renderBadgeOption(name, value)\n )}\n </tbody>\n </table>\n </BuilderContainer>\n </>\n )\n }\n}\nQueryStringBuilder.propTypes = {\n exampleParams: objectOfKeyValuesPropType,\n initialStyle: PropTypes.string,\n onChange: PropTypes.func,\n}\nQueryStringBuilder.defaultProps = {\n initialStyle: 'flat',\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport Select, { components } from 'react-select'\n\nconst ClickableControl = props => (\n <components.Control\n {...props}\n innerProps={{\n onMouseDown: props.selectProps.onControlMouseDown,\n }}\n />\n)\nClickableControl.propTypes = {\n selectProps: PropTypes.object.isRequired,\n}\n\nconst MarkupFormatSelect = styled(Select)`\n width: 200px;\n\n margin-left: auto;\n margin-right: auto;\n\n font-family: 'Lato', sans-serif;\n font-size: 12px;\n\n .markup-format__control {\n background-image: linear-gradient(-180deg, #00aeff 0%, #0076ff 100%);\n border: 1px solid rgba(238, 239, 241, 0.8);\n border-width: 0;\n box-shadow: unset;\n cursor: copy;\n }\n\n .markup-format__control--is-disabled {\n background: rgba(0, 118, 255, 0.3);\n cursor: none;\n }\n\n .markup-format__placeholder {\n color: #eeeff1;\n }\n\n .markup-format__indicator {\n color: rgba(238, 239, 241, 0.81);\n cursor: pointer;\n }\n\n .markup-format__indicator:hover {\n color: #eeeff1;\n }\n\n .markup-format__control--is-focused .markup-format__indicator,\n .markup-format__control--is-focused .markup-format__indicator:hover {\n color: #ffffff;\n }\n\n .markup-format__option {\n text-align: left;\n cursor: copy;\n }\n`\n\nconst markupOptions = [\n { value: 'markdown', label: 'Copy Markdown' },\n { value: 'rst', label: 'Copy reStructuredText' },\n { value: 'asciidoc', label: 'Copy AsciiDoc' },\n { value: 'html', label: 'Copy HTML' },\n]\n\nclass GetMarkupButton extends React.PureComponent {\n selectRef = React.createRef()\n\n onControlMouseDown = async event => {\n const { selectRef } = this\n const { onMarkupRequested } = this.props\n\n if (onMarkupRequested) {\n await onMarkupRequested('link')\n }\n selectRef.current.blur()\n }\n\n onOptionClick = async ({ value: markupFormat }) => {\n const { onMarkupRequested } = this.props\n if (onMarkupRequested) {\n await onMarkupRequested(markupFormat)\n }\n }\n\n render() {\n const { isDisabled } = this.props\n\n return (\n <MarkupFormatSelect\n blurInputOnSelect\n classNamePrefix=\"markup-format\"\n closeMenuOnScroll\n components={{\n Control: ClickableControl,\n }}\n isDisabled={isDisabled}\n isSearchable={false}\n menuPlacement=\"auto\"\n onChange={this.onOptionClick}\n onControlMouseDown={this.onControlMouseDown}\n options={markupOptions}\n placeholder=\"Copy Badge URL\"\n ref={this.selectRef}\n value=\"\"\n />\n )\n }\n}\nGetMarkupButton.propTypes = {\n onMarkupRequested: PropTypes.func.isRequired,\n isDisabled: PropTypes.bool,\n}\nexport default GetMarkupButton\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport posed from 'react-pose'\nimport styled from 'styled-components'\n\nconst ContentAnchor = styled.span`\n position: relative;\n display: inline-block;\n`\n\n// 100vw allows providing styled content which is wider than its container.\nconst ContentContainer = styled.span`\n width: 100vw;\n\n position: absolute;\n left: 50%;\n transform: translateX(-50%);\n\n will-change: opacity, top;\n\n pointer-events: none;\n`\n\nconst PosedContentContainer = posed(ContentContainer)({\n hidden: { opacity: 0, transition: { duration: 100 } },\n effectStart: { top: '-10px', opacity: 1.0, transition: { duration: 0 } },\n effectEnd: { top: '-75px', opacity: 0.5 },\n})\n\n// When `trigger()` is called, render copied content that floats up, then\n// disappears.\nexport default class CopiedContentIndicator extends React.Component {\n state = {\n pose: 'hidden',\n }\n\n trigger() {\n this.setState({ pose: 'effectStart' })\n }\n\n handlePoseComplete = () => {\n const { pose } = this.state\n if (pose === 'effectStart') {\n this.setState({ pose: 'effectEnd' })\n } else {\n this.setState({ pose: 'hidden' })\n }\n }\n\n render() {\n const { pose } = this.state\n return (\n <ContentAnchor>\n <PosedContentContainer\n onPoseComplete={this.handlePoseComplete}\n pose={pose}\n >\n {this.props.copiedContent}\n </PosedContentContainer>\n {this.props.children}\n </ContentAnchor>\n )\n }\n}\nCopiedContentIndicator.propTypes = {\n copiedContent: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n ]),\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n ]),\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport clipboardCopy from 'clipboard-copy'\nimport { staticBadgeUrl } from '../../../core/badge-urls/make-badge-url'\nimport { generateMarkup } from '../../lib/generate-image-markup'\nimport { objectOfKeyValuesPropType } from '../../lib/service-definitions/service-definition-prop-types'\nimport { Badge } from '../common'\nimport PathBuilder from './path-builder'\nimport QueryStringBuilder from './query-string-builder'\nimport RequestMarkupButtom from './request-markup-button'\nimport CopiedContentIndicator from './copied-content-indicator'\n\nexport default class Customizer extends React.Component {\n static propTypes = {\n baseUrl: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n pattern: PropTypes.string.isRequired,\n exampleNamedParams: objectOfKeyValuesPropType,\n exampleQueryParams: objectOfKeyValuesPropType,\n initialStyle: PropTypes.string,\n }\n\n indicatorRef = React.createRef()\n\n state = {\n path: '',\n link: '',\n message: undefined,\n }\n\n get baseUrl() {\n const { baseUrl } = this.props\n if (baseUrl) {\n return baseUrl\n } else {\n // Default to the current hostname for when there is no `BASE_URL` set\n // at build time (as in most PaaS deploys).\n const { protocol, hostname } = window.location\n return `${protocol}//${hostname}`\n }\n }\n\n generateBuiltBadgeUrl() {\n const { baseUrl } = this\n const { path, queryString } = this.state\n\n const suffix = queryString ? `?${queryString}` : ''\n return `${baseUrl}${path}.svg${suffix}`\n }\n\n renderLivePreview() {\n // There are some usability issues here. It would be better if the message\n // changed from a validation error to a loading message once the\n // parameters were filled in, and also switched back to loading when the\n // parameters changed.\n const { baseUrl } = this.props\n const { pathIsComplete } = this.state\n let src\n if (pathIsComplete) {\n src = this.generateBuiltBadgeUrl()\n } else {\n src = staticBadgeUrl({\n baseUrl,\n label: 'preview',\n message: 'some parameters missing',\n })\n }\n return (\n <p>\n <Badge display=\"block\" src={src} />\n </p>\n )\n }\n\n copyMarkup = async markupFormat => {\n const { title } = this.props\n const { link } = this.state\n\n const builtBadgeUrl = this.generateBuiltBadgeUrl()\n const markup = generateMarkup({\n badgeUrl: builtBadgeUrl,\n link,\n title,\n markupFormat,\n })\n\n try {\n await clipboardCopy(markup)\n } catch (e) {\n this.setState({\n message: 'Copy failed',\n markup,\n })\n return\n }\n\n this.setState({ markup })\n this.indicatorRef.current.trigger()\n }\n\n renderMarkupAndLivePreview() {\n const { indicatorRef } = this\n const { markup, message, pathIsComplete } = this.state\n\n return (\n <div>\n {this.renderLivePreview()}\n <CopiedContentIndicator copiedContent=\"Copied\" ref={indicatorRef}>\n <RequestMarkupButtom\n isDisabled={!pathIsComplete}\n onMarkupRequested={this.copyMarkup}\n />\n </CopiedContentIndicator>\n {message && (\n <div>\n <p>{message}</p>\n <p>Markup: {markup}</p>\n </div>\n )}\n </div>\n )\n }\n\n handlePathChange = ({ path, isComplete }) => {\n this.setState({ path, pathIsComplete: isComplete })\n }\n\n handleQueryStringChange = ({ queryString, isComplete }) => {\n this.setState({ queryString })\n }\n\n render() {\n const {\n pattern,\n exampleNamedParams,\n exampleQueryParams,\n initialStyle,\n } = this.props\n\n return (\n <form action=\"\">\n <PathBuilder\n exampleParams={exampleNamedParams}\n onChange={this.handlePathChange}\n pattern={pattern}\n />\n <QueryStringBuilder\n exampleParams={exampleQueryParams}\n initialStyle={initialStyle}\n onChange={this.handleQueryStringChange}\n />\n <div>{this.renderMarkupAndLivePreview()}</div>\n </form>\n )\n }\n}\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAABE0lEQVR4AWJkAIKkpCQ7TU3NySIiIlosQMCABejbMWAFf//8YXj77vWn27duZWVGz1nKGBYWZiQkJHSIkZGRmwEPCMxiwAt+/fz3/86VL8EAbuiiAKEoiMLwGcHdCQMBiUAlurDErmJ75tmKP8A3oiJyuF6vAxglws+0C5pv81GJaJdzhlWMMJssaaXM3C0CpmSDLAQtgH3BiCIVB2NRMKWEIoXQMBiLgjHGP9nQ+6ZPLgqGgs9xriDovX8A6Jjgw8ZyIigzn5xz+yZ+6O/tsz7Hy8tb/PLlywPAHMOFT/G3LwRc95fxPyerQCojuKwLDLQAGjoJWIzpAw1mw6bB0guHSYyMDBysnO/5hUTTGvM3rQEAI8qCnLiY3O4AAAAASUVORK5CYII=\"","// Given a patternToRegex `pattern` with multiple-choice options like\n// `foo|bar|baz`, return an array with the options. If it can't be described\n// as multiple-choice options, return `undefined`.\nconst basicChars = /^[A-za-z0-9-]+$/\nfunction patternToOptions(pattern) {\n const split = pattern.split('|')\n if (split.some(part => !part.match(basicChars))) {\n return undefined\n } else {\n return split\n }\n}\n\nmodule.exports = { patternToOptions }\n"],"sourceRoot":""}